subscription.cancellation_scheduled
Se dispara cuando se programa una cancelación para el fin del período de facturación. NO revoques el acceso todavía.
Payload
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
The subscription ID.
The customer ID. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.
Still "active" — the subscription remains usable until effectiveAt.
ISO 8601 datetime when the cancellation was requested.
The reason for cancellation, if provided.
ISO 8601 datetime when the cancellation will execute (the billing period end). subscription.canceled fires at this moment.
{
"event": "subscription.cancellation_scheduled",
"timestamp": "2026-04-20T10:15:00.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-05-25",
"data": {
"subscriptionId": "sub_1a2b3c4d",
"customerId": "user_123",
"status": "active",
"canceledAt": "2026-04-20T10:15:00.000Z",
"cancelReason": "Too expensive",
"effectiveAt": "2026-04-25T00:00:00.000Z"
}
}Ciclo de vida de la cancelación
Este evento marca el inicio del ciclo de vida de la cancelación. La suscripción permanece totalmente utilizable hasta effectiveAt:
| Momento | Evento | status | Qué hacer |
|---|---|---|---|
| El cliente solicita la cancelación | subscription.cancellation_scheduled | active | Mostrá "finaliza el {effectiveAt}" en tu UI. NO revoques el acceso. |
| El cliente revierte la cancelación | subscription.cancellation_revoked | active | Quitá el aviso de "finaliza el". |
| Termina el período de facturación | subscription.canceled | canceled | Revocá el acceso. |
subscription.updated también se dispara en el momento de la programación por compatibilidad hacia atrás: si ya manejás el estado de cancelación programada a través de subscription.updated, podés seguir haciéndolo. Este evento lleva la misma intención con un nombre explícito y el effectiveAt exacto.
¿Cómo está esta guía?