Use Cases
While Autumn handles billing complexity for you, webhooks are helpful for:- Sending activation emails — Welcome new subscribers or notify users when their plan changes
- Triggering workflows — Start onboarding sequences, provision resources, or update CRM records
- Syncing with external systems — Keep your database, analytics, or other tools in sync with subscription changes
- Deprovisioning access to services — Shut off access to downstream services when a customer cancels their subscription
Available Events
billing.updated
Fired whenever a customer’s plans change — new subscriptions, upgrades, downgrades, etc. Each event carries aplan_changes array describing exactly what happened to each affected plan.
| Action | Description |
|---|---|
activated | A plan is now active on the customer (newly attached, or a previously scheduled plan reached its start date) |
scheduled | A plan has been queued to start at a future date |
updated | A plan’s state changed in place (cancellation set or cleared, past_due flipped, items added or removed) |
expired | A plan ended and is no longer in effect |
subscription (or purchase for one-off products) after the change, and previous_attributes holding the prior values of any fields that were updated. For instance, if a plan was canceled at period end:
tags array surfaces optional reason tags describing why the event fired:
| Tag | When |
|---|---|
trial_ended | A trial just ended (Stripe subscription transition or the trial-expiry cron) |
phase_changed | A Stripe subscription schedule phase advanced |
free to pro):
entity_id:
- Sync Autumn state back to your DB — listen for every
billing.updatedand persist eachplan_changesentry’ssubscriptionsnapshot keyed bycustomer_id(+entity_idif set). - Notify on upgrades — filter for entries with
action: "activated". For “upgrade from previous plan” specifically, pair it with anaction: "expired"entry on the same event. - Detect cancellations — filter for entries where
previous_attributes.canceled_at === null(a cancellation was just set) orprevious_attributes.canceled_atis a number (an uncancel). - Trial-end emails — filter for
tags.includes("trial_ended").
balances.limit_reached
Fired when a customer hits a usage limit for a feature. A limit can be the included allowance, a max purchase cap, or a spend limit.| Limit Type | Description |
|---|---|
included | Customer has exhausted their included allowance |
max_purchase | Customer has reached the maximum purchase cap for overage |
spend_limit | Customer has hit their configured spend limit |
entity_id:
billing.auto_topup_succeeded
Fired when an auto top-up successfully grants additional prepaid balance. Useful for sending receipts, updating internal ledgers, or reconciling balance after a recharge. For auto-charged top-ups, the event fires only after the Stripe invoice ispaid. For invoice_mode top-ups, the event fires once credits are granted and the invoice is finalized — invoice.status will typically be "open" until the customer pays.
Use invoice.stripe_id as a stable dedupe key. The top-level id field (e.g. evt_auto_topup_...) is a unique identifier for the event itself.
Example payload (auto-charge):
balances.usage_alert_triggered
Fired when a customer crosses a configured usage alert threshold. Usage alerts let you monitor when customers approach or exceed specific usage levels for a feature.| Alert Threshold Type | Description |
|---|---|
usage | An absolute usage count was crossed |
usage_percentage | A percentage of the usage allowance was crossed |
Setup
Configure your webhook endpoints in the Autumn dashboard:Navigate to Developer Settings
Go to the Developer section in your Autumn dashboard and select the Webhooks tab.
Select Events
Choose which events you want to subscribe to. You can select all events or specific ones.
Webhook Security
Autumn uses Svix for reliable webhook delivery. Each webhook request includes signature headers that you can use to verify the request is genuinely from Autumn:svix-id— Unique message identifiersvix-timestamp— Timestamp of when the message was sentsvix-signature— Signature for verifying authenticity