Skip to main content
purchase.new is the deprecated flat event for a user buying a paid item from a creator. It requires the read:creator scope, and new integrations use creator.payment.succeeded instead, where source is post, message or media.
Don’t build new integrations on purchase.new. It keeps firing during the migration window, after which only creator.payment.succeeded is delivered. Subscribe to creator.payment.succeeded and move existing consumers before the window closes.

When this fires

purchase.new fires when a user buys a paid item from a creator. An item is one of:
  • a paid post, the payload carries postUuid
  • a locked (PPV) message, the payload carries routeUuid
  • a checkout-link product, neither postUuid nor routeUuid is present
  • a fan experience, the payload carries experienceUuid and experienceAppUuid
Amounts are in minor units (for USD, cents). purchase.new has no refund or dispute counterpart. On-platform refunds and disputes are delivered by the creator.refund.created and creator.dispute.* events, and checkout-link payments use checkout_link.refund.created.

Payload

The experience fields are scoped to the app that owns the experience. The rest of the payload fans out to every app holding the required scope for that creator. experienceUuid and experienceAppUuid reach only the owning app and the creator’s own connector destinations. Every other consenting app receives the same purchase without them, so a creator-wide fan-out cannot tell app A which experience of app B a fan just bought.

Example payloads

Post purchase

Message purchase

Fan experience purchase

A one-off purchase of a paid fan experience. Recurring subscription charges for an experience don’t fire purchase.new; see Creator experience subscription events for the access lifecycle and for how to reconcile recurring revenue. Payments inside experiences describes the money flow on the app side.
A purchase of an off-platform checkout-link product fires purchase.new with neither postUuid nor routeUuid. For link-level detail (product, billing reason) subscribe to checkout_link.payment.succeeded.