Events · Billing
subscription.updated
Subscription updated
The cloud subscription changed: edition, status, seats or period (data.previous_attributes holds the previous values).
- Object type
- subscription
- Delivered to
- Endpoints with the admin role
Payload
Object: EventSubscriptionUpdated
idstringrequiredEvent ID (
evt_…), also sent as thewebhook-idheader. Use it to drop duplicate deliveries.typestringrequiredAllowed values:
subscription.updatedcreated_atstring (date-time)requiredWhen the change happened (UTC).
org_idintegerrequiredapi_versionstringrequiredContract version of the
dataschema.sequenceintegerDelivery sequence number within the endpoint (absent for a test event).
payloadstringrequiredthinmeans nodata: read the object through the API.Allowed values:
fullthindataobjectFields
previous_attributesobjectrequiredPrevious values of the changed top-level fields of the object.
actor_idinteger | nullrequiredThe user who performed the action;
nullfor an organization API key or the platform itself.
testbooleanrequiredA test event sent by
POST /v1/webhooks/{webhook_id}/test.
Example delivery
{
"id": "evt_0123456789abcdef0123456789abcdef",
"type": "subscription.updated",
"created_at": "2026-10-24T10:00:03Z",
"org_id": 1,
"api_version": "1.62.0",
"sequence": 1042,
"object": {
"type": "subscription",
"id": "1"
},
"payload": "full",
"data": {
"subscription": {
"edition": "business",
"status": "active",
"seats_purchased": 25,
"billing_interval": "month",
"trial_ends_at": null,
"current_period_start": "2026-10-01T00:00:00Z",
"current_period_end": "2026-11-01T00:00:00Z",
"canceled_at": null,
"credits_allowance": 5000
},
"previous_attributes": {
"seats_purchased": 20
},
"actor_id": 7
},
"test": false
}Receiving events
Each delivery is a POST request with this JSON body to your endpoint. Verify the webhook-signature header (Standard Webhooks) before you trust the body, answer with a 2xx status within a few seconds, and do the work afterwards. Deliveries to one endpoint keep the order of events; a failed delivery is retried with growing pauses.
New event types and new fields can appear at any time: skip the types and fields you do not know.