Webhooks let Pocketsflow notify your systems in real time when something happens in your account — a sale completes, a subscription changes, a refund is issued, and more.
When you register a webhook endpoint, you choose which of the events below you want delivered.
Every delivery is an HTTP POST with a JSON body and the following headers:
| Header | Description |
|---|
X-Pocketsflow-Event | The event type (for example, order.completed). |
X-Pocketsflow-Signature | An HMAC-SHA256 signature of the payload, used to verify authenticity. |
X-Pocketsflow-Timestamp | When the event was sent. |
Always verify the X-Pocketsflow-Signature before trusting a payload — see Authentication & security.
Each event is delivered with a single attempt and a 5-second timeout. Make your endpoint fast (acknowledge with a 2xx immediately and process asynchronously), and reconcile periodically via the API in case a delivery is missed.
Order events
| Event | When it fires |
|---|
order.completed | A payment succeeded and the order is complete. |
order.refunded | An order was refunded (fully or partially). |
Use these to fulfil purchases, grant access, sync your CRM, or trigger onboarding emails.
Subscription events
| Event | When it fires |
|---|
customer.subscription.created | A buyer started a new subscription. |
customer.subscription.updated | A subscription’s plan or status changed. |
customer.subscription.deleted | A subscription was cancelled/ended. |
customer.subscription.pause | A subscription was paused. |
customer.subscription.resumed | A paused subscription resumed. |
customer.subscription.trial_will_end | A free trial is about to end. |
Use these to grant or revoke access to communities, courses, or external tools, and to send lifecycle emails.
Invoice events
| Event | When it fires |
|---|
invoice.created | A new invoice was generated. |
invoice.upcoming | A recurring invoice is coming up. |
invoice.paid | An invoice was paid. |
invoice.payment_succeeded | An invoice payment succeeded. |
invoice.payment_failed | An invoice payment failed (e.g. card declined). |
Payment events
| Event | When it fires |
|---|
payment_intent.succeeded | A payment was confirmed. |
payment_intent.payment_failed | A payment attempt failed. |
Product events
| Event | When it fires |
|---|
product.created | A new product was created. |
product.updated | A product was modified. |
product.deleted | A product was deleted. |
Customer & review events
| Event | When it fires |
|---|
customer.created | A new buyer/customer record was created — including automatically on every completed sale (Stripe and Whop), as well as when you create a customer via the API. |
review.created | A buyer left a review. |
On a sale, customer.created is delivered alongside order.completed. Its payload
contains the new customer (id, email, firstName, lastName, country) plus
the related product, order, and any metadata. Subscribe to it to sync new buyers
into your CRM the moment they purchase.