Campaigns
Campaigns are bulk sends: you pick a channel connector, choose the message (an approved WhatsApp template or a custom email), load a list of recipients with their variable values, and send to everyone at once. Each recipient's reply is routed into a conversational flow you choose, so the campaign is not just a blast — it is the entry point of a conversation.
The list view shows every campaign with its delivery metrics; the detail view shows the configuration, the recipient table with per-recipient status, and the send action.
Creating a Campaign
Configuration Fields
| Field | Description |
|---|---|
| Name | Display name of the campaign |
| Channel | WhatsApp or Email — locked after creation |
| Connector | The channel connector that sends the messages (a WhatsApp number or an email inbox) — locked after creation |
| Template (WhatsApp) | An approved template pulled from the connector; its variables and examples load automatically |
| Subject and Body (Email) | Free-text subject and HTML body; {{placeholder}} tokens become variables |
| Target Flow | The conversational flow that handles recipient replies |
Variables
You do not map variables manually. For WhatsApp, they come from the template definition; for email, they are parsed from {{placeholder}} tokens in the subject and body. The extracted variable names become the column headers your recipient file must provide.
Adding Recipients
File Upload
Upload an .xlsx, .xls, or .csv file. The required columns are:
phone(WhatsApp) oremail(Email) — the destination- One column per template variable, matching the variable name exactly
metadata(optional) — a JSON object attached to the recipient
You can download a pre-built CSV template from the campaign with the correct headers and an example row. After upload, the file is validated in real time; validation errors are reported per row (up to 40 shown).
Manual Entry
Add recipients row by row in the UI: destination, one field per variable, and an optional metadata JSON field. Invalid JSON in the metadata field blocks the row from being added.
Sending
The Send action delivers the message to every recipient still in pending status. Sending is immediate — there is no scheduler and no separate test send. The Send button is disabled when there are no pending recipients.
Lifecycle and Statuses
Campaign Statuses
| Status | Meaning |
|---|---|
draft | Configured but not sent; still editable |
sending | Send in progress |
sent | All messages were sent |
partial | Some messages sent, some failed |
failed | The send operation failed |
Recipient Statuses
| Status | Meaning |
|---|---|
pending | Waiting to be sent |
sent | Handed off to the provider |
delivered | Delivered to the recipient |
read | Read by the recipient (WhatsApp only) |
failed | Send or delivery failed, with the error message |
responded | The recipient replied |
Actions
| Action | Availability |
|---|---|
| Edit | Draft campaigns only |
| Send | When there are pending recipients |
| Add Recipients | Any time before/between sends |
| Reuse | Duplicates the campaign as a new draft |
| Delete | Removes the campaign |
Metrics
The campaign list shows aggregate counters per campaign: total recipients, sent, delivered, read, and responded. The detail view breaks this down per recipient, including the first response text when the recipient replied.
Gotchas
- Channel and connector are locked after creation. To send through a different number or inbox, reuse the campaign as a new draft.
- Variable columns must match by name. The file's headers must match the template's variable names exactly — download the CSV template to get them right.
- Read receipts are WhatsApp-only. Email campaigns will not show
readstatus. - All replies land in one flow. Every recipient response is routed to the campaign's target flow; there is no per-recipient routing.
- WhatsApp templates must be approved. The template picker only offers templates already approved on the connector's WhatsApp account.