Handle `offer-` SKUs in `item.add` purchase events

Last updated: July 1, 2026

Handle offer- SKUs in item.add purchase events

Some store purchases may be delivered as a single item whose SKU starts with offer- rather than as a bundle. Integrations that process purchase analytics or entitlement delivery should support this case explicitly.

Expected handling

  • Treat any single purchased item with an SKU starting with offer- as a valid in-game store purchase.
  • Do not require such purchases to use item type bundle.
  • If at least one item in event_data.items has an SKU starting with offer-, the webhook payload must contain exactly one item in that array.

Validation rule

When processing an item.add event:

  1. Inspect event_data.items.
  2. If no item SKU starts with offer-, process the payload normally.
  3. If any item SKU starts with offer-, accept the event only when event_data.items.length === 1.
  4. If an offer- item appears together with additional items in the same item.add payload, treat it as an integration error and log it for investigation.

Why this rule exists

A single purchase can contain multiple delivered items, which makes analytics attribution ambiguous when trying to attach purchase analytics to one specific item. Restricting offer- purchases to a single delivered item removes that ambiguity while still allowing these SKUs to be sold without forcing them to be modeled as bundles.

Notes

  • This is an integration-side handling rule for webhook processing.
  • It is intended for purchases from the in-game store delivered through item.add.
  • Automatic refund behavior for declined deliveries is a separate configuration topic and is not required for this handling rule.