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.
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 and a server-side pre-send check.
Preview before you send
Step 5 runs a real pre-send check against the audience you picked, and the campaign detail page has a Send test message action that delivers the rendered template to a number you choose. 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; using the wrong one burns conversation budget |
| 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.