La carga útil enviada a su endpoint de webhook cuando se crea, entrega, falla o revoca una concesión de derechos.
Documentation Index
Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
Use this file to discover all available pages before exploring further.
| Evento | Descripción |
|---|---|
entitlement_grant.created | Se creó una nueva fila de concesión. El estado es delivered inmediatamente para claves de licencia, e pending para todas las demás integraciones. |
entitlement_grant.delivered | La concesión pasa a estar entregada. El cliente ahora tiene acceso a la plataforma, archivo o clave de licencia atribuidos. |
entitlement_grant.failed | La entrega falló y no se está reintentando. Inspeccione error_code y error_message. |
entitlement_grant.revoked | Se retiró el acceso. Inspeccione revocation_reason para entender por qué. |
EntitlementGrantResponse documentada en el esquema a continuación.
id estable desde este punto en adelante, incluso si su estado cambia. Use este evento para registrar que el cumplimiento está en progreso.
Para claves de licencia la fila se inserta directamente con status: "delivered" y delivered_at poblados, de modo que un solo evento created es seguido por ningún cambio de estado adicional, a menos que la concesión sea revocada más tarde.
Para todas las demás integraciones la fila llega con status: "pending". Un evento delivered o failed sigue una vez finalizada la entrega:
oauth_url que el cliente debe visitar para completar el consentimiento. La concesión permanece pending hasta que el cliente autorice.pending solo brevemente mientras se ejecuta la llamada de plataforma, luego pasan a delivered.pending a delivered. El cliente ahora tiene el acceso descrito por el derecho. Use este evento para desbloquear funciones dependientes en sus propios sistemas, por ejemplo, para proporcionar un espacio de trabajo, enviar un correo electrónico de bienvenida personalizado o marcar una bandera de “cumplido”.
El campo delivered_at de la carga útil captura cuándo se completó la entrega. Para las concesiones que llegaron delivered al momento de la creación, recibirá eventos created e delivered de manera consecutiva.
error_code e error_message explican la falla. Las causas comunes incluyen un token OAuth revocado, un permiso de plataforma denegado, o un destino faltante (por ejemplo, una guild de Discord eliminada).
revocation_reason registra el desencadenante.
revocation_reason | Desencadenante |
|---|---|
subscription_cancelled | Se canceló la suscripción del cliente (evento subscription.cancelled). |
subscription_on_hold | La suscripción está en espera debido a la falla en la renovación (subscription.on_hold). Recuperable: un reintento exitoso produce una nueva concesión. |
subscription_expired | La suscripción alcanzó el final de su término (subscription.expired). |
plan_changed | El plan cambió; las concesiones antiguas se revocan antes de emitir nuevas (subscription.plan_changed). |
refund | Se procesó un reembolso para el pago único original (refund.succeeded). |
manual | Un comerciante revocó la concesión a través de la API o el panel de control. Las revocaciones manuales no se otorgan nuevamente automáticamente en la renovación de la suscripción. |
license_key_disabled | La clave de licencia detrás de una concesión de clave de licencia fue deshabilitada. La concesión se re-activa automáticamente si la clave es re-habilitada. |
platform_external | El lado de la plataforma de una integración se desincronizó (por ejemplo, se eliminó un rol de Discord manualmente, la App de GitHub perdió acceso al repositorio, o un pase de reconciliación detectó un objetivo faltante). La concesión no se otorga automáticamente en la renovación de la suscripción hasta que se solucione el problema subyacente de la plataforma. |
data siempre es un objeto EntitlementGrantResponse. Dos tipos de integraciones incluyen objetos anidados adicionales:
license_key se incluye cuando el tipo de integración de derechos es license_key. Contiene la clave generada, la expiración y el uso de activación.digital_product_delivery se incluye cuando el tipo de integración es digital_files. Contiene URLs de descarga prefirmadas, el opcional instructions, y el opcional external_url.null; la configuración relevante se captura en el propio derecho, no en la concesión.
entitlement_grant.delivered)entitlement_grant.delivered)entitlement_grant.created)entitlement_grant.revoked)entitlement_grant.failed)entitlement_grant.delivered antes de desbloquear funciones dependientes. Un evento payment.succeeded le indica que el dinero se transfirió; no le indica que el cliente ya tiene el repositorio de GitHub o el rol de Discord. El evento delivered es la fuente de verdad para el cumplimiento.revocation_reason a flujos de retención. Una revocación subscription_on_hold generalmente significa que la tarjeta del cliente falló y la próxima renovación re-otorgará el acceso. Una revocación manual o subscription_cancelled es intencional. Trátelos de manera diferente en la mensajería al cliente.id como su clave de idempotencia. Una sola concesión emite como máximo un evento created y como máximo un evento terminal (delivered o failed), y como máximo un evento revoked. Las re-entregas del sistema de webhook pueden repetir eventos; dedupe en la concesión id más type.license_key e digital_product_delivery para reconocer el tipo de integración. La carga útil de la concesión en sí no lleva el tipo de integración, pero exactamente uno de estos objetos anidados se completa para derechos de clave de licencia y archivos digitales.oauth_url al cliente. El evento entitlement_grant.created para flujos de suscripción de Discord, GitHub, o Notion incluye un oauth_url e oauth_expires_at. Envíelo por correo electrónico al cliente o muéstrelo en su aplicación para desbloquear la entrega.Detailed view of a single entitlement grant: who it's for, its lifecycle state, and any integration-specific delivery payload.
Identifier of the business that owns the grant.
Timestamp when the grant was created.
Identifier of the customer the grant was issued to.
Identifier of the entitlement this grant was issued from.
Unique identifier of the grant.
Arbitrary key-value metadata recorded on the grant.
Lifecycle status of the grant.
Pending, Delivered, Failed, Revoked Timestamp when the grant was last modified.
Timestamp when the grant transitioned to delivered, when applicable.
Digital-product-delivery payload, present when the entitlement
integration is digital_files.
Machine-readable code reported when delivery failed, when applicable.
Human-readable message reported when delivery failed, when applicable.
License-key delivery payload, present when the entitlement integration
is license_key.
Timestamp when oauth_url stops being valid, when applicable.
Customer-facing OAuth URL for OAuth-style integrations. Populated
during the customer-portal accept flow; null until the customer
completes that step, and on grants for non-OAuth integrations.
Identifier of the payment that triggered this grant, when applicable.
Reason recorded when the grant was revoked, when applicable.
Timestamp when the grant transitioned to revoked, when applicable.
Identifier of the subscription that triggered this grant, when applicable.