DocumentacionPasos de la secuencia

Pasos de la secuencia

Pasos SEND_EMAIL y WAIT, retardos, reglas de activacion y edicion en DRAFT.

Una secuencia se construye con pasos ordenados. Solo hay dos tipos de paso, y solo puedes editarlos mientras la secuencia esta en DRAFT.

Tipos de paso

stepTypeQue haceCampos que usa
SEND_EMAILEnvia un emailtemplateVersionId (version PUBLISHED), subject opcional
WAITEspera antes del siguiente pasodelayMinutes (>= 1)

Los pasos se ordenan por position (entero >= 0).

Anadir un paso

POST /sequences/{id}/steps
Authorization: Bearer <apiKey o accessToken>
X-Tenant-Id: {tenantId}
Content-Type: application/json

{
  "stepType": "SEND_EMAIL",
  "position": 0,
  "templateVersionId": "ver_123"
}
CampoRequeridoNotas
stepTypeSiSEND_EMAIL o WAIT
positionNoOrden del paso (entero >= 0)
delayMinutesSolo en WAITMinutos de espera (>= 1)
templateVersionIdSolo en SEND_EMAILVersion de plantilla en estado PUBLISHED
subjectNoSobrescribe el asunto (hasta 998 caracteres)

Un paso WAIT de 1440 minutos espera un dia antes del siguiente envio:

{
  "stepType": "WAIT",
  "position": 1,
  "delayMinutes": 1440
}

Endpoints de pasos

MetodoRutaScopeDescripcion
POST/sequences/:id/stepssequences:writeAnadir paso (solo DRAFT)
PATCH/sequences/:id/steps/:stepIdsequences:writeEditar paso (solo DRAFT)
DELETE/sequences/:id/steps/:stepIdsequences:writeBorrar paso (solo DRAFT)

Reglas de activacion

Al llamar a POST /sequences/:id/activate se valida la cadena de pasos. Debe cumplir:

  • Al menos un paso.
  • Al menos un paso SEND_EMAIL (una secuencia solo de esperas no envia nada).
  • Nunca dos WAIT consecutivos — junta las esperas en un solo paso.

Si la cadena no es valida, la activacion falla y la secuencia sigue en DRAFT.

Como se ejecutan los retardos

El motor agrupa las esperas: cuando termina un envio, busca el siguiente SEND_EMAIL, suma los delayMinutes de los WAIT intermedios y programa un job diferido en BullMQ (delayMs = delayMinutes * 60000). Cada job es idempotente, con reintentos y backoff exponencial, asi que un reintento nunca duplica el envio. El email sale por el pipeline normal — con supresiones y cuota aplicadas, y routing de idioma por contacto.