Skip to main content
A Webhook is an endpoint on your server that Whop sends signed HTTP POST requests to when events happen, such as a payment succeeding or a membership going active. A webhook is attached to an account or an app and subscribes to the events you choose. Use the Webhooks API to create and update endpoints, send a test event, inspect the delivery log, and replay deliveries your server missed. See Webhooks & Events for verifying signatures and handling retries.

Endpoints

Attributes

string
required
Webhook ID, prefixed hook_.
string
required
The API version used to format payloads sent to this webhook endpoint.Available options: v1, v2, v5
string | null
required
The dated API version (Api-Version-Date) that v1 payloads for this endpoint are pinned to: events serialize exactly like a REST read at this version (the native serializer where the resource has one). Null when unpinned — legacy (v2/v5) webhooks, and v1 webhooks on the legacy payload shape.
boolean
required
Whether events are sent for child resources. For example, if the webhook is on an account, enabling this sends events only from its connected accounts.
integer
required
Number of consecutive deliveries whose first attempt to this endpoint failed since it last accepted one. Later retries of the same delivery do not increment it. Resets to 0 when a delivery succeeds or the webhook is re-enabled.
string
required
When the webhook was created, as an ISO 8601 timestamp.
string | null
required
When Whop automatically disabled this webhook, as an ISO 8601 timestamp. null unless the webhook was disabled by Whop; a webhook you disabled yourself has enabled: false and a null disabled_at.
string | null
required
Why Whop disabled this webhook. delivery_failures means every delivery failed for 3 days straight. null when disabled_at is null.Available options: delivery_failures
boolean
required
Whether this webhook endpoint is currently active and receiving events.
string[]
required
Event types this webhook is subscribed to, in dot form (for example payment.succeeded).Available options: account.updated, account.financing_approved, account.financing_denied, invoice.created, invoice.marked_uncollectible, invoice.paid, invoice.past_due, invoice.voided, membership.activated, membership.deactivated, membership.trial_ending_soon, membership.updated, entry.created, entry.approved, entry.denied, entry.deleted, export.completed, export.failed, setup_intent.requires_action, setup_intent.succeeded, setup_intent.canceled, ledger_account.funds_available, swap.completed, deposit.succeeded, financial_activity.funds_available, transfer.created, transfer.completed, transfer.failed, withdrawal.created, withdrawal.updated, withdrawal.reversed, payout.created, payout.updated, payout.reversed, card_transaction.created, card_transaction.updated, card_transaction.completed, card_transaction.declined, card_transaction.reversed, card.created, card.updated, card.frozen, card.canceled, card_application.created, card_application.updated, card_application.approved, card_application.denied, course_lesson_interaction.completed, payout_method.created, verification.succeeded, identity_profile.approved, identity_profile.rejected, identity_profile.needs_action, identity_profile.updated, payout_account.status_updated, payment.authorized, payment.canceled, resolution_center_case.created, resolution_center_case.updated, resolution_center_case.decided, product.created, product.updated, product.deleted, product.published, product.unpublished, plan.created, plan.updated, plan.deleted, shipment.created, shipment.updated, member.created, member.updated, ad_campaign.payment_failed, ad_campaign.updated, ad_campaign.events, ad.updated, chat.message.created, chat.reaction.created, payment.created, payment.succeeded, payment.failed, payment.pending, payment.requires_action, dispute.created, dispute.updated, refund.created, refund.updated, dispute_alert.created, membership.cancel_at_period_end_changed, membership.went_valid, membership.went_invalid, membership.metadata_updated, resolution.created, resolution.updated, resolution.decided, payment.affiliate_reward_created, membership.experience_claimed, app_membership.went_valid, app_membership.went_invalid, app_payment.created, app_payment.succeeded, app_payment.failed, app_payment.pending, app_payment.requires_action, app_membership.cancel_at_period_end_changed
string | null
required
When the current failure streak began, as an ISO 8601 timestamp. Unlike last_failure_at, this is set on the streak’s first failed attempt, so it shows an endpoint that is failing right now. null when the endpoint is healthy.
string | null
required
When a delivery to this endpoint most recently failed after exhausting retries, as an ISO 8601 timestamp. null if no delivery has ever failed.
string
required
ID of the resource (account or app) this webhook is attached to.
string[]
required
The subset of subscribed event types that support sending test payloads, in dot form.Available options: account.updated, account.financing_approved, account.financing_denied, invoice.created, invoice.marked_uncollectible, invoice.paid, invoice.past_due, invoice.voided, membership.activated, membership.deactivated, membership.trial_ending_soon, membership.updated, entry.created, entry.approved, entry.denied, entry.deleted, export.completed, export.failed, setup_intent.requires_action, setup_intent.succeeded, setup_intent.canceled, ledger_account.funds_available, swap.completed, deposit.succeeded, financial_activity.funds_available, transfer.created, transfer.completed, transfer.failed, withdrawal.created, withdrawal.updated, withdrawal.reversed, payout.created, payout.updated, payout.reversed, card_transaction.created, card_transaction.updated, card_transaction.completed, card_transaction.declined, card_transaction.reversed, card.created, card.updated, card.frozen, card.canceled, card_application.created, card_application.updated, card_application.approved, card_application.denied, course_lesson_interaction.completed, payout_method.created, verification.succeeded, identity_profile.approved, identity_profile.rejected, identity_profile.needs_action, identity_profile.updated, payout_account.status_updated, payment.authorized, payment.canceled, resolution_center_case.created, resolution_center_case.updated, resolution_center_case.decided, product.created, product.updated, product.deleted, product.published, product.unpublished, plan.created, plan.updated, plan.deleted, shipment.created, shipment.updated, member.created, member.updated, ad_campaign.payment_failed, ad_campaign.updated, ad_campaign.events, ad.updated, chat.message.created, chat.reaction.created, payment.created, payment.succeeded, payment.failed, payment.pending, payment.requires_action, dispute.created, dispute.updated, refund.created, refund.updated, dispute_alert.created, membership.cancel_at_period_end_changed, membership.went_valid, membership.went_invalid, membership.metadata_updated, resolution.created, resolution.updated, resolution.decided, payment.affiliate_reward_created, membership.experience_claimed, app_membership.went_valid, app_membership.went_invalid, app_payment.created, app_payment.succeeded, app_payment.failed, app_payment.pending, app_payment.requires_action, app_membership.cancel_at_period_end_changed
string
required
Destination URL where webhook payloads are delivered via HTTP POST.
string | null
required
Secret key used to sign webhook payloads for verification. Include this in your HMAC validation logic. Returned on the create response and to interactive dashboard sessions; null for API-key and OAuth callers on later reads.
Webhook