Connect a webhook in Integrations and every event on the account POSTs to your URL the moment it happens — sales, refunds, upsells, cancellations, payouts. No polling.
One HTTP POST per event. The body is JSON, the event name is repeated in the x-swipefast-event header, and every payload carries event and sentAt. Return any 2xx to acknowledge. Every attempt — delivered or failed — is visible in your Recent activity log.
POST https://your-endpoint.example/hook
Content-Type: application/json
x-swipefast-event: order.paid
{ "event": "order.paid", "orderId": "ord_x1y2z3", …, "sentAt": "2026-07-20T14:03:24.001Z" }Sale completed
A checkout settles — including held orders once the buyer decides on the upsell.
{
"event": "order.paid",
"orderId": "ord_x1y2z3",
"product": "The Launch Playbook",
"productId": "prd_a1b2c3",
"email": "buyer@example.com",
"totalCents": 12600,
"affiliate": "ryanh",
"accessUrl": "https://your-course.com/access",
"supportEmail": "help@you.com",
"sentAt": "2026-07-20T14:03:24.001Z"
}Order refunded
You refund an order. Any subscription born from it is cancelled, and its commission is voided.
{
"event": "order.refunded",
"orderId": "ord_x1y2z3",
"product": "The Launch Playbook",
"email": "buyer@example.com",
"totalCents": 12600,
"sentAt": "2026-07-21T09:12:00.410Z"
}Upsell taken
A buyer says yes to the post-purchase upsell.
{
"event": "upsell.accepted",
"orderId": "ord_x1y2z3",
"upsell": "Upgrade to the full implementation call",
"amountCents": 20000,
"email": "buyer@example.com",
"sentAt": "2026-07-20T14:04:01.812Z"
}Renewal collected
A subscription's renewal charge went through.
{
"event": "subscription.rebilled",
"subscriptionId": "sub_m4k3r",
"product": "Maker Club Membership",
"email": "member@example.com",
"amountCents": 4900,
"sentAt": "2026-08-21T09:00:04.120Z"
}Renewal failed
A renewal charge was declined. Swipefast retries in 3 days; after 4 failed tries the subscription cancels.
{
"event": "subscription.payment_failed",
"subscriptionId": "sub_m4k3r",
"product": "Maker Club Membership",
"email": "member@example.com",
"amountCents": 4900,
"attempt": 1,
"nextTryDays": 3,
"sentAt": "2026-08-21T09:00:04.560Z"
}Subscription cancelled
You cancel a subscription. `subscription.paused` and `subscription.resumed` fire the same shape for those actions.
{
"event": "subscription.canceled",
"subscriptionId": "sub_m4k3r",
"product": "Maker Club Membership",
"email": "member@example.com",
"mrrCents": 4900,
"sentAt": "2026-07-21T10:00:12.230Z"
}Partner paid
You record a commission payout to a partner.
{
"event": "affiliate.paid",
"affiliate": "ryanh",
"name": "Ryan H",
"email": "ryan@example.com",
"amountCents": 12000,
"commissionCount": 3,
"payoutId": "pay_9f8e7d",
"sentAt": "2026-07-21T11:30:00.000Z"
}Email handed over
A seller pushes their post-purchase emails to your tool — one event per email.
{
"event": "funnel.email.sync",
"productId": "prd_a1b2c3",
"productSlug": "launch-playbook",
"product": "The Launch Playbook",
"position": 1,
"sendDay": 0,
"subject": "You're in — here's your access",
"body": "…full email body…",
"sentAt": "2026-07-19T16:21:00.551Z"
}Point a webhook at a request bin (webhook.site or similar), switch on test mode in Settings, and buy through your own checkout. You’ll see the full event stream for a real purchase without charging anyone — the order is tagged as a rehearsal and stays out of your numbers.