Campaigns & contacts
Campaigns send one personalized WhatsApp message to an audience of your contacts, for example an order update to every customer of a store, a school announcement to subscribed parents, or a sale to opted-in shoppers.
Campaigns are consent-based:
- People who opted out are never messaged.
- By default, only people with a recorded opt-in are messaged.
- Messages are paced per WhatsApp number and never exceed its sending limits.
WhatsTIG does not support unsolicited bulk messaging, purchased or scraped lists, or ways around WhatsApp's limits. See the acceptable use policy. Numbers that send unwanted messages get reported and banned by WhatsApp.
Campaigns are included in the Starter plan and above. Contacts are available on every plan.
1. Contacts
A contact is a person the project can reach. Contacts are added:
- automatically when someone messages one of your numbers
- with the API (
POST /v1/contacts,POST /v1/contacts/batch) - by importing a CSV (Contacts → Import CSV)
- in the dashboard (Contacts → Add contact)
Contacts have a name, tags, up to 30 custom attributes (for example city, plan, lastOrderDate) and a consent
status:
| Status | Meaning |
|---|---|
No opt-in (unknown) | Nothing recorded. In opt-in mode, campaigns skip them. |
| Opted in | They agreed to receive messages. The proof (where, how, when) is stored in their consent history. |
| Opted out | They asked not to be messaged. Campaigns never message them. |
Recording consent
Record an opt-in where you collect it:
- API. Send
consentwith a contact ({"status":"opted_in","source":"form","proof":{"text":"…","url":"…"}}). - CSV import. Tick "Everyone in this file agreed to receive WhatsApp messages from us" and describe how. Only do this when it is true for every row.
- Dashboard. Use Record opt-in on the contact page.
- WhatsApp. The person sends START (or another opt-in keyword).
Opt-outs
A message that consists only of an opt-out keyword opts the person out immediately, on any of the project's numbers. The default keywords are STOP, UNSUBSCRIBE, OPT OUT and their equivalents in several languages. It works even without the team inbox.
- Confirmation. By default they get a confirmation ("You have been unsubscribed…"), at most once a day.
- Re-subscribing. START re-subscribes them.
- Automatic replies. The AI assistant and away messages never answer these keywords.
- Settings. Change the keywords and replies in Campaigns → Settings.
Keywords only count as the whole message, so "don't stop" or "stop by tomorrow" never unsubscribe anyone.
Opt-outs are permanent until the person opts back in:
- An import or API call with consent does not override them.
- Erasing the contact keeps a hash of the number, so re-adding the number restores the opt-out.
- An owner or admin can re-subscribe someone who asked in person, with a note that goes to the audit log.
2. Segments
A segment is a saved audience, built from conditions:
- tags
- attributes, for example city is Lahore, or orders > 3
- consent
- when the contact was added
- when they last messaged you
- whether they have a conversation on a number
- the start of the phone number (country code)
- which import added them
Conditions can be combined with all/any and grouped. The builder shows, live, how many contacts match and how many a campaign would actually message.
You can also define an audience directly in a campaign without saving a segment.
3. Campaigns
Create a campaign (Campaigns → New campaign):
- Audience. A segment, or conditions for this campaign.
- Message. Text, or an image or document with a caption.
- Insert variables such as
{{contact.firstName | "there"}}or{{attr.city}}; the part after|is used when the contact has no value. - Preview the result, and send yourself a test.
- Insert variables such as
- Numbers and pacing. One or more WhatsApp numbers. With several numbers, recipients are spread evenly, or kept on the number they already talk to.
- Schedule. Now, or at a date and time.
Then launch it.
What happens when it runs
- Snapshot. At the start, the audience is frozen: contacts added afterwards are not included. Contacts who will be skipped (opted out, no opt-in, no WhatsApp address) are listed with the reason.
- Release. Recipients are released into each number's send queue a few at a time. Your other messages (API, inbox, AI assistant) always go first; a campaign never delays them.
- Pacing. Each number waits at least the configured delay between campaign messages (3 seconds by default) and never exceeds its per-minute limit (20 per minute by default). Two campaigns on the same number share its pace.
- Last-moment checks. Right before each message, consent is checked again: someone who replies STOP while the campaign runs is not messaged.
- Automatic pauses. If a number is logged out or restricted, the monthly quota runs out, or the attachment expires,
the campaign pauses and tells you why. Nothing is lost.
- Resume it once the problem is fixed.
- Or resume it on other numbers.
- Progress. The campaign page shows sent, delivered, read, failed and skipped live, and every recipient's status. Read receipts keep arriving for a few days.
You can pause, resume or cancel at any time. Cancelling withdraws messages still waiting in the queue; messages already sent stay sent.
How long it takes
Each number sends at the slower of the send delay and its per-minute limit. For example, 2,000 recipients on two numbers at 20 messages per minute take about 50 minutes. The builder shows an estimate. Add numbers to send faster, not a shorter delay: sending fast from one number is what gets numbers banned.
Settings (Campaigns → Settings)
- Consent mode.
- Opt-in (default): only contacts with a recorded opt-in are messaged.
- Opt-out: everyone except opted-out contacts. Only owners and admins can switch to it, with a written justification (for example existing customers who expect service updates). It is recorded in the audit log.
- Delay between messages. In milliseconds, per number. Individual campaigns can override it.
- Give up after. How long a campaign message may wait in the queue (for example while a number is offline) before it fails as expired.
- Keywords and confirmation replies. For opt-out and opt-in.
Plans and limits
| Free | Starter | Business | Enterprise | |
|---|---|---|---|---|
| Campaigns | — | 3 at a time | 20 at a time | Unlimited |
| Contacts per project | 1,000 | 10,000 | 250,000 | Unlimited |
Campaign messages count toward the plan's monthly messages like any other message. Contacts who message you are always added, whatever the limit.
API
Everything above is available through the API: see Contacts, segments & campaigns API.