Paywall lifecycle
| Event | Description | Payload fields |
|---|---|---|
updated | Settings changed. | paywallId, ownerUserId, changedFields, summarySections |
archived | Paywall archived. | paywallId, ownerUserId, reason |
secret.rotated | API secret regenerated. | paywallId, ownerUserId, secretLastFour, actorId, actorType |
Paywall creation does not emit a webhook because subscriptions can only be configured after a paywall exists.
Integrations
| Event | Description | Payload fields |
|---|---|---|
integration.connected | Integration enabled. | paywallId, ownerUserId, integrationKey, enabledBy |
integration.disconnected | Integration disabled. | paywallId, ownerUserId, integrationKey, disabledBy |
integration.stripe.webhook.rotated | Stripe webhook endpoint recreated. | paywallId, ownerUserId, webhookId, url, secretSuffix |
User authorization
| Event | Description | Payload fields |
|---|---|---|
authorization.requested | User approval required. | paywallId, ownerUserId, externalUserId, walletUserId, requestId, approvalUrl, mode |
authorization.completed | User connected successfully. | paywallId, ownerUserId, externalUserId, walletUserId, connectionId |
authorization.revoked | Connection removed. | paywallId, ownerUserId, externalUserId, walletUserId |
authorization.declined | Authorization request declined. | paywallId, ownerUserId, externalUserId, walletUserId, requestId, reason |
Balances & funds
| Event | Description | Payload fields |
|---|---|---|
balance.deposit.created | Balance deposit recorded. | paywallId, ownerUserId, walletUserId, externalUserId, amount, currency, source, activityId |
balance.topup.link.created | Top-up checkout link issued. | paywallId, ownerUserId, walletUserId, redirectUrl, checkoutSessionId |
balance.trial.granted | Trial credits granted. | paywallId, ownerUserId, walletUserId, credits, activityId |
Charges & usage
| Event | Description | Payload fields |
|---|---|---|
balance.charge.created | Manual or virtual charge recorded. | paywallId, ownerUserId, walletUserId, activityId, amount, processingFeeAmount |
balance.charge.completed | Charge marked as settled. | paywallId, ownerUserId, activityId, settlementReference |
balance.charge.failed | Charge attempt failed. | paywallId, ownerUserId, walletUserId, activityId, amount, errorCode |
usage.charge.created | Usage-based charge computed. | paywallId, ownerUserId, walletUserId, activityId, model, promptTokens, completionTokens, cost |
usage.charge.deferred | Streaming charge deferred until usage is known. | paywallId, ownerUserId, deferredRequestId, model |
usage.rate.limited | Request hit usage rate limit. | paywallId, ownerUserId, limit, date, model, walletUserId |
balance.depleted | Insufficient balance for a charge. | paywallId, ownerUserId, walletUserId, requestedAmount, availableBalance |
request.blocked | Request blocked pre-provider. | paywallId, ownerUserId, walletUserId, reason, requestId |
Payments
| Event | Description | Payload fields |
|---|---|---|
stripe.checkout.session.completed | Stripe Checkout session succeeded. | paywallId, ownerUserId, checkoutSessionId, amount, currency, walletUserId |
Proxy events
| Event | Description | Payload fields |
|---|---|---|
proxy.request.started | Proxy received a request. | paywallId, ownerUserId, requestId, walletUserId, model |
proxy.request.completed | Request completed successfully. | paywallId, ownerUserId, requestId, walletUserId, model |
proxy.request.failed | Request failed inside the proxy. | paywallId, ownerUserId, requestId, walletUserId, model, errorCode |
proxy.request.canceled | Request was aborted before completion. | paywallId, ownerUserId, requestId, walletUserId, model |
proxy.request.blocked | Proxy blocked the request during routing. | paywallId, ownerUserId, requestId, walletUserId, reason |