Las dos formas
Cuál recibes depende del tipo de secuencia al que pertenece el paso, y el campoevent te lo dice sin tener que adivinar.
| Secuencia | event | Lleva |
|---|---|---|
| Un recorrido en el que hay personas inscritas | sequence.node.webhook | Un contacto, cuando pasa por el paso |
| Una serie en fecha fija | sequence.series.webhook | Un lote de contactos: la audiencia de ese paso |
Un contacto
json
{
"event": "sequence.node.webhook",
"occurredAt": "2026-09-21T09:00:00.000Z",
"sequence": {"id": "…", "name": "Onboarding"},
"node": {"id": "…"},
"contact": {
"id": "…",
"email": "alice@example.com",
"firstName": "Alice",
"lastName": null
}
}Un lote
json
{
"event": "sequence.series.webhook",
"occurredAt": "2026-09-21T09:00:00.000Z",
"sequence": {"id": "…", "name": "Spring launch"},
"node": {"id": "…"},
"batch": {"index": 3, "size": 500},
"contacts": [
{
"id": "…",
"email": "alice@example.com",
"firstName": "Alice",
"lastName": null
}
]
}batch.index es la posición de ese lote dentro de una ejecución del paso, contando desde cero, y batch.size es cuántos contactos lleva. El par es estable: si alguna vez ves el mismo node.id + batch.index dos veces para la misma ejecución, son los mismos contactos, y eso es lo que te permite reconocer un lote que ya procesaste.
La audiencia se congela cuando empieza el paso. Los contactos que llegan mientras salen los lotes pertenecen al paso siguiente, no a este.
Lo que nunca contiene
Tres cosas, y ninguna por casualidad:- ningún secreto: ninguna clave de API, y ningún enlace ni token de baja, que es una capacidad y no un identificador;
- ningún id de organización;
- no se lee ninguna respuesta tuya: el cuerpo que devuelves se descarta sin abrirlo.
Qué exigimos a tu URL
- Solo
https. Una URLhttpsimple se rechaza al publicar. - Una dirección accesible públicamente. Las direcciones privadas, locales e internas se rechazan, incluido un nombre de host perfectamente público que resuelva a una de ellas, e incluida una dirección alcanzada a través de una redirección. Cada salto se vuelve a comprobar.
- Como máximo tres redirecciones.
- Una respuesta en cinco segundos. Pasado ese tiempo, la llamada es un tiempo agotado. Responde primero, trabaja después: confirma la recepción de la solicitud y haz el procesamiento aparte. Un lote está dimensionado para caber en esa ventana, así que mantén tu handler rápido antes que exhaustivo.
2xx es un éxito. Todo lo demás es un error, y no se adivina nada al respecto.
Cuando falla
Una llamada fallida nunca se reintenta. Una llamada webhook sale como máximo una vez:
reintentar podría crear el mismo pedido, la misma tarea o el mismo registro dos veces de tu lado.
Una llamada que falla es, para ti, una llamada que nunca ocurrió.
| Se muestra | Significado |
|---|---|
| correcta | Tu endpoint respondió un 2xx. |
| error | Tu endpoint respondió otra cosa: se muestra el código de estado. |
| tiempo agotado | No volvió nada en cinco segundos. |
| destino rechazado | Nuestras reglas rechazaron la dirección antes de enviar nada. |