Building a campaign
1
Channel & audience
Choose email, SMS or push, then a segment (or everyone subscribed).
Suppressed and unsubscribed contacts are removed automatically.
2
Content
Start from a gallery template, one of your own, or build fresh. Email
opens the block builder; SMS opens the composer with a sender-ID picker.
3
Schedule
Send now, schedule for later, or use best-time / throttled (below).
4
Review
The review step shows the frozen audience size and a send-test. Confirm
to send.
Scheduling modes
Immediate
Fan out now (or at the scheduled time).
Best time
Per-recipient send-time optimisation. Each contact gets their most-engaged
local hour from the last 90 days, within your bounds.
Throttled rollout
Split the audience into percentage batches (must sum to 100%, ≤12
batches) with per-batch delays.
Best-time and throttled only change when the send job runs. Every gate —
suppression, consent, frequency caps, quiet hours, Shabbat, the SMS wallet —
still runs at fire time.
Durable scheduling
A scheduled campaign persists its intent in the database, not just in the job queue. A reconciler re-creates any missing job every minute, so a queue restart can’t silently drop a send.Approval workflow (optional)
Workspaces can require campaigns to pass owner/admin sign-off before sending. It’s a plan-gated, opt-in toggle in Settings → Workflow.1
Submit
A non-approver submits the campaign for approval with a note.
2
Decide
An owner or admin approves, rejects, or requests changes. The submitter
can’t self-approve.
3
Guard
An unapproved campaign can’t reach the send path. Editing content after
approval revokes it — you can’t get sign-off then swap the message.
Analytics
Every campaign has a report — sends, delivered, opens, clicks, bounces, unsubscribes — atcampaigns/<id>. Money values are in agorot internally and shown in shekels. Deferred analytics tabs (MTA, cost, funnel, cohort) show an “Available in Pro” hint rather than fabricated numbers.
Sending via the API
Campaigns are a UI construct. For programmatic sends, use transactional messages (POST /public/messages/*) or trigger flows via event ingest.
