Skip to main content
Los webhooks permiten que tu aplicación reciba notificaciones HTTP en tiempo real cuando ocurren eventos en Commet — como una suscripción que se activa, un pago que falla, o un recibo que se crea.

Cómo funciona

  1. Registra un endpoint URL en el dashboard de Commet
  2. Selecciona los eventos que quieres recibir
  3. Cuando ocurre un evento, Commet envía un request POST a tu URL con la data del evento

Desarrollo local

Usa el CLI de Commet para reenviar eventos de webhook a tu servidor local en tiempo real — sin necesidad de herramientas de tunneling:
El CLI se conecta al stream de eventos de Commet y reenvía cada webhook directamente a tu URL local. Vas a ver cada evento, su status de respuesta y el tiempo en la terminal:
Puedes apuntar a cualquier URL local — un hostname custom, otro puerto, o un path específico:
Filtra eventos específicos con --events:
El signing secret se muestra cuando la sesión inicia. Configúralo como COMMET_WEBHOOK_SECRET en tu .env para verificar firmas localmente con el mismo código que vas a usar en producción.

Estructura del payload

Cada webhook entrega un payload JSON con este envelope:
El mismo evento se reintenta con el mismo id cuando tu endpoint no responde 2xx, así que guardá los ids procesados y descartá duplicados.

Manejo de webhooks

Recibe eventos exponiendo un endpoint HTTP. El SDK de Node.js incluye un handler dedicado para Next.js que verifica firmas y rutea eventos automáticamente; en otros lenguajes, verifica el payload y despacha según event.
app/api/webhooks/commet/route.ts

Verificando firmas manualmente

Si no usas @commet/next, verifica la firma HMAC-SHA256 con el SDK:

Headers

Commet envía estos headers con cada request de webhook:

Política de reintentos

Si tu endpoint devuelve un status code distinto de 2xx o hace timeout (10 segundos), Commet reintenta con backoff exponencial. La entrega inicial cuenta como el primer intento, seguida de hasta 7 reintentos — 8 intentos en total en una ventana de aproximadamente 8 horas: Después de 8 intentos fallidos (la entrega inicial más 7 reintentos), la entrega se marca como fallida y enviamos un email al destinatario de notificaciones de tu organización con la URL del endpoint, el tipo de evento, y la última response que recibimos (status code HTTP o código de error).

Auto-desactivación de endpoints rotos

Si tres eventos consecutivos fallan al entregarse, Commet desactiva automáticamente el endpoint para que deje de consumir reintentos. Vas a recibir un segundo email confirmando que el endpoint fue desactivado. Una vez que arregles el problema en tu receptor, reactiva el endpoint desde el dashboard de Commet en Settings → Webhooks → Endpoints. Los eventos que llegaron mientras el endpoint estaba desactivado no se reenvían automáticamente — contacta a soporte si necesitas recuperar eventos perdidos. Puedes monitorear el estado de entrega, inspeccionar payloads y reintentar entregas individuales desde el dashboard en cualquier momento.

Ciclo de vida del status de suscripción

Cada webhook subscription.* incluye un campo status. Estos son los valores válidos y cuáles otorgan acceso a tu producto: Flujo típico:
  • Sin trial, pending_payment pasa directo a active cuando el primer cobro confirma; con trial, pasa a trialing.
  • trialing → active ocurre cuando el trial convierte — y también cuando expira: la expiración del trial activa la suscripción y comienza la facturación regular.
  • active ⇄ past_due: una renovación fallida inicia el dunning; un pago recuperado devuelve la suscripción a active.
  • canceled es terminal: se llega cuando una cancelación programada se ejecuta al fin del período o cuando el dunning agota sus reintentos.
Regla práctica: condiciona el acceso con status === "active" || status === "trialing". Apóyate en subscription.activated para activar acceso y en subscription.canceled para revocarlo.