advanced_reports a un prodotto, e ogni cliente pagante ottiene un diritto che la tua applicazione può verificare tramite API o mantenere sincronizzato con webhooks. Nessuna piattaforma esterna, nessun OAuth, nessun passo di consegna — il diritto stesso è la capacità.Cosa viene consegnato
Nulla lascia Dodo Payments — il diritto è il deliverable:- Al momento dell’acquisto, il grant viene creato e passa direttamente a
Delivered. Non esiste alcuna fasePending, non è richiesta alcuna azione da parte del cliente e non è possibile che la delivery non vada a buon fine. - Il grant contiene un payload
featuretipizzato:{ "feature_type": "boolean", "feature_id": "advanced_reports" }. La tua applicazione leggefeature_idper decidere cosa sbloccare. - L’annullamento, il rimborso o la revoca manuale spostano il grant a
Revokede la tua applicazione rileva la scomparsa del flag.
feature_id è un identificatore scelto dal merchant, non unico tra le entitlements. Due entitlements possono conferire lo stesso feature_id — ad esempio, un piano Pro mensile e annuale che entrambi concedono advanced_reports.Crea un feature flag
Open Entitlements
Name the flag

Creating a feature flag. The Feature ID is what your application checks; Meta Data attaches limits alongside the flag.
Optionally add metadata
Confirm

The created feature flag. The right pane tracks every customer grant issued from it.
Associa a un prodotto
Apri un prodotto (o creane uno), trova la scheda Entitlements e clicca + per associare gli entitlements esistenti. Seleziona il tuo feature flag e clicca Fatto.
Attaching the feature flag to a product. One product can deliver multiple entitlements.

The product now includes the feature flag. Every successful purchase or active subscription grants it.
Configurazione richiesta
Creare via API
Allega limiti con metadati
Un flag booleano risponde “questo cliente ha la funzionalità?”. I metadati rispondono “con quale configurazione?”. I metadati di entitlement accettano valori stringa, intero, numero e booleano, e ogni diritto prende un istantanea congelata dei metadati di entitlement al momento della creazione. Quel comportamento dell’istantanea è ciò che rende sicuro l’uso dei metadati per i limiti di piano:- Modificare i metadati dell’entitlement in un secondo momento influisce solo sui futuri diritti. I clienti mantengono i limiti sotto i quali hanno acquistato.
- L’istantanea viene restituita su ogni diritto come suo campo
metadata, quindi una chiamata API ti dà sia il flag che la sua configurazione.
advanced_reports con { "tier": "pro", "monthly_report_limit": 100 } consente alla tua applicazione di sbloccare il dashboard e applicare il limite di 100 report senza una seconda ricerca. Se successivamente aumenti il limite a 250, i clienti esistenti rimangono a 100 fino a quando non ricevono un nuovo diritto (ad esempio, dopo un cambio di piano).
Verifica le funzionalità di un cliente
Elenca i diritti di feature flag consegnati a un cliente e costruisci l’insieme di caratteristiche abilitate. L’endpoint restituisce una riga per ogni diritto attraverso tutte le entitlements, filtrabile daintegration_type e status.
feature è popolato solo su concessioni feature_flag; è null per ogni altro tipo di integrazione. Vedi il riferimento API List Customer Grants per la forma completa della risposta.Ciclo di vita
I diritti di feature flag seguono il ciclo di vita standard grant lifecycle con una semplificazione: non c’è nessun passo di consegna, quindi i diritti non siedono mai inpending e non si spostano mai a failed.
Pending e non passano mai a Failed.
Webhooks
Iscriviti agli eventientitlement_grant.* per rispecchiare i flag nel tuo database invece di effettuare polling:
entitlement_grant.created— arriva giàdeliveredcon il payloadfeature. Abilita la funzionalità.entitlement_grant.delivered— si attiva quando un diritto precedentemente revocato viene ripristinato. Riabilita la funzionalità.entitlement_grant.revoked— accesso ritirato. Disabilita la funzionalità e controllarevocation_reasonper decidere il tuo messaggio.
entitlement_grant.created— arriva già in statoDeliveredcon il payloadfeature. Abilita la funzionalità.entitlement_grant.delivered— viene attivato quando un grant precedentemente revocato viene ripristinato. Riabilita la funzionalità.entitlement_grant.revoked— accesso revocato. Disabilita la funzionalità e controllarevocation_reasonper decidere quale messaggio mostrare.
Esempio: Il piano Pro sblocca i report avanzati
- Crea il flag.
feature_id: advanced_reportscon metadati{ "tier": "pro", "monthly_report_limit": 100 }. - Associalo al prodotto di abbonamento del tuo Pro Plan.
- Un cliente si abbona. Dodo Payments crea un diritto
deliverede generaentitlement_grant.created; il tuo gestore webhook abilitaadvanced_reportsper il cliente con un limite di 100. - La tua app attiva la funzione. Al caricamento del dashboard, controlla l’insieme delle funzionalità memorizzato nella cache (o chiama
listEntitlementGrants) e visualizza la scheda dei report solo quandoadvanced_reportsè presente. - Il cliente cancella. Dodo Payments revoca il diritto e genera
entitlement_grant.revoked; il tuo gestore disabilita la funzione. Se il cliente in seguito si riprende tramite riscossione,entitlement_grant.deliveredla ripristina — nessuna modifica al codice necessaria.
- Crea il flag.
feature_id: advanced_reportscon i metadati{ "tier": "pro", "monthly_report_limit": 100 }. - Assoc ialo al prodotto di abbonamento Pro Plan.
- Un cliente sottoscrive l’abbonamento. Dodo Payments crea un grant
Deliverede attivaentitlement_grant.created; il tuo gestore webhook abilitaadvanced_reportsper il cliente con un limite di 100. - La tua app controlla l’accesso alla funzionalità. Al caricamento della dashboard, controlla il set di funzionalità memorizzato nella cache (oppure chiama
listEntitlementGrants) e visualizza la scheda dei report solo quandoadvanced_reportsè presente. - Il cliente annulla l’abbonamento. Dodo Payments revoca il grant e attiva
entitlement_grant.revoked; il tuo gestore disabilita la funzionalità. Se in seguito il cliente recupera i pagamenti,entitlement_grant.deliveredla ripristina — non sono necessarie modifiche al codice.
- Usa ID funzionalità stabili in snake_case. Il codice della tua applicazione controlla queste stringhe; rinominare uno è un cambiamento radicale su entrambi i lati.
- Un flag per capacità. Preferisci
advanced_reports+api_accesscome due entitlements su un singolopro_bundle— revoca e combinazioni di piani rimangono pulite. - Guida lo stato dai webhooks, verifica con l’API. I webhooks mantengono il tuo database aggiornato; l’endpoint della lista è la fonte della verità per i lavori di riconciliazione e gli eventi cache miss.
- Tratta
revokedcome immediato. Un flag revocato significa che il cliente non sta più pagando per la funzionalità. Attivalo alla prossima richiesta, non alla prossima sessione. - Metti i limiti nei metadati, non nel codice. Cambiare una quota richiede solo di modificare la entitlement — i nuovi clienti la acquisiscono automaticamente mentre i diritti esistenti mantengono la loro istantanea acquistata.
Best practices
- Usa ID di funzionalità stabili in snake_case. Il codice della tua applicazione controlla queste stringhe; rinominarne una è una modifica incompatibile su entrambi i lati.
- Un flag per ogni funzionalità. Preferisci
advanced_reports+api_accesscome due entitlement invece di un singolopro_bundle: la revoca e le combinazioni di piani restano più semplici da gestire. - Gestisci lo stato tramite webhook e verifica tramite API. I webhook mantengono aggiornato il database; l’endpoint di elenco è la fonte autorevole per i processi di riconciliazione e le cache miss.
- Tratta
Revokedcome immediato. Un flag revocato significa che il cliente non sta più pagando per la funzionalità. Applica il controllo alla richiesta successiva, non alla sessione successiva. - Inserisci i limiti nei metadati, non nel codice. Per modificare una quota è quindi sufficiente aggiornare l’entitlement: i nuovi clienti la ricevono automaticamente, mentre i grant esistenti mantengono lo snapshot acquistato.