Skip to main content
Question

There are inconsistencies in the webhooks documentation.

  • June 10, 2026
  • 3 replies
  • 156 views

Forum|alt.badge.img

Inconsistencies in Webhooks documentation

There appear to be several discrepancies between the descriptions in the following two documentation pages:

The following JSON fields listed in the "Sample Event" example are missing from the "Event Types and Fields" documentation:

Could you please clarify which documentation—whether the Sample Page or the Event Types and Fields section—contains the correct information?
 

3 replies

dmatthews-rc
  • New Member
  • June 10, 2026

Hi penguinlab!
 
Thanks for pointing that out. It does appear that our docs are missing some attiributes. I will investigate and update the docs. In the meantime, please let me know if that are any attributes that you need to know about right away and I can prioritize getting a correct description for those.
 
Have a great day!
Debbie


Forum|alt.badge.img
  • Author
  • New Member
  • June 15, 2026

Hi Debbie.
Thank you for your reply.

Please let me know when the document has been investigate and updated.
We're working on implementing a webhook request parser and would like more precise information.

I'd like to know in advance.
I understand that the mapping between Event Types and JSON Fields is as follows: Is this correct?

Event Type JSON Fields
TEST

Common Fields

INITIAL_PURCHASE Common Fields + Subscription Lifecycle Events Fields
RENEWAL Common Fields + Subscription Lifecycle Events Fields
CANCELLATION Common Fields + Subscription Lifecycle Events Fields
UNCANCELLATION Common Fields + Subscription Lifecycle Events Fields
NON_RENEWING_PURCHASE Common Fields + Subscription Lifecycle Events Fields
SUBSCRIPTION_PAUSED Common Fields + Subscription Lifecycle Events Fields
EXPIRATION Common Fields + Subscription Lifecycle Events Fields
BILLING_ISSUE Common Fields + Subscription Lifecycle Events Fields
PRODUCT_CHANGE Common Fields + Subscription Lifecycle Events Fields
TRANSFER Common Fields + Subscription Lifecycle Events Fields
SUBSCRIPTION_EXTENDED Common Fields + Subscription Lifecycle Events Fields
TEMPORARY_ENTITLEMENT_GRANT Common Fields + Subscription Lifecycle Events Fields
REFUND_REVERSED Common Fields + Subscription Lifecycle Events Fields
INVOICE_ISSUANCE Common Fields + Subscription Lifecycle Events Fields
VIRTUAL_CURRENCY_TRANSACTION Common Fields + Virtual Currency Transaction Fields
EXPERIMENT_ENROLLMENT Common Fields + Experiment Enrollment Event Fields
PURCHASE_REDEEMED Common Fields + Purchase Redemption Event Fields

 


dmatthews-rc

Hi penguinlab,
 
Thanks for the detailed mapping — that’s a solid way to read the current docs. I’ve reviewed the event fields against our backend and opened a PR to update the reference. Here’s a preview of what to expect:
 
New event types

  • SUBSCRIBER_ALIAS (deprecated)
  • PRICE_INCREASE_CONSENT_REQUIRED and PRICE_INCREASE_CONSENT_APPROVED — Common fields, plus product_idtransaction_idoriginal_transaction_id, and optionally storeenvironmentcurrency, and country_code

Subscription lifecycle fields (added to the docs)

  • metadata — developer-defined metadata for Web Billing transactions
  • discount_percentagediscount_amountdiscount_identifier — only on INITIAL_PURCHASERENEWAL, and NON_RENEWING_PURCHASE
  • quantity — only on NON_RENEWING_PURCHASE, and only for some projects

PURCHASE_REDEEMED

  • store and environment will be documented.

VIRTUAL_CURRENCY_TRANSACTION

  • country_code isn’t part of this webhook; it will be removed from the sample.
  • updated_balance will be added to the field reference.

EXPERIMENT_ENROLLMENT

  • experiment_enrolled_at_ms is the correct field name (enrolled_at_ms was wrong in the old docs). Note: enrolled_at_ms is still correct inside the experiments[] array on purchase events.

TEMPORARY_ENTITLEMENT_GRANT

  • This event has fewer fields than the old docs implied. Beyond the common fields, store may be present. It doesn't include the full subscription lifecycle field set.

 
Let me know if anything else comes up while you build the parser.
 
Cheers,
Debbie