Skip to main content
En entitlement för en feature flag gör Dodo Payments till ett billing-medvetet lager för feature flags. Koppla en flagga, till exempel advanced_reports, till en produkt, så får varje betalande kund ett grant som din applikation kontrollerar via API:et eller håller synkroniserat med webhooks. Det finns ingen extern plattform, inget OAuth-steg och inget leveranssteg: själva grantet är funktionen.

Vad som levereras

Inget lämnar Dodo Payments. Grantet är det som levereras:
  • Vid köp skapar Dodo Payments grantet direkt i Delivered. Det hamnar aldrig i Pending, kräver ingen åtgärd från kunden och har inget leveranssteg som kan misslyckas.
  • Grantet innehåller en typad payload för feature: { "feature_type": "boolean", "feature_id": "advanced_reports" }. Din applikation läser feature_id för att avgöra vad som ska låsas upp.
  • Uppsägning, återbetalning eller en manuell återkallelse flyttar grantet till Revoked, och flaggan försvinner från kundens levererade grants.
Vanliga användningar inkluderar planbaserad funktionsbegränsning (Pro låser upp analys), tilläggsförmågor (en “API-åtkomst” uppgradering) och tidiga åtkomstprogram som säljs som engångsköp.
feature_id är en identifierare som du väljer, och den är inte unik mellan entitlements. Två entitlements kan ge samma feature_id, till exempel en månads- och en årsplan för Pro som båda ger advanced_reports.

Skapa en feature flag

1

Open Entitlements

Gå till Entitlements i Dodo Payments dashboard och klicka på + för att skapa en ny entitlement. Välj sedan Feature Flags.
2

Name the Flag

Ange ett Display Name för dashboarden och rapporterna, samt en Description så att ditt team vet vad flaggan styr. Feature ID är det som din applikation kontrollerar. Dashboarden fyller i det utifrån visningsnamnet (till exempel blir “API access” till api_access), och du kan redigera det. Det får inte innehålla mellanslag.
Ny Funktion Flagga formulär med visningsnamn, funktion ID, beskrivning och metadata nyckel-värde angivelser

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

3

Add Metadata (Optional)

Aktivera Meta Data för att bifoga nyckel-värde-konfiguration, till exempel gränser, nivånamn eller kvoter, som din applikation tar emot tillsammans med flaggan. Klicka på Add Entry för varje par. Se Bifoga gränser med metadata.
4

Confirm

Klicka på Bekräfta. Flaggan visas i din rättighetslista, redo att bifogas till produkter.
Rättighetsdashboard som visar Avancerade Rapporter funktion flagga med sin beviljande aktivitetsfönster

The created feature flag. The right pane tracks every customer grant issued from it.

Koppla till en produkt

Öppna en produkt eller skapa en ny och leta reda på kortet Entitlements. Klicka på + för att koppla befintliga entitlements, välj din feature flag och klicka på Done.
Rättigheter bifoga panel med Avancerade Rapporter funktion flagga vald

Attaching the feature flag to a product. One product can deliver multiple entitlements.

Den bifogade flaggan visas på produktformuläret, och förhandsgranskningen av kassan listar den under Inkluderar.
Produktformulär med Avancerade Rapporter funktion flagga fäst i Rättigheter kortet

The product now includes the feature flag. Every successful purchase or active subscription grants it.

Obligatorisk konfiguration

Skapa via API


Bifoga gränser med metadata

En boolesk flagga svarar på frågan “Har den här kunden funktionen?” Metadata svarar på frågan “Med vilken konfiguration?” Entitlement-metadata accepterar värden av typen string, integer, number och boolean. Varje grant tar en fryst ögonblicksbild av entitlementens metadata när grantet skapas. Ögonblicksbilden gör metadata säkra att använda för plangränser:
  • Om du redigerar entitlementens metadata senare påverkar det endast framtida grants. Kunderna behåller gränserna som de köpte.
  • Varje grant returnerar sin ögonblicksbild i fältet metadata, så ett API-anrop ger dig både flaggan och dess konfiguration.
En flagga advanced_reports med { "tier": "pro", "monthly_report_limit": 100 } gör till exempel att din applikation kan låsa upp dashboarden och tillämpa kvoten på 100 rapporter utan en andra sökning. Om du senare höjer gränsen till 250 ligger befintliga kunder kvar på 100 tills de får ett nytt grant, till exempel efter ett planbyte.
Använd metadata för gränser och konfiguration, och använd feature_id endast för identitet. Om du kodar en gräns i ID:t (advanced_reports_100) måste du skapa en ny flagga för varje ändring av gränsen, vilket bryter din applikations kontroller.

Kontrollera en kunds funktioner

För att skapa mängden funktioner som en kund har listar du deras levererade grants för feature flags. Endpointen returnerar en rad per grant för alla entitlements, och du kan filtrera den med integration_type och status. I de här exemplen används client från Skapa via API.
Payloaden feature fylls endast i för grants av typen feature_flag. Den är null för alla andra integrationstyper. Se API-referensen för List Customer Grants för den fullständiga svarsstrukturen.
Att anropa API:et vid varje request ökar latensen i din hot path. Cacha varje kunds funktionsuppsättning med en kort TTL (minuter, inte timmar), och ogiltigförklara cachen från din webhook-handler när ett grant ändrar status. Tillsammans gör detta kontrollerna snabba och gör att återkallelser börjar gälla vid nästa request.

Livscykel

Grants för feature flags följer standarden för grantets livscykel med en förenkling: det finns inget leveranssteg, så grants ligger aldrig i Pending och flyttas aldrig till Failed. Grants är idempotenta per entitlement och kund. Så länge en kund har ett grant för en flagga som inte har återkallats skapar upprepade köp och förnyelser inga dubbletter.

Webhooks

Om du vill spegla flaggor till din egen databas i stället för att polla prenumererar du på händelserna entitlement_grant.*:
  • entitlement_grant.created anländer redan i tillståndet Delivered, med payloaden feature. Aktivera funktionen.
  • entitlement_grant.delivered utlöses när ett tidigare återkallat grant återställs. Aktivera funktionen igen.
  • entitlement_grant.revoked betyder att åtkomsten har dragits in. Inaktivera funktionen och kontrollera revocation_reason för att välja hur du ska kommunicera detta.
Den här Express-handlern verifierar webhook-signaturen med SDK:t och lagrar sedan flaggans status:
TypeScript
Feature flags utlöser aldrig entitlement_grant.failed, eftersom leveransen sker helt inom Dodo Payments.

Exempel: Pro-planen låser upp avancerade rapporter

  1. Skapa flaggan. Ange feature_id: advanced_reports med metadata { "tier": "pro", "monthly_report_limit": 100 }.
  2. Koppla den till din Pro Plan-prenumerationsprodukt.
  3. En kund prenumererar. Dodo Payments skapar ett grant av typen Delivered och utlöser entitlement_grant.created. Din webhook-handler aktiverar advanced_reports för kunden med en gräns på 100.
  4. Din app styr åtkomsten till funktionen. När dashboarden läses in kontrollerar du den cachade funktionsuppsättningen (eller anropar listEntitlementGrants) och visar rapportfliken endast när advanced_reports finns.
  5. Kunden säger upp prenumerationen. Dodo Payments återkallar grantet och utlöser entitlement_grant.revoked, och din handler inaktiverar funktionen. Om en prenumeration senare återställs genom dunning återställer entitlement_grant.delivered funktionen utan kodändringar.

Rekommenderade metoder

  • Använd stabila feature IDs i snake_case. Din applikationskod kontrollerar dessa strängar, så att byta namn på en av dem är en breaking change på båda sidor.
  • Använd en flagga per funktion. Föredra advanced_reports och api_access som två entitlements framför en enda pro_bundle, så att återkallelser och plankombinationer förblir tydliga.
  • Låt webhooks styra status och verifiera med API:et. Webhooks håller din databas uppdaterad. List-endpointen är sanningskällan för avstämningsjobb och cache-missar.
  • Behandla Revoked som omedelbart. En återkallad flagga betyder att kunden inte längre betalar för funktionen. Styr åtkomsten vid nästa request, inte nästa session.
  • Lägg gränser i metadata, inte i kod. När en kvot ändras behöver du då endast redigera entitlementen. Nya kunder får det nya värdet, och befintliga grants behåller sin köpta ögonblicksbild.
Senast ändrad 26 september 2026