DocumentazioneStep della sequenza

Step della sequenza

Step SEND_EMAIL e WAIT, ritardi, regole di attivazione e modifica solo in DRAFT.

Una sequenza si costruisce con step ordinati. Esistono solo due tipi di step e puoi modificarli solo mentre la sequenza e in DRAFT.

Tipi di step

stepTypeCosa faCampi che usa
SEND_EMAILInvia un'emailtemplateVersionId (una versione PUBLISHED), subject opzionale
WAITAttende prima dello step successivodelayMinutes (>= 1)

Gli step sono ordinati per position (intero >= 0).

Aggiungere uno step

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"
}
CampoObbligatorioNote
stepTypeSiSEND_EMAIL o WAIT
positionNoOrdine dello step (intero >= 0)
delayMinutesSolo WAITMinuti di attesa (>= 1)
templateVersionIdSolo SEND_EMAILVersione di template in stato PUBLISHED
subjectNoSovrascrive l'oggetto (fino a 998 caratteri)

Uno step WAIT di 1440 minuti attende un giorno prima dell'invio successivo:

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

Endpoint degli step

MetodoPercorsoScopeDescrizione
POST/sequences/:id/stepssequences:writeAggiungi step (solo DRAFT)
PATCH/sequences/:id/steps/:stepIdsequences:writeModifica step (solo DRAFT)
DELETE/sequences/:id/steps/:stepIdsequences:writeElimina step (solo DRAFT)

Regole di attivazione

La chiamata a POST /sequences/:id/activate valida la catena di step. Deve avere:

  • Almeno uno step.
  • Almeno uno step SEND_EMAIL (una sequenza di sole attese non invia nulla).
  • Mai due WAIT consecutivi — unisci le attese in un unico step.

Se la catena non e valida, l'attivazione fallisce e la sequenza resta in DRAFT.

Come vengono eseguiti i ritardi

Il motore raggruppa le attese: quando un invio termina cerca il successivo SEND_EMAIL, somma i delayMinutes degli step WAIT intermedi e pianifica un job differito in BullMQ (delayMs = delayMinutes * 60000). Ogni job e idempotente, con retry e backoff esponenziale, quindi un retry non duplica mai un invio. L'email esce dal pipeline normale — con soppressioni e quota applicate, e routing di lingua per contatto.