Campaigns
Upload a contact list, segment it, schedule a bulk WhatsApp campaign, and read the delivery results.
A campaign is a bulk send of an approved template to a list of contacts. This guide walks through running one end-to-end — from CSV upload to interpreting the delivery report.
Before you start
You need:
- A connected WhatsApp number (WhatsApp Setup)
- At least one approved template (Templates)
- A list of phone numbers in international format (
+91…,+1…, etc.) - The recipients' opt-in. This is non-negotiable — sending to people who didn't opt in burns your sender reputation and risks getting your number suspended.
No picture for the template header yet? Make one in Studio and click Use in template on the result — the Studio guide shows how.
WhatsApp Business policy requires explicit opt-in before sending the first marketing or utility template. "We bought a list" is not opt-in. Be conservative — recipients can mark you as spam, and Meta acts on those signals.
Step 1 — Get your contacts in
Go to Contacts → Import & Export and click Import Contacts. Upload a CSV or Excel file, map your file's columns to Lynkist fields, review the preview, and confirm. Full detail is in the Contacts guide.
CSV format
phone,first_name,last_name,city,order_id
+919876543210,Riya,Sharma,Mumbai,ORD-1042
+447700900456,Tom,Hodge,London,ORD-1043- The
phonecolumn is mandatory and must be in international format. Rows with missing or malformed numbers are skipped — the import summary tells you how many and why. - Columns beyond the built-in fields map onto custom fields, which you create first under Contacts → Custom Fields. Those are what you use as template variables later.
Bulk import and export are paid-plan features. If you see an Upgrade prompt on this page, the feature isn't included on your current plan.
Step 2 — Organise who you'll send to
Lynkist targets campaigns with groups and sources, both of which you manage under Contacts:
- Groups (Contacts → Groups) are named buckets you put contacts in — "Newsletter", "VIP customers", "Trial signups". A contact can be in several at once.
- Sources (Contacts → Sources) record where a contact came from — a website form, a walk-in, a referral, a QR campaign. QR campaigns create their source automatically.
Both are static membership: a contact is in a group because it was put there, by you, by an import, or by a QR scan. Set them up before you import so contacts land classified.
Rule-based segments that update themselves as contact attributes change — "everyone in Mumbai with more than 5 orders" — are not available yet. Today you build the equivalent by importing with a group or source assigned, or by adding contacts to a group after the fact.
Step 3 — Build the campaign
Go to Campaigns → New campaign. The wizard has five steps:
- Details — an internal name, an optional description, and an optional schedule. Recipients never see the name.
- Template — pick one of your approved templates. The list is filtered to approved ones, because nothing else can be broadcast.
- Variables — one field per value the template declares. Map each to a contact field, or type a fixed value that goes to everyone.
- Recipients — choose any combination of groups, sources, and individual contacts
via the search box. The step warns you about contacts auto-created from inbound messages (the
Unknown group), which usually have a phone number and nothing else — so a template with a
{{name}}variable will render badly for them. - Review & send — an audience summary, a server-side pre-send check, and a Test send button.
Preview before you send
Step 5 runs a real pre-send check against the audience you picked. Its Test send button delivers the rendered template to a number you choose, before you save anything — no draft is created and no recipient gets a message. The campaign detail page has the same Test send action for a saved campaign. Use it. Catch a wrong variable mapping there, not after 10,000 messages have shipped.
Step 4 — Schedule or send
Two options:
- Send now — kick off immediately.
- Schedule — set a date and time in step 1. It is interpreted in your effective timezone (your personal setting, falling back to the workspace's), so check that first — see Team & Settings.
Once a campaign is running you can pause, resume or stop it from the detail page. Stopping is permanent; pausing is not.
WhatsApp imposes a per-second throughput limit that grows with your number's quality rating, and Lynkist paces the send to stay under it. For very large lists the delivery window can stretch to hours — the campaign's progress bar shows how far through it is.
Step 5 — Monitor delivery
Open the campaign detail page. The KPI row shows Total recipients, Sent (of the total), Delivered (with a rate against sent), and Read (with a rate against delivered). Each recipient carries a status:
| Status | What it means |
|---|---|
| Pending | Lynkist has the recipient queued, not yet handed to WhatsApp |
| Sent | Handed off to WhatsApp |
| Delivered | Reached the recipient's device |
| Read | Recipient opened the chat (if read receipts are on) |
| Failed | WhatsApp rejected it — the row carries the error |
The recipients table also flags which contacts have replied. Counts settle within a few minutes for sends under 10,000; Refresh metrics recomputes them on demand.
Step 6 — Read the results
- Delivery rate — should be 95%+ for a healthy list. Lower means many bad numbers; clean the list before next time.
- Read rate — a content and timing signal, not a technical one.
- Errors — the campaign has a dedicated errors panel that groups failures by WhatsApp error code and lets you drill into the affected recipients. This is the fastest way to tell a bad list from a bad template.
The campaign view reports delivery, not spend. What a campaign cost you is in Settings → Wallet, where every billed conversation appears in the ledger with its category — see Billing & Wallet.
Common pitfalls
| Pitfall | What to do |
|---|---|
| Sending to a stale list | Clean lists older than 90 days — opt-outs and number changes accumulate |
| Variable map is wrong → blank-looking messages | Send a test message to yourself first |
| Used a marketing template for a utility purpose (or vice versa) | Create the right-category template; Meta can re-classify or refuse a template in the wrong category, and Marketing costs more per message |
| Campaign sends at a bad local hour | Check your effective timezone before scheduling; for multi-region audiences, split the send |
| Sent without opt-in | Don't. Suspended numbers are very hard to recover |
What's not covered (yet)
- Rule-based dynamic segments — audiences are groups, sources and hand-picked contacts today.
- Recurring campaigns — every campaign is a one-off; recurring sends are on the roadmap.
- A/B testing — also on the roadmap.
- Send at the recipient's local time — scheduling is a single moment in your workspace timezone, not staggered per recipient.
- Per-message CSV export — the recipients table and the errors drill-down are on-screen only.
- Multi-channel campaigns — WhatsApp + SMS fallback is in design.