Il payload inviato al tuo endpoint webhook quando una concessione di diritti è creata, consegnata, fallita o revocata.
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 | Descrizione |
|---|---|
entitlement_grant.created | È stata creata una nuova riga di concessione. Lo stato è delivered immediatamente per le chiavi di licenza, e pending per ogni altra integrazione. |
entitlement_grant.delivered | La concessione passa a consegnato. Il cliente ora ha accesso alla piattaforma, al file o alla chiave di licenza concessi. |
entitlement_grant.failed | La consegna è fallita e non viene ripetuta. Controlla error_code e error_message. |
entitlement_grant.revoked | L’accesso è stato ritirato. Controlla revocation_reason per capire perché. |
EntitlementGrantResponse documentato nello schema qui sotto.
id stabile da questo momento in poi, anche se il suo stato cambia. Usa questo evento per registrare che l’adempimento è in corso.
Per chiavi di licenza la riga viene inserita direttamente con status: "delivered" e delivered_at popolati, quindi un singolo evento created è seguito da nessun altro cambiamento di stato a meno che la concessione venga successivamente revocata.
Per ogni altra integrazione la riga arriva con status: "pending". Un evento delivered o failed segue una volta che la consegna è completata:
oauth_url che il cliente deve visitare per completare il consenso. La concessione rimane pending fino a quando il cliente autorizza.pending solo brevemente mentre la chiamata alla piattaforma è in corso, poi si spostano a delivered.pending a delivered. Il cliente ora ha l’accesso descritto dal diritto. Usa questo evento per sbloccare funzionalità dipendenti nei tuoi sistemi, per esempio per fornire uno spazio di lavoro, inviare un’email di benvenuto personalizzata, o segnare un flag “adempiuto”.
Il campo delivered_at del payload cattura quando la consegna è stata completata. Per le concessioni che sono arrivate delivered alla creazione, riceverai eventi created e delivered consecutivi.
error_code e error_message spiegano il fallimento. Cause comuni includono un token OAuth revocato, un permesso della piattaforma negato, o un target mancante (es. una gilda Discord eliminata).
revocation_reason registra il trigger.
revocation_reason | Trigger |
|---|---|
subscription_cancelled | L’abbonamento del cliente è stato cancellato (evento subscription.cancelled). |
subscription_on_hold | L’abbonamento è in sospeso a causa di un rinnovo fallito (event subscription.on_hold). Recuperabile: un ritentativo riuscito produce una nuova concessione. |
subscription_expired | L’abbonamento ha raggiunto la fine del suo termine (evento subscription.expired). |
plan_changed | Il piano è cambiato; le vecchie concessioni sono revocate prima che ne vengano emesse di nuove (evento subscription.plan_changed). |
refund | Un rimborso è stato elaborato per il pagamento originale unico (evento refund.succeeded). |
manual | Un commerciante ha revocato la concessione tramite l’API o la dashboard. Le revoche manuali non vengono automaticamente concesse nuovamente al rinnovo dell’abbonamento. |
license_key_disabled | La chiave di licenza dietro una concessione di chiavi di licenza è stata disabilitata. La concessione è riattivata automaticamente se la chiave è riabilitata. |
platform_external | Il lato della piattaforma di un’integrazione è uscito dalla sincronizzazione (per esempio, un ruolo Discord è stato rimosso manualmente, l’app GitHub ha perso l’accesso al repository, o un passaggio di riconciliazione ha rilevato un target mancante). La concessione non viene automaticamente ripristinata al rinnovo dell’abbonamento fino a quando il problema di base della piattaforma non viene risolto. |
data è sempre un oggetto EntitlementGrantResponse. Due tipi di integrazione allegano oggetti annidati extra:
license_key è incluso quando il tipo di integrazione di concessione è license_key. Contiene la chiave generata, la scadenza e l’utilizzo di attivazione.digital_product_delivery è incluso quando il tipo di integrazione è digital_files. Contiene URL di download presigned, l’opzionale instructions, e l’opzionale external_url.null; la configurazione rilevante è catturata nel diritto stesso, non nella concessione.
entitlement_grant.delivered)entitlement_grant.delivered)entitlement_grant.created)entitlement_grant.revoked)entitlement_grant.failed)entitlement_grant.delivered prima di sbloccare funzionalità dipendenti. Un evento payment.succeeded ti dice che il pagamento è stato completato; non ti dice ancora se il cliente ha il repository GitHub o il ruolo Discord. L’evento delivered è la fonte di verità per l’adempimento.revocation_reason ai flussi di retention. Una revoca subscription_on_hold di solito significa che la carta del cliente ha fallito e il prossimo rinnovo concederà nuovamente l’accesso. Una revoca manual o subscription_cancelled è intenzionale. Trattali in modo diverso nella messaggistica al cliente.id come tua chiave di idempotenza. Una singola concessione emette al massimo un evento created e al massimo un evento terminale (delivered o failed), e al massimo un evento revoked. Le riedizioni dal sistema webhook possono ripetere eventi; deduplicali sulla concessione id più type.license_key e digital_product_delivery per riconoscere il tipo di integrazione. Il payload della concessione stessa non trasporta il tipo di integrazione, ma esattamente uno di questi oggetti annidati è popolato per le concessioni di chiavi di licenza e file digitali.oauth_url al cliente. L’evento entitlement_grant.created per i flussi di abbonati a Discord, GitHub, o Notion include un oauth_url e oauth_expires_at. Invia un’email al cliente o mostrala nella tua app per sbloccare la consegna.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.