HomeProductsAutomation
Automation

Trigger once.
Run forever.
No extra code.

Build multi-step communication workflows — OTP sequences, onboarding drips, payment follow-ups — with a visual canvas or the API. Conditions, delays, and branching included.

Visual canvas + API
Conditions & branching
Delay & scheduling
All Sendexa channels

5

Channels

Workflow steps

10M+

Runs / month

ms

Trigger latency

99.9%

Uptime SLA

0

Code needed

Trigger types

Start from anywhere.
Build from there.

API Trigger

Call the Automation API from your own code to kick off a workflow for a specific user at the exact moment you need it.

Best for

Real-time events: signup, payment, login

📅

Scheduled

Run a workflow at a specific time or on a recurring schedule — hourly, daily, weekly, or via a custom cron expression.

Best for

Weekly digests, payment reminders, reports

🔔

Webhook Event

Trigger a workflow in response to any Sendexa event — message delivered, OTP failed, payment completed — with no extra code.

Best for

Retry flows, escalation chains

📋

List Upload

Upload a CSV of contacts and launch a workflow for each one. Ideal for bulk campaigns with personalised multi-step sequences.

Best for

Bulk onboarding, campaign drips

Examplesendexa.automation.run('wfl_abc123', { user_id: '...', phone: '+233...' })

Building blocks

Six blocks.
Infinite workflows.

T
Trigger

Trigger block

What starts the workflow. API call, schedule, or Sendexa event.

event: user.signup
A
Action

Action block

Do something — send an SMS, email, OTP, voice call, or WhatsApp.

action: otp.send
C
Condition

Condition block

Branch based on a value — user attribute, event outcome, or time.

if: otp.verified == true
D
Delay

Delay block

Wait before the next step. Fixed duration or until a specific datetime.

delay: 300s
B
Branch

Branch block

Split into parallel paths. Each branch runs independently.

fork: [sms_path, email_path]
E
End

End block

Mark the terminal step. Logs a completion event and fires a webhook.

status: workflow.completed

Templates

Start from a template,
ship in minutes.

🔐

OTP with fallback

  1. 1.Send OTP via SMS
  2. 2.Wait 2 min
  3. 3.If not verified → resend via Voice
  4. 4.If still not verified → alert support
Authentication4 steps
🛒

Order lifecycle

  1. 1.Payment confirmed → SMS receipt
  2. 2.Item shipped → SMS + email
  3. 3.Out for delivery → WhatsApp
  4. 4.Delivered → request review
E-commerce4 steps
💳

Payment reminder

  1. 1.3 days before due → email reminder
  2. 2.1 day before → SMS reminder
  3. 3.On due date → WhatsApp alert
  4. 4.7 days overdue → voice call
Fintech4 steps
🎓

User onboarding

  1. 1.Signup → OTP verify
  2. 2.Verified → welcome SMS + email
  3. 3.Day 3 → feature tip SMS
  4. 4.Day 7 → re-engagement if inactive
SaaS / App4 steps

Developer experience

Define workflows
in code or JSON.

Prefer code over clicks? Define workflows programmatically with the Automation API. Version-control your sequences, run them in CI, and deploy alongside your app.

01

Define the workflow — canvas or API

02

Trigger it with client.automation.run()

03

Track runs in the dashboard or via webhook

import Sendexa from "sendexa";

const client = new Sendexa(process.env.SENDEXA_API_KEY);

// Define a workflow
const workflow = await client.automation.create({
  name: "OTP with voice fallback",
  trigger: { type: "api" },
  steps: [
    {
      id: "send_otp",
      type: "action",
      action: "otp.send",
      params: { channel: "sms", expiry: 300 },
    },
    {
      id: "wait",
      type: "delay",
      duration: 120,  // 2 minutes
    },
    {
      id: "check_verified",
      type: "condition",
      condition: "otp.verified == false",
      on_true: "voice_fallback",
      on_false: "end",
    },
    {
      id: "voice_fallback",
      type: "action",
      action: "otp.send",
      params: { channel: "voice" },
    },
  ],
});

// Run it for a user
await client.automation.run(workflow.id, {
  phone: "+233 55 123 4567",
  user_id: "usr_abc123",
});

What's included

Everything to automate
your comms stack.

Visual canvas

Drag-and-drop workflow builder. No code required — add nodes, connect them, and deploy in minutes.

No-codeDrag & dropLive preview

Conditions & branching

Branch on any attribute — user data, event outcome, time of day, or custom variables passed at trigger time.

If / elseMulti-branchDynamic vars

Delays & scheduling

Add timed pauses between steps. Fixed duration, wait-until-datetime, or wait-for-event (e.g. don't proceed until OTP is verified).

Fixed delayWait-untilWait-for-event

All 5 channels

Every workflow can use SMS, Email, WhatsApp, Voice, and Push — mix and match in the same sequence.

SMSEmailWhatsAppVoicePush

Run history & logs

Every workflow run is logged. See which step a user is on, where they dropped off, and the full event timeline.

Per-run logsStep trackingDrop-off analysis

API-first design

Every canvas action has an API equivalent. Define, trigger, pause, and cancel workflows programmatically.

REST APISDK supportCI/CD friendly
Start building today — it's free

Build your first workflow
in under 10 minutes.

Pick a template, customise it, and deploy. No infrastructure to manage, no queues to build. Automation is included on all plans.

Included on all plansNo-code + API accessPre-built templatesCancel anytime