Payment Events
Available webhook events and their payloads for payment processing.
Event Structure
All webhook events follow this structure:
interface WebhookEvent<T> {
meta: {
occured_at: string; // ISO 8601 timestamp when event occurred
event_type: string; // Event type (e.g., "subscription.created")
event_id: string; // Unique event identifier (format: zelwhk_timestamp_random)
};
data: T; // Event-specific payload
}
Event Payloads
All payment events use the same normalized payload structure regardless of payment provider.
subscription.created or subscription.updated
{
"meta": {
"occured_at": "2024-01-01T12:00:00.000Z",
"event_type": "subscription.created",
"event_id": "zelwhk_abc123_def456"
},
"data": {
"id": 123,
"collectionMode": "automatic",
"email": "[email protected]",
"organizationId": "org_abc123",
"canceledAt": null,
"nextBilledAt": "2024-02-01T12:00:00.000Z",
"pausedAt": null,
"status": "active",
"externalId": "sub_paddle123",
"sandbox": false,
"externalCustomerId": "cus_paddle456",
"items": [
{
"productId": 1,
"unitPrice": 2999,
"currency": "USD",
"planName": "Pro Plan",
"externalPriceId": "pri_abc123",
"externalProductId": "pro_def456",
"quantity": 1
}
],
"customer": {
"id": "cus_internal_789",
"externalId": "cus_paddle456",
"email": "[email protected]"
},
"answers": [
{
"answerData": { "value": 2 },
"questionId": "6fef36cb-0823-41fd-8774-2d4f5d0a542c",
"questionText": "",
"conversionType": "answer.number"
},
{
"answerData": { "values": ["qqqq", "qwe"] },
"questionId": "b5d4170c-101b-42af-b2db-dd173f3b043c",
"questionText": "",
"conversionType": "answer.text"
},
{
"answerId": "2",
"answerText": "Bronze",
"questionId": "4b88b9b2-9851-4e02-b9fc-9276e021f283",
"questionText": "What is your rank?",
"conversionType": "answer.single_choice"
},
{
"answerData": {
"answers": [
{ "answerId": "2", "answerText": "Bronze" },
{ "answerId": "3", "answerText": "Silver" }
]
},
"questionId": "84bb36fd-5034-4737-8ef6-5b6ee1325d39",
"questionText": "",
"conversionType": "answer.multiple_choice"
},
{
"answerData": { "value": "[email protected]" },
"questionId": "block-1753871709006-f4j7u0td2",
"questionText": "",
"conversionType": "answer.text"
},
{
"answerData": { "value": "q" },
"questionId": "c8323dd0-855c-4b2f-89c6-c1876e7acb5c",
"questionText": "",
"conversionType": "answer.text"
}
],
"fbp": "fb.1.1234567890123.987654321",
"fbc": "fb.1.1678930714977.AbCdEfGhIjKlMnOpQrStUvWxYz"
}
}
transaction.created or transaction.updated
{
"meta": {
"occured_at": "2024-01-01T12:00:00.000Z",
"event_type": "transaction.created",
"event_id": "zelwhk_xyz789_ghi012"
},
"data": {
"id": 456,
"billedAt": "2024-01-01T12:00:00.000Z",
"externalId": "txn_paddle789",
"subscriptionId": 123,
"sandbox": false,
"trackingSessionId": "sess_abc123",
"productPriceAmount": 2999,
"revisedAt": "2024-01-01T12:00:00.000Z",
"status": "paid",
"paymentMethodType": "card",
"paymentMethodDetails": { "brand": "visa", "last4": "4242" },
"totalAmountPaid": 2999,
"paidCurrency": "USD",
"totalAmount": 2999,
"baseCurrency": "USD",
"paymentProvider": "paddle",
"customer": {
"id": "cus_internal_789",
"externalId": "cus_paddle456",
"email": "[email protected]"
},
"answers": [
{
"answerData": { "value": 2 },
"questionId": "6fef36cb-0823-41fd-8774-2d4f5d0a542c",
"questionText": "",
"conversionType": "answer.number"
},
{
"answerData": { "values": ["qqqq", "qwe"] },
"questionId": "b5d4170c-101b-42af-b2db-dd173f3b043c",
"questionText": "",
"conversionType": "answer.text"
},
{
"answerId": "2",
"answerText": "Bronze",
"questionId": "4b88b9b2-9851-4e02-b9fc-9276e021f283",
"questionText": "What is your rank?",
"conversionType": "answer.single_choice"
},
{
"answerData": {
"answers": [
{ "answerId": "2", "answerText": "Bronze" },
{ "answerId": "3", "answerText": "Silver" }
]
},
"questionId": "84bb36fd-5034-4737-8ef6-5b6ee1325d39",
"questionText": "",
"conversionType": "answer.multiple_choice"
},
{
"answerData": { "value": "[email protected]" },
"questionId": "block-1753871709006-f4j7u0td2",
"questionText": "",
"conversionType": "answer.text"
},
{
"answerData": { "value": "q" },
"questionId": "c8323dd0-855c-4b2f-89c6-c1876e7acb5c",
"questionText": "",
"conversionType": "answer.text"
}
],
"fbp": "fb.1.1234567890123.987654321",
"fbc": "fb.1.1678930714977.AbCdEfGhIjKlMnOpQrStUvWxYz"
}
}
Facebook Pixel Tracking Data: fbp and fbc
fbp (Facebook browser cookie): Cookie value representing a unique browser/device identifier for attribution.
fbc (Facebook Click ID): URL parameter captured on initial ad click and stored in a first-party cookie to identify the ad click.
Both values are included in event payloads when available, enabling accurate Facebook Ads conversion tracking and attribution.
Available Event Types
All event types you can receive (same for Paddle and Stripe):
subscription.created
New subscription created
subscription.updated
Subscription details changed
transaction.created
New transaction recorded
transaction.updated
Transaction status changed
Event Delivery
If your endpoint fails to respond with a 2xx status code, we retry with a dynamic backoff schedule up to 60 attempts:
Attempts 1–20: every 3 minutes
Attempts 21–47: every 30 minutes
Attempts 48–60: every 2 hours
While events are generally delivered in order, you should:
Use event timestamps for ordering
Handle out-of-order events gracefully
Implement idempotency checks
Capturing User Input from Web Funnel
Our system captures user responses from interactive input components in the funnel. These answers are included in the event payload under an answers
array. This allows you to associate payment or subscription events with the exact answers given by users during the funnel.
Example Payload with User Input Answers
{
"meta": {
"occured_at": "2025-08-09T06:49:11.140Z",
"event_type": "transaction.updated",
"event_id": "zelwhk_me3w9h5d_41590fd8"
},
"data": {
"id": 935,
"billedAt": null,
"externalId": "in_1Ru6aQ4KHmBrVrd3rOjiBPNi",
"subscriptionId": 952,
"trackingSessionId": "tr_eeqg5lxv-0_0d136d86a405fc9386e4520ec004120583f420afe2f2d28bdefe094132dcc62c",
"productPriceAmount": 100,
"revisedAt": null,
"status": "paid",
"paymentMethodType": "card",
"paymentMethodDetails": {
"type": "card",
"card": { "brand": "visa", "last4": "4242", "expMonth": 2, "expYear": 2028, "funding": "credit" }
},
"totalAmountPaid": 100,
"paidCurrency": "USD",
"totalAmount": 100,
"baseCurrency": "USD",
"paymentProvider": "stripe",
"sandbox": true,
"customer": {
"id": "aa4b509f-85df-4fae-b22d-f021dba4652b",
"externalId": "cus_Spm89X98bNBaqI",
"email": "[email protected]"
},
"answers": [
{ "conversionType": "answer.number", "questionId": "6fef36cb-0823-41fd-8774-2d4f5d0a542c", "questionText": "", "answerData": { "value": 2 } },
{ "conversionType": "answer.text", "questionId": "b5d4170c-101b-42af-b2db-dd173f3b043c", "questionText": "", "answerData": { "values": ["Kids", "Gen Alpha"] } },
{ "conversionType": "answer.single_choice", "questionId": "4b88b9b2-9851-4e02-b9fc-9276e021f283", "questionText": "What is your rank?", "answerId": "2", "answerText": "Gold" },
{ "conversionType": "answer.multiple_choice", "questionId": "84bb36fd-5034-4737-8ef6-5b6ee1325d39", "questionText": "", "answerData": { "answers": [ { "answerId": "2", "answerText": "Bronze" }, { "answerId": "3", "answerText": "Silver" } ] } },
{ "conversionType": "answer.text", "questionId": "block-1753871709006-f4j7u0td2", "questionText": "", "answerData": { "value": "[email protected]" } },
{ "conversionType": "answer.text", "questionId": "c8323dd0-855c-4b2f-89c6-c1876e7acb5c", "questionText": "", "answerData": { "value": "Test" } }
]
}
}
Summary
All webhook events share a standard structure with
meta
anddata
fields.Payment events (subscription and transaction) are normalized across providers.
User input answers from quizzes/funnels are included under
data.answers
.This enables linking user responses with payment and subscription data.
Last updated