Daily Bonus: Reporting and Player Interaction

Reporting

How Do I Report the Free Bonus?

Player Order Reporting

When a player makes a purchase, Appcharge processes the transaction in real time. After the player is charged, Appcharge sends an update to the publisher with all the transaction details using a predefined webhook.

The webhook update sent to the publisher will include the following transaction details:

  • Store Name: The name of the store where the purchase was made.
  • Price: The amount charged for the purchase.
  • Date: The date when the purchase was made.
  • Order ID: The unique identifier for the order.
  • Player ID: The unique identifier for the player.
  • Transaction ID: The unique identifier for the transaction.
  • Status: The current status of the transaction.

For all free orders, all financial information is zeroed (set to 0)

How Do I See the Free Orders Report?

Dashboard Free Orders Area

Navigation: Dashboard → Orders → Free Orders

Here, you can view a table with all the free orders related to free bonuses.

  • Date and Time (UTC): Timestamp when the bonus was awarded.
  • Type: Type of the offer (e.g., bundle, gallery offer, popup).
  • Sub-type: Subtype of the offer (e.g., bonus, rolling offer).
  • Name: Name of the specific offer.
  • Product Sequence: Sequence of products that were part of the offer.
  • Price: For the first phase, this will display as 'free'.
  • Player ID: Identifier for the player who received the bonus.
  • External Transaction ID: External identifier for the transaction.
  • Status:
    • Succeeded: Awarding process completed successfully.
    • Failed: Awarding process failed.

Detailed Order View

Navigation: Dashboard → Orders → Free Orders → Three Dot Menu → View

Clicking 'View' will open a detailed screen with the following fields:

  • Price: For the first phase, this will display as 'free'.
  • Date (UTC): Timestamp of the order.
  • Order ID: Internal ID of the order.
  • Player ID: Identifier for the player who received the bonus.
  • Order External ID: External identifier for the order.
  • Offer Name: Name of the offer.
  • Offer External ID: External identifier for the offer.
  • Product Sequence: Sequence of products included in the order.
  • Products: List of products collected as part of the order, including:
    • Name: Name of the product.
    • External ID: External identifier for the product.
    • Amount: Quantity of the product.
  • History: Timeline of events related to the order, including:
    • Date: Timestamp of the event.
    • Status: Current status (Succeeded/Failed).
    • Event: Description of the event (Succeeded/Failed).
      • If failed, Failure Reason.

Reporting API

To access free order reports via the Reporting API, use the following endpoint:

Endpoint: /reporting/reports/orders

Method: POST

Parameters:

  • startDate (string): The start date for the report (YYYY-MM-DD).
  • endDate (string): The end date for the report (YYYY-MM-DD).
  • recordLimit (int): Amount of orders to retrieve (min 1, max 100) (mandatory).
  • offset (int): Offset value for pagination (min 0) (mandatory).
  • status (array): Filter by order status (mandatory).
    • export enum Status { CREATED = 'created', PAYMENT_PENDING = 'payment_pending', PAYMENT_SUCCEED = 'payment_succeed' /_ unused \_/, PAYMENT_FAILED = 'payment_failed', PAYMENT_REFUND_PENDING = 'payment_refund_pending', PAYMENT_REFUND_REQUIRES_ACTION = 'payment_refund_requires_action', PAYMENT_REFUNDED = 'payment_refunded', PAYMENT_REFUND_FAILED = 'payment_refund_failed', PAYMENT_REFUND_CANCELED = 'payment_refund_canceled', PAYMENT_CANCELED = 'payment_canceled', CHARGE_PENDING = 'charge_pending', CHARGE_SUCCEED = 'charge_succeed', CHARGE_FAILED = 'charge_failed', PAYMENT_DISPUTE_OPEN = 'payment_dispute_open', PAYMENT_DISPUTE_LOST = 'payment_dispute_lost', PAYMENT_DISPUTE_WON = 'payment_dispute_won', PAYMENT_DISPUTE_EVIDENCE_SUBMITTED = 'payment_dispute_evidence_submitted', PAYMENT_DISPUTE_INQUIRY_OPEN = 'payment_dispute_inquiry_open', PAYMENT_DISPUTE_INQUIRY_EVIDENCE_SUBMITTED = 'payment_dispute_inquiry_evidence_submitted', PAYMENT_DISPUTE_INQUIRY_WON = 'payment_dispute_inquiry_won',
  • isFree (boolean): Optional parameter to filter by free orders (default is false).

Important: Ensure that the start date is not later than the end date.

This API endpoint will retrieve details of free orders, including both pop-ups and promotions. For distinguishing between these types, refer to the free orders section in the dashboard as explained above.

Player Side Interaction

How Will the Bonus Be Collected in the Game Store?

When the player enters the store, there are three scenarios for presenting the free bonus popup:

Scenario 1. Bonus Collected by the Player in the Last Day:

  • The popup won’t be presented.

Scenario 2. Player Clicked on ‘X’:

  • The popup won’t be presented.

Scenario 3. Player Didn’t Collect the Bonus for the Last Day:

  • The free bonus will be presented as a popup.

If Another Popup Should Be Presented at the Same Time

  • Present popups one after another (Clicking on ‘X’ or collect will close the current popup and open the next).
  • Present the popup with the lowest priority value (e.g., 1) first.
  • Popups with no value will be presented last.
  • If multiple popups have the same priority value, prioritize them randomly.

Troubleshooting

  • Ensure there is no deduplication in case of a refresh in the middle of the process.

Priority Parameter

  • The priority is relevant for all offers, including bundles and special offers.
  • The offer with the lowest value priority will be presented first.
  • Offers with no priority or offers with the same priority will be sub-ordered by price.

What Happens After Player Collects Free Bonus?

Player Enters Store:

  • Popup is presented.ֿ

Clicks “Collect” Button:

  • A loader will appear, and a balance update will be sent to the publisher.

If the Award was Successful:

  • The player will see a collect animation.
  • The popup will be closed.
  • A confetti animation will be played.
  • A confirmation toast will appear.
  • A balance update will be sent to the publisher.
  • The next prize will be revealed along with a countdown timer.

If the Award Failed:

  • An error popup will be presented to the player instead of the free bonus.
    The page will refresh and the bonus will be reloaded. (Check your server)