Skip to main content
Un derecho de bandera de función convierte a Dodo Payments en un almacén de banderas de función consciente de la facturación. Adjunta una bandera como advanced_reports a un producto, y cada cliente de pago recibe una concesión que tu aplicación puede verificar vía API o mantener sincronizada con webhooks. Sin plataforma externa, sin OAuth, sin paso de entrega: la concesión en sí es la capacidad.

Qué se entrega

Nada sale de Dodo Payments — la concesión es el entregable:
  • Al realizar la compra, se crea el grant y pasa directamente a Delivered. No existe una fase Pending, no se requiere ninguna acción del cliente y no hay forma de que la entrega falle.
  • El grant contiene un payload feature tipado: { "feature_type": "boolean", "feature_id": "advanced_reports" }. Tu aplicación lee feature_id para decidir qué desbloquear.
  • Una cancelación, un reembolso o una revocación manual mueve el grant a Revoked, y tu aplicación ve desaparecer el indicador.
Usos comunes incluyen la restricción de funciones basadas en planes (Pro desbloquea analíticas), capacidades adicionales (una mejora de “acceso API”), y programas de acceso temprano vendidos como compras únicas.
feature_id es un identificador elegido por el comerciante, no único en todos los derechos. Dos derechos pueden conferir el mismo feature_id — por ejemplo, un plan Pro mensual y uno anual ambos otorgando advanced_reports.

Crear una bandera de función

1

Open Entitlements

En tu panel de Dodo Payments, ve a Derechos y haz clic en + para iniciar un nuevo derecho, luego elige Banderas de Función.
2

Name the flag

Dale a la bandera un Nombre de Presentación para tu panel, un ID de Función que verificará tu aplicación (el panel sugiere uno a partir del nombre), y una Descripción para que tu equipo sepa qué controla.
Formulario de Nueva Bandera de Función con nombre de presentación, ID de función, descripción y entradas de metadatos clave-valor

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

3

Optionally add metadata

Activa Metadatos para adjuntar configuración clave-valor — límites, nombres de niveles, cuotas — que se entrega a tu aplicación junto con la bandera. Consulta Adjuntar límites con metadatos.
4

Confirm

Haz clic en Confirmar. La bandera aparece en tu lista de derechos, lista para adjuntar a productos.
Panel de derechos mostrando la bandera de función de Informes Avanzados con su panel de actividad de concesión

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

Adjuntar a un producto

Abre un producto (o crea uno), encuentra la tarjeta Derechos, y haz clic en + para adjuntar derechos existentes. Selecciona tu bandera de función y haz clic en Hecho.
Panel de adjuntos de derechos con la bandera de función de Informes Avanzados seleccionada

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

La bandera adjunta se muestra en el formulario del producto, y la vista previa del pago la lista bajo Incluye.
Formulario de producto con la bandera de función de Informes Avanzados adjunta en la tarjeta de Derechos

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

Configuración requerida

Crear vía API


Adjuntar límites con metadatos

Una bandera booleana responde “¿tiene este cliente la función?”. Los metadatos responden “¿con qué configuración?”. Los metadatos de derechos aceptan valores de cadena, entero, número y booleano, y cada concesión toma una instantánea congelada de los metadatos del derecho en el momento en que se crea. Ese comportamiento de instantánea es lo que hace que los metadatos sean seguros para usar en los límites del plan:
  • Editar los metadatos del derecho más tarde solo afecta a las futuras concesiones. Los clientes mantienen los límites bajo los que compraron.
  • La instantánea se devuelve en cada concesión como su campo metadata, por lo que una llamada API te da tanto la bandera como su configuración.
Por ejemplo, una bandera advanced_reports con { "tier": "pro", "monthly_report_limit": 100 } permite a tu aplicación desbloquear el panel y hacer cumplir la cuota de 100 informes sin una segunda consulta. Si más tarde aumentas el límite a 250, los clientes existentes se mantendrán en 100 hasta que reciban una nueva concesión (por ejemplo, después de un cambio de plan).
Usa metadatos para límites y configuración; usa feature_id solo para identidad. Codificar límites en el id (advanced_reports_100) fuerza una nueva bandera para cada cambio de límite y rompe las comprobaciones de tu aplicación.

Comprobar las características de un cliente

Lista las concesiones de bandera de función entregadas a un cliente y construye el conjunto de características habilitadas. El endpoint devuelve una fila por concesión en todos los derechos, filtrable por integration_type y status.
La carga útil feature se povis posts tarjetas feature_flag concesiones; es null para cada otro tipo de integración. Consulta la referencia de la API Listar Concesiones de Cliente para la forma completa de respuesta.
Consultar la API en cada solicitud agrega latencia a tu ruta crítica. Cachea el conjunto de características por cliente con un TTL corto (minutos, no horas), e invalida la caché desde tu manejador de webhooks cuando una concesión cambia de estado: esa combinación mantiene rápidas las comprobaciones y revocaciones casi instantáneas.

Ciclo de vida

Los grants de feature flags siguen el ciclo de vida estándar de los grants con una simplificación: no hay paso de entrega, por lo que los grants nunca permanecen en Pending ni pasan a Failed. Las concesiones son idempotentes por derecho y cliente: mientras un cliente tenga una concesión no revocada para una bandera, las compras y renoves repetidas no crean duplicados.

Webhooks

Suscríbete a los eventos entitlement_grant.* para reflejar las banderas en tu propia base de datos en lugar de sondear:
  • entitlement_grant.created — llega ya en Delivered con el payload feature. Activa la funcionalidad.
  • entitlement_grant.delivered — se dispara cuando se restaura un grant revocado anteriormente. Vuelve a activar la funcionalidad.
  • entitlement_grant.revoked — se retira el acceso. Desactiva la funcionalidad y comprueba revocation_reason para decidir qué mensaje mostrar.
TypeScript
No hay entitlement_grant.failed para banderas de función — la entrega ocurre completamente dentro de Dodo Payments y no puede fallar.

Ejemplo: El plan Pro desbloquea informes avanzados

  1. Crea el indicador. feature_id: advanced_reports con los metadatos { "tier": "pro", "monthly_report_limit": 100 }.
  2. Asócialo al producto de suscripción Pro Plan.
  3. Un cliente se suscribe. Dodo Payments crea un grant Delivered y dispara entitlement_grant.created; tu webhook habilita advanced_reports para el cliente con un límite de 100.
  4. Tu aplicación controla el acceso a la funcionalidad. Al cargar el dashboard, comprueba el conjunto de funcionalidades almacenado en caché (o llama a listEntitlementGrants) y muestra la pestaña de informes solo cuando advanced_reports esté presente.
  5. El cliente cancela. Dodo Payments revoca el grant y dispara entitlement_grant.revoked; tu webhook desactiva la funcionalidad. Si el cliente se recupera posteriormente mediante el proceso de cobro de deuda, entitlement_grant.delivered la restaura; no se necesitan cambios de código.

Mejores prácticas

  • Usa ids de feature estables en snake_case. El código de tu aplicación comprueba estas cadenas; cambiarles el nombre es un cambio incompatible en ambos lados.
  • Un indicador por capacidad. Es preferible advanced_reports + api_access como dos entitlements en lugar de un único pro_bundle: la revocación y las combinaciones de planes se mantienen ordenadas.
  • Obtén el estado de los webhooks y verifícalo con la API. Los webhooks mantienen actualizada tu base de datos; el endpoint de lista es la fuente de verdad para los procesos de reconciliación y las ausencias de caché.
  • Trata Revoked como inmediato. Un indicador revocado significa que el cliente ya no está pagando por la funcionalidad. Controla el acceso en la siguiente solicitud, no en la siguiente sesión.
  • Coloca los límites en los metadatos, no en el código. Cambiar una cuota solo requiere editar el entitlement; los nuevos clientes la obtienen automáticamente, mientras que los grants existentes conservan la configuración adquirida.
Última modificación el 6 de agosto de 2026