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 die Berechtigung erstellt und direkt zu delivered verschoben. Es gibt keine pending-Phase, keine Kundenaktion und keine Möglichkeit für ein Lieferversagen.
  • Die Berechtigung trägt eine typisierte feature-Nutzlast: { "feature_type": "boolean", "feature_id": "advanced_reports" }. Ihre Anwendung liest feature_id, um zu entscheiden, was freigeschaltet wird.
  • Stornierungen, Rückerstattungen oder manuelle Widerrufe verschieben die Berechtigung zu revoked, und Ihre Anwendung sieht das Flag verschwinden.
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-Berechtigungen folgen dem Standard- Berechtigungslebenszyklus mit einer Vereinfachung: Es gibt keinen Lieferstep, sodass Berechtigungen niemals in pending verbleiben und niemals zu failed wechseln. 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 delivered mit der feature-Nutzlast an. Aktivieren Sie das Feature.
  • entitlement_grant.delivered — wird ausgelöst, wenn eine zuvor widerrufene Berechtigung wiederhergestellt wird. Aktivieren Sie das Feature erneut.
  • entitlement_grant.revoked — Zugriff entzogen. Deaktivieren Sie das Feature und überprüfen Sie revocation_reason, um Ihre Nachricht zu entscheiden.
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 Metadaten { "tier": "pro", "monthly_report_limit": 100 }.
  2. Anhängen an Ihr Pro-Plan-Abonnementprodukt.
  3. Ein Kunde abonniert. Dodo Payments erstellt eine delivered-Berechtigung und löst entitlement_grant.created aus; Ihr Webhook-Handler aktiviert advanced_reports für den Kunden mit einem Limit von 100.
  4. Ihre App schaltet die Funktion ab. Beim Laden des Dashboards, prüfen Sie die zwischengespeicherte Feature-Menge (oder rufen Sie listEntitlementGrants auf) und rendern Sie das Berichtsfeld nur, wenn advanced_reports vorhanden ist.
  5. Der Kunde storniert. Dodo Payments widerruft die Berechtigung und löst entitlement_grant.revoked aus; Ihr Handler deaktiviert das Feature. Sollte der Kunde später durch Dunning erneut aktiviert werden, stellt entitlement_grant.delivered es wieder her — keine Codeänderungen erforderlich.

Best Practices

  • Verwenden Sie stabile, snake_case Feature-IDs. Ihr Anwendungscode überprüft diese Strings; das Umbenennen eines davon ist eine Unterbrechung auf beiden Seiten.
  • Ein Flag pro Fähigkeit. Bevorzugen Sie advanced_reports + api_access als zwei Berechtigungen über ein einziges pro_bundle — Widerrufungen und Plan-Mixe bleiben sauber.
  • Steuern Sie den Status über Webhooks, überprüfen Sie mit der API. Webhooks halten Ihre Datenbank aktuell; der Endpunkt der Liste ist die Wahrheit für Abstimmungsjobs und Cache-Misses.
  • Behandeln Sie revoked als sofortig. Ein widerrufenes Flag bedeutet, dass der Kunde nicht mehr für die Funktion bezahlt. Sperren Sie beim nächsten Anruf, nicht in der nächsten Sitzung.
  • Setzen Sie Limits in Metadaten, nicht im Code. Eine Quote zu ändern, erfordert dann nur das Bearbeiten der Berechtigung — neue Kunden nehmen es automatisch auf, während bestehende Berechtigungen ihren erworbenen Schnappschuss behalten.
Zuletzt geändert am 31. Juli 2026