En funktion flagga rättighet förvandlar Dodo Payments till ett betalningsmedvetet funktion-flagglager. Bifoga en flagga som
advanced_reports till en produkt, och varje betalande kund får en beviljande som din applikation kan kontrollera via API eller hålla i sync med webhooks. Ingen extern plattform, ingen OAuth, inget leveranssteg — beviljandet i sig är förmågan.Vad som levereras
Inget lämnar Dodo Payments — beviljandet är leveransen:- Vid köp skapas beviljandet och flyttas direkt till
delivered. Det finns ingenpendingfas, ingen kundåtgärd och ingen möjlighet för leverans att misslyckas. - Beviljandet bär en typad
featurenyttolast:{ "feature_type": "boolean", "feature_id": "advanced_reports" }. Din applikation läserfeature_idför att bestämma vad som ska låsas upp. - Avbokning, återbetalning eller manuell återkallning flyttar beviljandet till
revoked, och din applikation ser flaggan försvinna.
feature_id är en handlarchosen identifierare, inte unik över rättigheter. Två rättigheter kan ge samma feature_id — till exempel, en månads- och en årsplan för Pro som båda ger advanced_reports.Skapa en funktion flagga
Open Entitlements
I din Dodo Payments dashboard, gå till Rättigheter och klicka på + för att starta en ny rättighet, välj sedan Funktion Flaggar.
Name the flag
Ge flaggan ett Visningsnamn för din dashboard, ett Funktion ID som din applikation kommer att kontrollera (dashboarden föreslår ett från namnet) och en Beskrivning så att ditt team vet vad den kontrollerar.

Optionally add metadata
Toggle Meta Data för att bifoga nyckel-värde konfiguration — gränser, nivånamn, kvoter — som levereras till din applikation tillsammans med flaggan. Se Bifoga gränser med metadata.
Bifoga till en produkt
Öppna en produkt (eller skapa en), hitta Rättigheter kortet och klicka på + för att bifoga befintliga rättigheter. Välj din funktion flagga och klicka på Klar.

Obligatorisk konfiguration
| Fält | Obligatorisk | Beskrivning |
|---|---|---|
feature_id | Ja | Identifierare som din applikation kontrollerar, t.ex. advanced_reports. Inte unik över rättigheter. |
feature_type | Ja | Typ av förmåga som ges. Endast boolean stöds idag. |
Skapa via API
Bifoga gränser med metadata
En boolean flagga svarar “har denna kund funktionen?”. Metadata svarar “med vilken konfiguration?”. Rättighetsmetadata accepterar strängar, heltal, nummer och boolean värden, och varje beviljande tar en fryst ögonblicksbild av rättighetens metadata i det ögonblick det skapas. Denna ögonblicksbildsbeteende är det som gör metadata säkra att använda för planegränser:- Att redigera rättighetens metadata senare påverkar endast framtida beviljanden. Kunder behåller de gränser de köpt under.
- Ögonblicksbilden returneras på varje beviljande som dess
metadatafält, så ett API-anrop ger dig både flaggan och dess konfiguration.
advanced_reports flagga med { "tier": "pro", "monthly_report_limit": 100 } låter din applikation låsa upp dashboarden och påtvinga 100-rapport kvoten utan en andra uppslagning. Om du senare höjer gränsen till 250, förblir befintliga kunder på 100 tills de får en ny beviljande (till exempel, efter en planförändring).
Kontrollera en kunds funktioner
Lista en kunds levererade funktion-flagg beviljanden och bygg upp uppsättningen av aktiverade funktioner. Endpointen returnerar en rad per beviljande över alla rättigheter, filtrerbar efterintegration_type och status.
feature nyttolasten fylls endast på feature_flag beviljanden; det är null för alla andra integrationstyper. Se den Lista Kund Grants API-referens för hela svarformatet.Livscykel
Funktion flagg beviljanden följer den standard bevilja livscykel med en förenkling: det finns inget leveranssteg, så beviljanden sitter aldrig ipending och flyttas aldrig till failed.
| Utlösare | Effekt |
|---|---|
| Engångsbetalning lyckas / prenumeration blir aktiv | Beviljande skapat med status: delivered och delivered_at satt. |
| Prenumeration sätts på vänt, avbokas eller utgår | Beviljande återkallat med matchande revocation_reason. |
| Återbetalning på en engångsbetalning | Beviljande återkallat med revocation_reason: refund. |
| Prenumeration återställs (till exempel, inkassering lyckas) | Det återkallade beviljandet återställs till delivered — samma bevilja id, återkallningsfält rensade. |
| Manuell API-återkallning | Beviljande återkallat med revocation_reason: manual. Återställs inte automatiskt vid förnyelse. |
Webhooks
Prenumerera påentitlement_grant.* händelser för att spegla flaggor in i din egen databas i stället för att fråga:
entitlement_grant.created— kommer redandeliveredmedfeaturenyttolasten. Aktivera funktionen.entitlement_grant.delivered— utlöses när en tidigare återkallad beviljande återställs. Återaktivera funktionen.entitlement_grant.revoked— åtkomst återtagen. Inaktivera funktionen och kontrollerarevocation_reasonför att bestämma ditt meddelande.
TypeScript
entitlement_grant.failed for feature flags — delivery happens entirely inside Dodo Payments and cannot fail.
Exempel: Pro plan låser upp avancerade rapporter
- Skapa flaggan.
feature_id: advanced_reportsmed metadata{ "tier": "pro", "monthly_report_limit": 100 }. - Bifoga den till din Pro Plan prenumerationsprodukt.
- En kund prenumererar. Dodo Payments skapar en
deliveredbeviljande och utlöserentitlement_grant.created; din webhook hanterare aktiveraradvanced_reportsför kunden med en gräns på 100. - Din app begränsar funktionen. Vid dashboard-laddning, kontrollera den cachade funktion-uppsättningen (eller ring
listEntitlementGrants) och visa rapportfliken endast näradvanced_reportsär närvarande. - Kunden avbokar. Dodo Payments återkallar beviljandet och utlöser
entitlement_grant.revoked; din hanterare inaktiverar funktionen. Om kunden senare återhämtar sig via inkassering,entitlement_grant.deliveredåterställer det — inga kodändringar behövs.
Bästa praxis
- Använd stabila, snake_case funktion id:n. Din applikationskod kontrollerar dessa strängar; att byta namn på en är en brytande ändring på båda sidor.
- En flagga per förmåga. Föredra
advanced_reports+api_accesssom två rättigheter över en endapro_bundle— återkallning och planblandningar förblir rena. - Driv status från webhooks, verifiera med API. Webhooks håller din databas aktuell; listan endpoint är sanningskälla för avstämningsjobb och cachemissar.
- Behandla
revokedsom omedelbar. En återkallad flagga innebär att kunden inte längre betalar för funktionen. Begränsa vid nästa begäran, inte nästa session. - Sätt gränser i metadata, inte i kod. Att ändra en kvot kräver då bara redigering av rättigheten — nya kunder hämtar det automatiskt medan befintliga beviljanden behåller sin köpta ögonblicksbild.
