advanced_reports a um produto, e todo cliente pagante recebe uma concessão que sua aplicação pode verificar via API ou manter sincronizado com webhooks. Nenhuma plataforma externa, sem OAuth, sem etapa de entrega — a própria concessão é a capacidade.O que é entregue
Nada sai do Dodo Payments — a concessão é a entrega:- Na compra, o grant é criado e passa diretamente para
Delivered. Não há uma fasePending, nenhuma ação do cliente e nenhuma possibilidade de falha na entrega. - O grant contém um payload tipado
feature:{ "feature_type": "boolean", "feature_id": "advanced_reports" }. Sua aplicação lêfeature_idpara decidir o que desbloquear. - O cancelamento, reembolso ou revogação manual move o grant para
Revoked, e sua aplicação vê a flag desaparecer.
feature_id é um identificador escolhido pelo comerciante, não único entre os entitlements. Dois entitlements podem conferir o mesmo feature_id — por exemplo, um plano Pro mensal e anual ambos concedendo advanced_reports.Criar uma 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.
Anexar a um produto
Abra um produto (ou crie um), encontre o cartão Entitlements, e clique em + para anexar entitlements existentes. Selecione sua feature flag e clique em Concluir.
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.
Configuração obrigatória
Criar via API
Anexar limites com metadados
Uma flag booleana responde “este cliente possui o recurso?”. Os metadados respondem “com qual configuração?”. Os metadados de entitlement aceitam valores de string, inteiro, número e booleano, e cada concessão toma um instantâneo congelado dos metadados do entitlement no momento em que é criada. Esse comportamento de instantâneo é o que torna os metadados seguros para usar em limites de plano:- Editar os metadados do entitlement posteriormente afeta apenas as concessões futuras. Os clientes mantêm os limites sob os quais foram comprados.
- O instantâneo é retornado em cada concessão como seu campo
metadata, então uma chamada API fornece tanto a flag quanto sua configuração.
advanced_reports com { "tier": "pro", "monthly_report_limit": 100 } permite que sua aplicação desbloqueie o dashboard e imponha a cota de 100 relatórios sem uma segunda consulta. Se mais tarde você aumentar o limite para 250, os clientes existentes permanecem em 100 até receberem uma nova concessão (por exemplo, após uma mudança de plano).
Verificar recursos de um cliente
Liste concessões de feature-flag entregues a um cliente e construa o conjunto de recursos habilitados. O endpoint retorna uma linha por concessão em todos os entitlements, filtrável porintegration_type e status.
feature é populado apenas nas concessões feature_flag; ele é null para todos os outros tipos de integração. Veja a referência de API List Customer Grants para a forma completa da resposta.Ciclo de vida
Os grants de feature flag seguem o ciclo de vida padrão de um grant com uma simplificação: não há uma etapa de entrega, portanto os grants nunca permanecem emPending nem avançam para Failed.
Webhooks
Assine os eventosentitlement_grant.* para espelhar flags no seu próprio banco de dados em vez de fazer polling:
entitlement_grant.created— já chega emDeliveredcom o payloadfeature. Ative a feature.entitlement_grant.delivered— é acionado quando um grant anteriormente revogado é restaurado. Reative a feature.entitlement_grant.revoked— acesso retirado. Desative a feature e verifiquerevocation_reasonpara decidir sua mensagem.
entitlement_grant.failed para feature flags — a entrega acontece inteiramente dentro do Dodo Payments e não pode falhar.
Exemplo: Plano Pro desbloqueia relatórios avançados
- Crie a flag.
feature_id: advanced_reportscom os metadados{ "tier": "pro", "monthly_report_limit": 100 }. - Associe-a ao produto de assinatura Pro Plan.
- Um cliente assina. Dodo Payments cria um grant
Deliverede acionaentitlement_grant.created; seu webhook handler ativaadvanced_reportspara o cliente com um limite de 100. - Seu app controla o acesso à feature. Ao carregar o dashboard, verifique o conjunto de features em cache (ou chame
listEntitlementGrants) e renderize a aba de relatórios somente quandoadvanced_reportsestiver presente. - O cliente cancela. Dodo Payments revoga o grant e aciona
entitlement_grant.revoked; seu handler desativa a feature. Se o cliente se recuperar posteriormente por meio de dunning,entitlement_grant.delivereda restaura — nenhuma alteração de código é necessária.
Melhores práticas
- Use IDs de feature estáveis em snake_case. O código da sua aplicação verifica essas strings; renomear uma delas é uma alteração incompatível em ambos os lados.
- Uma flag por capacidade. Prefira
advanced_reports+api_accesscomo dois entitlements em vez de um únicopro_bundle— a revogação e as combinações de planos permanecem organizadas. - Use webhooks para controlar o estado e verifique com a API. Webhooks mantêm seu banco de dados atualizado; o endpoint de listagem é a fonte de verdade para jobs de reconciliação e falhas de cache.
- Trate
Revokedcomo imediato. Uma flag revogada significa que o cliente não está mais pagando pela feature. Controle o acesso na próxima requisição, não na próxima sessão. - Coloque os limites nos metadados, não no código. Alterar uma quota exige apenas editar o entitlement — novos clientes a recebem automaticamente, enquanto os grants existentes mantêm o snapshot adquirido.