> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appcharge.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Offers Loaded

An event triggered when the backend successfully returns the list of offers configured to be shown to the player.

This event confirms that the offers are ready to be rendered on the page.

**Event Data**

<ResponseField name="eventName" type="string">
  Event name: `webstore.offers.loaded`.
</ResponseField>

<ResponseField name="eventId" type="string">
  Event ID. Use this ID to deduplicate re-delivered events.
</ResponseField>

<ResponseField name="timestamp" type="number">
  Event timestamp in [Epoch time](https://www.epoch101.com/), represented in milliseconds. Example: `1754307361396`.
</ResponseField>

<ResponseField name="sessionId" type="string">
  The [session ID](/../../api-reference/events/v2/introduction#session-id) of the player’s current session. Example: `345397c6-d963-4aa4-a0ba-2aaca6c3ee05`.
</ResponseField>

<ResponseField name="requestId" type="string">
  ID assigned by Appcharge to each request sent to the publisher. Helps the publisher identify and debug failed requests.
</ResponseField>

<ResponseField name="result" type="string">
  Event result. Supported values: `success`, `failed`.
</ResponseField>

<ResponseField name="reason" type="string">
  Reason for the event result. Example: `invalid_credentials`.
</ResponseField>

<ResponseField name="attributes" type="map<any,any>">
  A key-value map used to label events for tracking personas or tests. Example: `{ "persona":"non_payer", "blackFridayTest":"Base_group" }`
</ResponseField>

<ResponseField name="customer" type="object">
  Information about the player.

  <Expandable title="properties">
    <ResponseField name="id" type="string">
      Player ID.
    </ResponseField>

    <ResponseField name="email" type="string">
      **Deprecated.** Player email address.
    </ResponseField>

    <ResponseField name="name" type="string">
      **Deprecated.** Reserved for the player's name in future versions.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="offers" type="[object]">
  List of offers.

  <Expandable title="properties">
    <ResponseField name="externalId" type="string">
      External ID of the offer as configured in the Publisher Dashboard.
    </ResponseField>

    <ResponseField name="type" type="string">
      Offer type.
    </ResponseField>

    <ResponseField name="subType" type="string">
      Offer subtype.
    </ResponseField>

    <ResponseField name="name" type="string">
      Offer name.
    </ResponseField>

    <ResponseField name="offerIndex" type="number">
      Position of the sub-offer that is currently available for collection within the Rolling Offer flow.
    </ResponseField>

    <ResponseField name="indexToCollect" type="number">
      Position of the next sub-offer that can be collected in the Rolling Offer flow.
    </ResponseField>

    <ResponseField name="tab" type="string">
      The name of the tab in the Publisher Dashboard.
    </ResponseField>

    <ResponseField name="pricePoint" type="number">
      Price point of the offer in USD cents.
    </ResponseField>

    <ResponseField name="price" type="number">
      Price in lowest currency unit. For example, cents for USD, and whole yen for JPY. For a list of of supported currencies, their minor unit types, and applicable pricing limitations, see [Supported Currencies](/../../merchant-of-record/finance/supported-currencies#supported-currencies).
    </ResponseField>

    <ResponseField name="currencyCode" type="string">
      Currency code of the offer in [ISO\_4217](https://en.wikipedia.org/wiki/ISO_4217) format.
    </ResponseField>

    <ResponseField name="products" type="[object]">
      List of products in an offer.

      <Expandable title="properties">
        <ResponseField name="displayName" type="string">
          Display name of the product.
        </ResponseField>

        <ResponseField name="productExternalId" type="string">
          External ID of the product as configured in the Publisher Dashboard.
        </ResponseField>

        <ResponseField name="productQuantity" type="string">
          The quantity of the product. Must be a minimum 0 and equal to or less than 24 digits long.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="progressBars" type="[object]">
  List of Progress Bars.

  <Expandable title="properties">
    <ResponseField name="progressBarExternalId" type="string">
      Progress Bar external ID.
    </ResponseField>

    <ResponseField name="missionIndex" type="integer">
      Current mission index.
    </ResponseField>

    <ResponseField name="points" type="integer">
      Number of points the player has earned so far in the current mission.
    </ResponseField>

    <ResponseField name="products" type="[object]">
      List of products in the Progress Bar.

      <Expandable title="properties">
        <ResponseField name="productExternalId" type="string">
          Product external ID.
        </ResponseField>

        <ResponseField name="productQuantity" type="string">
          Product quantity.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="pointsTarget" type="integer">
      Total number of points required to complete the current mission.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="device" type="object">
  Information about the player's device.

  <Expandable title="properties">
    <ResponseField name="platform" type="string">
      Device platform. Example: `iOS`.
    </ResponseField>

    <ResponseField name="deviceModel" type="string">
      Device model. Example: `iPhone 16 Pro`.
    </ResponseField>

    <ResponseField name="osType" type="string">
      Operating system type. Example: `Android`.
    </ResponseField>

    <ResponseField name="osVersion" type="string">
      Operating system version. Example: `18`.
    </ResponseField>

    <ResponseField name="browserType" type="string">
      Browser type. Example: `Google Chrome`.
    </ResponseField>

    <ResponseField name="browserVersion" type="string">
      Browser version. Example: `138`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="geolocation" type="object">
  Information about the player's geolocation.

  <Expandable title="properties">
    <ResponseField name="countryCode2" type="enum">
      Two-letter country code in [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. Example: `US`
    </ResponseField>

    <ResponseField name="region" type="string">
      **Deprecated.** Region or state.
    </ResponseField>

    <ResponseField name="ipAddress" type="string">
      **Deprecated.** IP address in [IPv4](https://en.wikipedia.org/wiki/IPv4) format. Example: `80.178.249.122`.
    </ResponseField>

    <ResponseField name="zipCode" type="string">
      **Deprecated.** Zip code.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="sessionMetadata" type="any">
  Session metadata for passing data to Appcharge to be returned later.
</ResponseField>

<ResponseExample>
  ```json Event Payload theme={"system"}
  {
    "eventName": "webstore.offers.loaded",
    "eventId": "3f5bffbc-369e-4599-8c4d-abfe0ae0ef96",
    "timestamp": 1754307361396,
    "sessionId": "345397c6-d963-4aa4-a0ba-2aaca6c3ee05",
    "requestId": "23539478-c744-566a-c78c-c4cc7763ff62",
    "result": "success",
    "reason": "invalid_credentials",
    "attributes": {
      "persona": "non_payer",
      "blackFridayTest": "Base_group"
    },
    "customer": {
      "id": "671e81bb-55ef-428b-97ba-f67783971e0d",
      "name": null,
      "email": null
    },
    "offers": [
      {
        "externalId": "22ae81bb-55ef-428b-97ba-f67783971e4a",
        "type": "SpecialOffer",
        "subType": null,
        "name": "Spring Is Here",
        "offerIndex": 1,
        "indexToCollect": 1,
        "tab": "Knight Guard",
        "pricePoint": 800,
        "price": 800,
        "currencyCode": "USD",
        "products": [
          {
            "displayName": "Gold Coins",
            "productExternalId": "31ae81bb-55ef-428b-97ba-f67783971e553",
            "productQuantity": "1000"
          },
          {
            "displayName": "Silver Shield",
            "productExternalId": "9af1abb-55ef-428b-97ba-f677839716ac9",
            "productQuantity": "40"
          }
        ]
      }
    ],
    "progressBars": [
      {
        "progressBarExternalId": "my-progress-bar-1",
        "missionIndex": 2,
        "points": 100,
        "products": [
          {
            "productExternalId": "treasure-12",
            "productQuantity": "200"
          }
        ],
        "pointsTarget": 500
      }
    ],
    "device": {
      "platform": "iOS",
      "deviceModel": "iPhone 16 Pro",
      "osType": "Apple",
      "osVersion": "18",
      "browserType": "Google Chrome",
      "browserVersion": "138"
    },
    "geolocation": {
      "countryCode2": "US",
      "region": null,
      "ipAddress": null,
      "zipCode": null
    },
    "sessionMetadata": { "abTest": "group1", "locale": "en-US" }
  }
  ```
</ResponseExample>
