Cómo funciona
- Registra un endpoint URL en el dashboard de Commet
- Selecciona los eventos que quieres recibir
- Cuando ocurre un evento, Commet envía un request
POSTa 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:--events:
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únevent.
- Node.js
- Python
- Go
- Java
- PHP
app/api/webhooks/commet/route.ts
Verificando firmas manualmente
Si no usas@commet/next, verifica la firma HMAC-SHA256 con el SDK:
- Node.js
- Python
- Go
- Java
- PHP
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 webhooksubscription.* incluye un campo status. Estos son los valores válidos y cuáles otorgan acceso a tu producto:
Flujo típico:
- Sin trial,
pending_paymentpasa directo aactivecuando el primer cobro confirma; con trial, pasa atrialing. trialing → activeocurre 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 aactive.canceledes terminal: se llega cuando una cancelación programada se ejecuta al fin del período o cuando el dunning agota sus reintentos.
status === "active" || status === "trialing". Apóyate en subscription.activated para activar acceso y en subscription.canceled para revocarlo.