subscription.activated, revoke it on subscription.canceled, fulfil a purchase on checkout.session.completed. Delivery is through Svix, which signs every request and retries failed deliveries.
The objects these events describe are explained in How Alguna works. For the dashboard walkthrough, see the Webhooks quick start.
Webhook payloads are camelCase, unlike API request and response bodies, which are snake_case. Identifiers in payloads are the same IDs the API returns.
Webhook format
Every delivery has the same envelope:Supported events
Event payloads
Each event’sdata object is documented under Webhooks in the sidebar: every field, its type, whether it can be null, the values it accepts, and an example.
For the objects behind these events and what their statuses mean, see Payments, Refunds, Credits & wallets, and hosted and embedded checkout.
Setting up webhooks
- In the dashboard, go to Settings → Connections → Developers → Webhooks
- Add an endpoint with your URL
- Select the events to receive
- Copy the signing secret — you need it to verify deliveries
- Save
Responding to webhooks
Return a 2xx status code within 15 seconds to acknowledge receipt. Queue any real work and process it asynchronously — a slow handler is retried as a failure. If your framework applies CSRF protection, exempt the webhook route. Deliveries can arrive more than once and out of order. Key your handling on thesvix-id header (the delivery ID) or on the object ID plus timestamp, and treat every handler as idempotent.
Verifying signatures
Every delivery is signed following the Standard Webhooks specification and carriessvix-id, svix-timestamp and svix-signature headers. Verify with the Svix library for your language, using the raw request body: