Campaigns
A campaign sends an approved template to an audience, respecting the provider's rules. It is the recommended path to resume contact outside the 24-hour window.
Life cycle
| State | Meaning |
|---|---|
| Draft | Being assembled; can be edited, dispatched, or deleted |
| Scheduled | With a set date; can be canceled |
| Sending | In execution |
| Finished | Completed |
| Canceled | Interrupted by the operator |
| Failed | Send error |
The editing rules follow the state: only a draft or a scheduled campaign can be edited, and only a draft can be dispatched on the spot. An A/B test variant is only editable together with the parent campaign.
Assembling a campaign
- Name and channel — the channel defines the available templates and rules.
- Audience — where the recipient list comes from:
- CSV uploaded by you (UTF-8, with a header);
- report — a pre-configured contact list, marked as eligible for campaign (
eligible).
- Template — choose an approved template on that channel. The system shows the parameters it expects.
- Field map (
fieldsMap) — link each template parameter to a column of the audience. The map must cover all the template fields and cannot point to non-existent columns. - Scheduling — send now, choose the date/time, or schedule the creation of a draft with
send_time. - Dispatch or scheduling.
A/B testing
A/B splits the audience between variants to find out what works best. There are 2 to 10 variants, and the test always has three decisions: the type, the winning criterion, and the duration.
Test type
| Type | What changes between the variants | When to use |
|---|---|---|
Message (template_message) | The template of each variant | You have two text approaches and want to know which one converts |
Send time (send_time) | The time of each variant | The message is the same; the question is when to talk to the customer |
Winning criterion
| Criterion | How the winner is chosen | Requires duration? |
|---|---|---|
Split only (split_only) | There is no winner: the audience is merely split between the variants | No |
Reads (read) | Whoever has more reads | Yes |
Delivery and read (delivery_read) | Whoever has more deliveries and, on a tie, more reads | Yes |
Manual (manual) | The operator decides, after seeing the numbers | Yes |
Ties are resolved by the oldest variant; if it is still a tie, by the order of the identifier. Nothing is random.
Percentage rules (the most confusing point)
| Criterion | Sum of the percentages |
|---|---|
| Split only | Must add up to exactly 100% — the entire audience is split |
| Reads, Delivery and read, or Manual | Must be less than 100% — what is left over is reserved for the winner and is sent at the end of the test |
A 3-variant test with equal percentages, therefore, is 33.33 + 33.33 + 33.34 — and not 33.33 three times: the sum must add up to exactly 100%. With a winner, each variant receives percentage × audience (a minimum of 1 recipient, even with a small audience).
Duration
The duration (minuto, hora, dia, or semana) counts from the send of the last variant and defines two moments: when the test closes and when the rest of the audience receives the winning variant. It is mandatory for all criteria, except split only.
Validations the product applies
| Type | Requirements |
|---|---|
| Message | Each variant needs an approved template on the channel, and two variants cannot use the same template |
| Time | Each variant needs a scheduling; at most one can be "now"; two variants cannot fall on the same minute |
The campaign phases
| Phase | What is happening |
|---|---|
not_started | The test has not started yet |
picking_winner | The variants have been sent; the product is working out the result |
awaiting_manual_winner | The criterion is manual and the choice is waiting for you |
winner_chosen | Winner marked; the rest of the audience has been (or will be) dispatched |
A variant can only be edited together with the campaign — there is no editing just one of them. And promotion to winner is only accepted in the correct phase; outside it, the response says why.
Example 1 — message test
Goal: to know which re-engagement text customers read the most.
- Type Message; variant A with the template "buy again" and variant B with "we miss you".
- Criterion Reads; each variant with 20% of the audience; duration of 4 hours.
- Result: 40% of the audience received the two approaches, the product worked out which one had more reads, and the remaining 60% received the winner.
Use this format when what you want to decide is what to say.
Example 2 — time test
Goal: to find out whether the customer replies more in the morning or at the end of the day.
- Type Time; variant A at 09:00, variant B at 19:00; the same template in both.
- Criterion Split only, 50% + 50%; no duration.
- Result: the entire audience received the message — half in the morning, half in the evening — and the report tells you which window had more reads or replies.
Use this format when what you want to decide is when to talk. And if, after measuring, you want to act on the result, repeat the test with the Reads criterion and 30% + 30% plus a duration: the remaining 40% receive it at the winning time.
Tracking
The campaign screen shows the progress by state, and the campaign dashboard brings the delivery and read metrics by template and by variant.
Ad tracking
Measuring paid Google and Meta ads that lead the customer to start the conversation is a separate feature, unrelated to broadcast campaigns. See Ad tracking.
Common errors
| Error | What it means |
|---|---|
campaign_not_dispatchable | Only drafts can be dispatched immediately |
campaign_not_cancellable | Only scheduled campaigns can be canceled |
campaign_not_deletable | The state does not allow deletion |
template_not_approved | The chosen template is not approved on this channel |
mapping_incomplete | The fieldsMap does not cover the template or uses a non-existent column |
audience_invalid_csv | CSV without a header or without data rows |
report_not_eligible | The chosen report cannot be a campaign audience |
schedule_in_past | Scheduling date in the past |
See also Troubleshooting.