Commerce webhooks use the flat sanitized payload (api_version: "2026-08-17"). Deduplicate on v2 event_id (v1 uses _id / id). Money is integer cents (84900 = $849.00).
A renewal must never be attributed as a new purchase — see first_purchase on Ecommerce Order Paid and Subscription Renewed.
| Event | Funnel meaning |
|---|---|
| Ecommerce Order Paid | Checkout (or renewal order) payment collected. Use first_purchase to distinguish a new sale. |
| Subscription Renewed | Recurring charge — not a new purchase. Always first_purchase: false. |
| Subscription Payment Failed | Renewal payment attempt failed. |
| Subscription Cancelled | Subscription moved to pending-cancel. |
| Subscription Paused | Subscription placed on hold. |
| Ecommerce Order Refunded | Refund processed. |
| Post-Purchase Disqualification Processed | Paid order unwound after a disqualifying intake answer. |
Attribution (including optional landing_url / referrer_url) is documented in Attribution Passthrough.
