Event-triggered journeys with 8 step types — Email / Push / SMS / Webhook / Update Profile / Wait / Branch / AI — over the same event taxonomy every other module already emits.
Customer.io + Iterable + Braze run journeys but only over the data they have. Sendora journeys run over Sendora data — every event from every module (Analytics, Auth, Support, Push delivery, Email bounce, CSAT rating, KB view, anomaly detection) lands on the same event bus the workflow trigger reads. Branch on a profile trait, send via Email or Push or SMS, update a trait, fire a webhook, run an AI generate/decide/extract step, wait for a delay — 8 step types implemented in `step-executor.ts`. Trigger model is single: `{ eventType, filters }` with wildcard matching. Audience-join, CSAT detractor, KB view all become triggers because each emits a canonical event the workflow can subscribe to.
Features
- 8 starter blueprints in the template gallery — welcome series, cart abandonment, order confirmation, post-purchase feedback, trial ending, re-engagement, birthday, password reset. Clone in one click.
- Event-typed trigger —
{ eventType, filters }with wildcard matching. Any event from any module (auth.user_created, csat.detractor, push.delivered, kb.article_viewed, …) can fire a workflow. Filters narrow by event properties. - 8 step types —
send_email,send_push,send_sms,webhook,update_profile,wait,branch,ai_action. Each implemented inapps/backend/src/modules/automation/step-executor.ts. - AI step type —
ai_actionstep withfeature: generate | decide | extractvia gpt-oss:120b / ministral:14b on Ollama Cloud (or BYOK per-org). - Branching — branch step jumps to ifTrue / ifFalse indexes based on profile trait equality. Standalone delay via
waitstep. - Run history — filter by status (running / paused / completed / failed), cancel an in-flight run, drill into per-step outcomes + audit log.
- Pause / resume mid-flight — flips
workflow_runs.statustopaused; new triggers queue; resume picks up at next step. - Promote.failed webhook + delivery-health metrics in Health module — broken journeys surface, not silently rot.
- Real audience targeting — Audiences from Customers module evaluate at send-time inside the email/push/sms steps. Real-time audience membership; no nightly CDP sync.
Common use cases
Replace Customer.io / Iterable for event-driven lifecycle journeys where the branch + send happens over Sendora-emitted events directly.
Cross-channel campaigns (Push → wait 1h → Email → wait 3d → SMS) without stitching three vendors and three reputations — same `user_id` across all 4 sender step types.
AI-driven personalization — `ai_action: generate` drafts an email body inline, `decide` picks the next branch, `extract` writes a profile trait, all inside the workflow.
Start in minutes. Scale without switching tools.
The free tier covers most side projects. Every module is turn-key and every SDK is first-party.