Send messages
Compose one-off sends and save bulk campaigns from the Send screen.
Open Send → Send in the sidebar.
What this page is for
The Send screen is where you compose outbound messages across WhatsApp, Email, Telegram, and WABA. Use it for:
- One recipient — send now or schedule a single message.
- Many recipients — enter a campaign name, pick a bulk target (CSV, spreadsheet, contacts, group, or WhatsApp group), and click Save Campaign to queue a tracked broadcast.
The page is organized in four numbered steps: Campaign name, Channels, Target, and Timing.
Sample data shown.
Step 1 — Campaign name
| Control | What it does |
|---|---|
| Title | Optional for a single recipient. Required for bulk targets (CSV, spreadsheet, multiple contacts, a group, or multiple WhatsApp groups). Saved campaigns appear under Send → Campaign. |
The blue note at the top reminds you that a campaign name is needed for multiple targets.
Step 2 — Channels
Enable one or more channels. Each enabled channel expands to show Send from, Template, and optional fallback settings.
Sample data shown.
| Control | What it does |
|---|---|
| Channel row (WhatsApp, Email, Telegram, WABA) | Turn a channel on or off. All channels start unchecked — pick only what you need. |
| Use as fallback | When on, that channel joins a fallback tier instead of the primary tier. Primary channels send first. |
| Sequence | Fallback tier order. Lower numbers run first; channels with the same sequence send together. |
| Send from | Searchable list of connected devices, bots, or email senders for that channel. |
| Template | Searchable list of approved, active templates. Click a row to select; a preview appears below. |
| Cascade summary | Shows Primary → Fallback 1 → Fallback 2 order. A fallback tier runs only if every channel in the previous tier failed. |
Fallback example
- WhatsApp — primary (fallback off)
- WABA — fallback, sequence 1
- Telegram — fallback, sequence 1 (sends with WABA if WhatsApp fails)
- Email — fallback, sequence 2 (runs only if WhatsApp, WABA, and Telegram all fail)
Channels in the same fallback sequence send in parallel.
Step 3 — Target
Choose who receives the message. Available options depend on whether you entered a campaign name and whether timing is set to Recurring.
Sample data shown.
Target types
| Target | Best for | Notes |
|---|---|---|
| Input | One-off test sends | One phone, email, chat ID, or WABA number per enabled channel. |
| CSV | Uploaded recipient list | Upload a .csv file. Requires a campaign name. |
| Spreadsheet | Google Sheets or CSV URL | Paste a published sheet or direct CSV link. Requires a campaign name. |
| Contact | Directory contacts | One contact without a campaign name; All contacts or a multi-select with a campaign name. |
| Group | Dashboard contact group | All members of a group. Campaign only. |
| WA Group | WhatsApp group chat | One group for a single send; multiple groups with a campaign name. WhatsApp must be the only enabled channel. |
Which targets appear when
| Mode | Available targets |
|---|---|
| No campaign name | Input, Contact (one), CSV, Spreadsheet, Group, WA Group (one, WhatsApp-only) |
| Campaign name, send Now or Schedule | CSV, Spreadsheet, Contact, Group, WA Group |
| Campaign name, Recurring | Spreadsheet, Group, Contact (all or selected) |
CSV and spreadsheet columns
Columns depend on the channels you enabled:
| Channel enabled | Column name |
|---|---|
phone | |
email | |
| Telegram | telegram |
| WABA | waba |
| Optional (all modes) | name — used as a template variable |
For Spreadsheet, use a Google Sheet published to the web or a direct CSV URL with the same column headers.
Step 4 — Timing
| Control | What it does |
|---|---|
| Now | Send immediately (one recipient) or start the campaign queue right away. |
| Schedule | Pick a Date and Time for future delivery. Without a campaign name, click Send to queue a one-off job on Send → Schedule. With a campaign name, click Save Campaign — the campaign appears under Send → Campaign with status Scheduled. |
| Recurring | Campaign only. Set a start date/time and repeat every N minutes, hours, days, weeks, months, or years. Limits targets to Spreadsheet, Group, or Contact (all or selected). |
| Delay between recipients | Campaign only. Optional wait (0–3600 seconds) before each recipient. Same min and max = fixed delay; different values = random delay in that range. |
Sample data shown.
The footer shows the recipient count and the action button:
| Button | When it appears |
|---|---|
| Send | No campaign name — one recipient. |
| Save Campaign | Campaign name entered — bulk send saved to Send → Campaign. |
Recurring campaigns
Recurring is a campaign-only timing mode. Use it when the same message should go out on a fixed interval and the recipient list may change between runs — for example a Google Sheet you update weekly, or a contact group that grows over time.
Recurring is not available for one-off sends (no campaign name). If you clear the campaign name while Recurring is selected, timing resets to Now.

Sample data shown.
How to set up recurring
- Enter a Title in step 1 (Campaign name).
- Configure Channels and templates as usual.
- In step 3 (Target), choose Spreadsheet, Group, or Contact (all contacts or a custom selection) — other target types are hidden while Recurring is selected.
- In step 4 (Timing), click Recurring (the third option, beside Now and Schedule).
- Set Start — date and time for the first run.
- Set Every — a number and period: minute(s), hour(s), day(s), week(s), month(s), or year(s).
- Optionally set Delay between recipients (same as other campaigns).
- Click Save Campaign.
What happens on each run
When a recurring campaign runs, Kirisan re-reads the live source:
| Target | On each run |
|---|---|
| Spreadsheet | Fetches the current sheet or CSV URL again — new rows are included, removed rows are skipped. |
| Group | Loads the current members of the contact group. |
| Contact | Reloads All contacts or your Selected list from the directory. |
Each execution is one run. After a run finishes, the campaign waits until the next interval, then starts another run with a fresh snapshot of the source. Track runs on the campaign detail page.
Recurring vs Schedule
| Schedule | Recurring | |
|---|---|---|
| Runs | Once, at the chosen date and time | Repeatedly, every N minutes/hours/days/etc. |
| Targets | CSV, spreadsheet, contacts, group, WA group | Spreadsheet, Group, or Contact |
| Best for | One-time blast at a specific moment | Newsletters, sheet-driven lists, groups that change |
For a single future send to one recipient, leave the campaign name empty and use Schedule — manage it on Scheduled sending. For a one-time bulk blast at a specific moment, save a campaign with Schedule timing instead.
Templates and variables
Channel templates live under Channel → channel → Templates. In template bodies:
{{name}}— per-template or per-recipient values (set in the editor or passed at send time)[[u-name]]— account-wide custom constants from Resources → Variables → Custom[[date-…]]/[[time-…]]— built-in date and time tokens
See WhatsApp Templates — Variables for a full breakdown.
When Input is the target and your templates use variables, fill in the variable fields shown below the recipient inputs before sending.
Media in templates — set a File URL in the template editor (direct HTTPS link or {{variable}}). File name is optional — leave it empty and Kirisan adds the extension from the file.
WhatsApp location — choose Location in the template editor. Only latitude and longitude are sent; there is no message or caption. See WhatsApp Templates — Location.
After sending
Every message appears in:
- Logs → History — cross-channel activity
- The channel’s own Logs screen — filterable send log with status and preview
Failed sends show an error status so you can retry or fix the device configuration. Saved campaigns open from Send → Campaign with live progress and per-recipient status.
Related
- Campaigns — track and audit saved bulk sends
- Scheduled sending — manage the schedule queue
- Send API — send programmatically with
/v1/send - API errors — read status codes and channel failure reasons