Skip to main content
Eine Feature-Flag-Berechtigung verwandelt Dodo Payments in einen abrechnungsbewussten Feature-Flag-Speicher. Hängen Sie ein Flag wie advanced_reports an ein Produkt, und jeder zahlende Kunde erhält eine Berechtigung, die Ihre Anwendung über API überprüfen oder mit Webhooks synchron halten kann. Keine externe Plattform, kein OAuth, kein Lieferstep — die Berechtigung selbst ist die Fähigkeit.

Was geliefert wird

Nichts verlässt Dodo Payments — die Berechtigung ist das Lieferbare:
  • Beim Kauf wird der Grant erstellt und wechselt direkt zu Delivered. Es gibt keine Phase Pending, keine Aktion des Kunden und keine Möglichkeit, dass die Bereitstellung fehlschlägt.
  • Der Grant enthält eine typisierte feature-Payload: { "feature_type": "boolean", "feature_id": "advanced_reports" }. Ihre Anwendung liest feature_id, um zu entscheiden, was freigeschaltet werden soll.
  • Durch eine Stornierung, Rückerstattung oder manuelle Aufhebung wechselt der Grant zu Revoked, und Ihre Anwendung erkennt, dass das Flag nicht mehr vorhanden ist.
Häufige Anwendungsfälle umfassen planbasierte Feature-Gatings (Pro schaltet Analysen frei), Zusatzfähigkeiten (ein “API-Zugriff”-Upgrade) und Early-Access-Programme, die als Einmalkäufe verkauft werden.
feature_id ist eine vom Händler gewählte Kennung, die nicht einzigartig für Berechtigungen ist. Zwei Berechtigungen können die gleiche feature_id verleihen — zum Beispiel, ein monatlicher und ein jährlicher Pro-Plan, die beide advanced_reports gewähren.

Erstellen eines Feature-Flags

1

Open Entitlements

Gehen Sie in Ihrem Dodo Payments-Dashboard zu Berechtigungen und klicken Sie auf +, um eine neue Berechtigung zu starten, und wählen Sie dann Feature Flags.
2

Name the flag

Geben Sie dem Flag einen Anzeigenamen für Ihr Dashboard, eine Feature-ID, die Ihre Anwendung überprüfen wird (das Dashboard schlägt eine basierend auf dem Namen vor), und eine Beschreibung, damit Ihr Team weiß, was es steuert.
Neues Feature-Flag-Formular mit Anzeigenamen, Feature-ID, Beschreibung und Metadaten-Schlüssel-Wert-Einträgen

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

3

Optionally add metadata

Schalten Sie Meta-Daten ein, um Schlüssel-Wert-Konfigurationen — Limits, Tiernamen, Quoten — zu verknüpfen, die Ihrer Anwendung zusammen mit dem Flag geliefert werden. Siehe Limits mit Metadaten anhängen.
4

Confirm

Klicken Sie auf Bestätigen. Das Flag erscheint in Ihrer Berechtigungsliste, bereit, mit Produkten verknüpft zu werden.
Berechtigungs-Dashboard, das das Feature-Flag “Advanced Reports” mit seinem Aktivitätspaneel zeigt

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

An ein Produkt anhängen

Öffnen Sie ein Produkt (oder erstellen Sie eines), finden Sie die Berechtigungen-Karte und klicken Sie auf +, um bestehende Berechtigungen zu verknüpfen. Wählen Sie Ihr Feature-Flag und klicken Sie auf Fertig.
Berechtigungen anhängen-Panel mit dem ausgewählten Feature-Flag “Advanced Reports”

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

Das verknüpfte Flag erscheint im Produktformular, und die Checkout-Vorschau listet es unter Enthalten.
Produktformular mit dem verknüpften Feature-Flag “Advanced Reports” in der Berechtigungen-Karte

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

Erforderliche Konfiguration

Erstellung über API


Limits mit Metadaten anhängen

Ein boolesches Flag beantwortet “Hat dieser Kunde die Funktion?”. Metadaten beantworten “Mit welcher Konfiguration?”. Berechtigungsmetadaten akzeptieren Zeichenfolgen, Ganzzahlen, Zahlen und boolesche Werte, und jede Berechtigung nimmt einen eingefrorenen Schnappschuss der Metadaten der Berechtigung zum Zeitpunkt ihrer Erstellung auf. Dieses Schnappschussverhalten macht Metadaten sicher für Planlimits einsetzbar:
  • Das spätere Bearbeiten der Metadaten der Berechtigung betrifft nur zukünftige Berechtigungen. Kunden behalten die Limits, unter denen sie erworben haben.
  • Der Schnappschuss wird bei jeder Berechtigung als sein Feld metadata zurückgegeben, sodass ein API-Aufruf sowohl das Flag als auch die Konfiguration liefert.
Beispielsweise kann ein advanced_reports-Flag mit { "tier": "pro", "monthly_report_limit": 100 } Ihrer Anwendung erlauben, das Dashboard freizuschalten und das 100-Bericht-Quote ohne zweite Abfrage durchzusetzen. Wenn Sie das Limit später auf 250 erhöhen, bleiben bestehende Kunden bei 100, bis sie eine neue Berechtigung erhalten (zum Beispiel nach einem Planwechsel).
Verwenden Sie Metadaten für Limits und Konfigurationen; verwenden Sie feature_id nur für die Identität. Das Kodieren von Limits in der ID (advanced_reports_100) erzwingt ein neues Flag für jede Limitänderung und unterbricht die Prüfungen Ihrer Anwendung.

Features eines Kunden überprüfen

Listen Sie die gelieferten Feature-Flag-Berechtigungen eines Kunden auf und erstellen Sie den Satz aktivierter Features. Der Endpunkt gibt eine Zeile pro Berechtigung über alle Berechtigungen zurück, die nach integration_type und status gefiltert werden können.
Die feature-Nutzlast wird nur bei feature_flag-Berechtigungen befüllt; sie ist null für jeden anderen Integrationstyp. Siehe die List Customer Grants API-Referenz für die vollständige Antwortstruktur.
Das Überprüfen der API bei jeder Anfrage fügt Ihrem Hot Path Latenz hinzu. Cachen Sie die Feature-Menge pro Kunde mit einer kurzen TTL (Minuten, nicht Stunden) und ungültigen den Cache aus Ihrem Webhook-Handler, wenn sich der Status einer Berechtigung ändert — diese Kombination hält Prüfungen schnell und Widerrufe nahezu sofort.

Lebenszyklus

Feature-Flag-Grants folgen dem standardmäßigen Grant-Lebenszyklus mit einer Vereinfachung: Es gibt keinen Bereitstellungsschritt, daher verbleiben Grants nie in Pending und wechseln nie zu Failed. Berechtigungen sind idempotent pro Berechtigung und Kunde: Solange ein Kunde eine nicht widerrufene Berechtigung für ein Flag hat, erzeugen wiederholte Käufe und Verlängerungen keine Duplikate.

Webhooks

Abonnieren Sie die entitlement_grant.*-Ereignisse, um Flags in Ihre eigene Datenbank zu spiegeln, anstatt zu pollen:
  • entitlement_grant.created — kommt bereits als Delivered mit der feature-Payload an. Aktivieren Sie das Feature.
  • entitlement_grant.delivered — wird ausgelöst, wenn ein zuvor aufgehobener Grant wiederhergestellt wird. Aktivieren Sie das Feature erneut.
  • entitlement_grant.revoked — Zugriff entzogen. Deaktivieren Sie das Feature und prüfen Sie revocation_reason, um Ihre Kommunikation festzulegen.
TypeScript
Es gibt keinen entitlement_grant.failed für Feature-Flags — die Lieferung erfolgt vollständig innerhalb Dodo Payments und kann nicht fehlschlagen.

Beispiel: Pro-Plan schaltet erweiterte Berichte frei

  1. Erstellen Sie das Flag. feature_id: advanced_reports mit den Metadaten { "tier": "pro", "monthly_report_limit": 100 }.
  2. Verknüpfen Sie es mit Ihrem Abonnementprodukt Pro Plan.
  3. Ein Kunde abonniert. Dodo Payments erstellt einen Delivered-Grant und löst entitlement_grant.created aus; Ihr Webhook-Handler aktiviert advanced_reports für den Kunden mit einem Limit von 100.
  4. Ihre Anwendung steuert den Feature-Zugriff. Prüfen Sie beim Laden des Dashboards das zwischengespeicherte Feature-Set (oder rufen Sie listEntitlementGrants auf) und rendern Sie den Berichte-Tab nur, wenn advanced_reports vorhanden ist.
  5. Der Kunde kündigt. Dodo Payments hebt den Grant auf und löst entitlement_grant.revoked aus; Ihr Handler deaktiviert das Feature. Wenn der Kunde später durch Dunning wiederhergestellt wird, aktiviert entitlement_grant.delivered es erneut – es sind keine Codeänderungen erforderlich.

Best Practices

  • Verwenden Sie stabile Feature-IDs im snake_case-Format. Ihr Anwendungscode prüft diese Zeichenfolgen; die Umbenennung einer ID ist auf beiden Seiten eine Breaking Change.
  • Ein Flag pro Funktion. Bevorzugen Sie advanced_reports + api_access als zwei Entitlements gegenüber einem einzelnen pro_bundle – Aufhebungen und Kombinationen von Plänen bleiben übersichtlich.
  • Steuern Sie den Status über Webhooks und verifizieren Sie ihn mit der API. Webhooks halten Ihre Datenbank aktuell; der Listen-Endpunkt ist die maßgebliche Quelle für Abgleich-Jobs und Cache-Misses.
  • Behandeln Sie Revoked als sofort wirksam. Ein aufgehobenes Flag bedeutet, dass der Kunde nicht mehr für das Feature bezahlt. Steuern Sie den Zugriff bei der nächsten Anfrage, nicht erst bei der nächsten Sitzung.
  • Legen Sie Limits in den Metadaten statt im Code fest. Wenn Sie ein Kontingent ändern, müssen Sie anschließend nur das Entitlement bearbeiten – neue Kunden übernehmen es automatisch, während bestehende Grants ihren erworbenen Snapshot behalten.
Zuletzt geändert am 21. August 2026