Campaigns


Send one message to many contacts — WhatsApp templates, rich media, or interactive broadcasts — with per-recipient personalisation, scheduling, retry, and real-time delivery analytics.

TL;DR

  • What it is — a broadcast module for WhatsApp and email. A campaign targets a recipient audience (chats, contacts, or a CSV), uses an approved WhatsApp template (or a rich-media message where the channel allows), schedules for a future time, and tracks per-recipient delivery status.
  • Who it's for — admins running marketing pushes, operations teams sending transactional bulk messages, and owners reviewing campaign performance.
  • Top outcome — reach up to 100,000 recipients in one campaign with per-recipient personalisation, automatic retry, and delivery analytics — without losing the CRM's guest-context features on the replies that come back.

At a glance

Plan tierAll paid tiers.
Who can use itAccount Owners and Admins can create campaigns. Users can view.
ChannelsWhatsApp Official (templates at scale — around 600 messages per minute), WhatsApp Unofficial (free text only — around 6 messages per minute by default, tunable), Email, plus other channels supported by your messaging setup. See Official vs Unofficial below.
IntegrationsApproved WhatsApp templates, Contacts for audience, Bot Journeys for reply handling.
Top limits100,000 recipients per campaign · 1 – 10 retry attempts · Schedule must be in the future.
APIYes — partner API for creating, listing, cancelling, and inspecting campaigns.

How to find it

Sidebar → Campaigns.

Direct URL: https://app.lodgestory.com/crm/campaigns

Creation path: + New Campaign at the top of the list — opens the four-step wizard.

Detail path: click any row in the list to open that campaign's progress view.

📸 [SCREENSHOT: campaigns-nav.png — sidebar with Campaigns highlighted]

What is Campaigns?

The problem it solves

Broadcasting on WhatsApp isn't like email. There's a 24-hour rule that limits free-text messaging once a conversation goes cold; to initiate at scale you need pre-approved templates with constrained variable slots. Template approval takes 24 – 48 hours. Rate limits are real and different per channel grade. Per-recipient personalisation requires variable substitution at send time. And delivery isn't automatic — every message has its own lifecycle (queued → sent → delivered → read / failed).

Campaigns handles all of that: the approval check (it refuses to schedule a campaign using a non-approved template), the rate-limit pacing (releasing messages at the channel's allowed rate), per-recipient variable substitution (from global values, contact fields, or CSV columns), retry logic (up to 10 attempts on transient failures), and real-time delivery roll-up (refreshed while the campaign runs).

What you get

  • Audience from three sources. Pick existing chats, query contacts with filters (including custom fields), or upload a CSV.
  • Four message types. Plain text on non-WhatsApp channels; WhatsApp templates on Official (the scale path); media with caption (image, video, document) where the channel supports it; interactive messages (reply buttons, lists) where the channel supports them.
  • Per-recipient personalisation. Template variable slots can be filled globally, from a standard or custom contact field, or from a CSV column — evaluated at send time.
  • Scheduled, not immediate. Every campaign requires a future send time. The system releases messages at the channel's rate cap until the campaign completes.
  • Retry built in. Per-recipient attempts are tracked; transient failures retry automatically up to your configured limit; permanent failures (invalid number, opt-out) stop trying and log the reason.
  • Cancel mid-run. You can cancel a running campaign; already-sent messages aren't rolled back (that's a platform limitation — messages can't be recalled), but no further messages go out.
  • Auto-refreshing progress. The list page refreshes automatically while any campaign is active. The detail page updates every few seconds while a campaign is in progress.

How it's different

  • Template approval is enforced before scheduling. If your template hasn't been approved yet, the campaign won't schedule. You cannot accidentally queue a broadcast against a pending template.
  • Variable substitution is three-layered. Each template slot can pull from a campaign-wide global, a named contact field, or a CSV column — in that priority. One campaign can mix all three across its slots.
  • Campaigns share the same scheduled-message engine as the inbox. Scheduling a single message from the inbox composer uses the same pipeline as a 100,000-recipient campaign. They aren't separate code paths.

Customer scenarios

  • Flash-sale broadcast. A hospitality group sends a template to 12,000 recent guests: "Weekend rates up to 30% off — valid 48 hours." The template has one slot for the guest's first name pulled from contacts. Scheduled for Thursday at 4 PM. By Friday morning, 11,400 delivered, 410 failed (mostly opt-out), 190 still retrying. Replies enter the inbox; the assigned bot journey classifies interested vs not interested and routes interested chats to an agent.
  • Utility notification at booking time. A property-management webhook triggers a "booking confirmed" campaign to one recipient with the confirmation template. Mechanically identical to a 100,000-person campaign; the engine doesn't penalise singletons.
  • Re-engagement via CSV. Marketing exports a segment from a BI tool, adds an Offer code column, and uploads the CSV as the audience. Each recipient's template fills {first name} and {offer code} from the row. The campaign runs; offer codes land personalised.

How it fits with the rest of Lodgestory

Upstream: Contacts is the audience source; WhatsApp Templates is the content source; Connections decides which channel a campaign can run on. Downstream: every reply to a broadcast enters Home; if the channel has a Bot Journey, replies trigger that journey. Cross: Analytics rolls up campaign volume; Reports exports per-message delivery history.

📸 [SCREENSHOT: campaigns-landing.png — campaigns list with active and completed campaigns]

Core concepts

TermWhat it means
CampaignA scheduled broadcast with a recipient audience, a message (or template), and a send time.
StatusDraft, Scheduled, In progress, Completed, or Cancelled.
Message typeText, Template, Image, Video, Document, or Interactive.
Variable mappingFor template campaigns, instructions that tell the system how to fill each template slot — global value, contact field, or CSV column.
Audience sourceHow recipients were chosen — existing chats, filtered contacts, or an uploaded CSV.
Per-recipient statusPending, Processing, Completed, or Failed — tracked individually for every person in the audience.

Quick Start — send your first broadcast in 7 minutes

Step 1 — Open Campaigns

Sidebar → Campaigns or https://app.lodgestory.com/crm/campaigns.

Step 2 — Click + New Campaign

Opens the four-step wizard.

Step 3 (Wizard 1) — Pick the channel

Dropdown of connected channels. WhatsApp Official is the default for scale. The choice drives which message types and templates are available downstream.

📸 [SCREENSHOT: campaigns-qs-1-channel.png — wizard step 1, channel]

Step 4 (Wizard 2) — Compose the message

Three paths, based on channel capability:

  • Template (WhatsApp Official / Unofficial) — picker shows only approved templates for the selected channel. On pick, variable slots appear with a source selector per slot: contact field, CSV column, or global value.
  • Quick (non-template text or simple media) — plain text with optional media attachment.
  • Interactive (channels that support it) — reply buttons or list selection built inline.

If the template isn't approved yet: you'll see "Template is not approved for use" and the campaign won't save. Wait for approval.

Step 5 (Wizard 3) — Pick the audience

Three options:

  • Existing chats — multi-select from the chat list with the same filters as the inbox.
  • Contacts — filter by standard fields and custom fields. Campaign creates a chat per contact at send time if needed.
  • CSV upload — columns must include at minimum phone and countryCode. Any extra columns can feed personalisation variables.

Step 6 (Wizard 4) — Schedule & submit

Pick a future date and time. The send-rate budget is configurable here. Click Schedule.

What you'll see next: the campaign appears in the list with status Scheduled and a countdown to the send time.

Step 7 — Watch it run

The list refreshes automatically. Click the row to open the detail page — it updates every few seconds while the campaign is in progress. Progress bars show sent, delivered, and failed counts.

How it works

When you schedule a campaign, Lodgestory:

  1. Validates the template's approval status (for template campaigns).
  2. Validates the audience size (up to 100,000) and the future send time.
  3. Validates every variable slot has at least one source to pull from.
  4. Resolves the audience to a list of recipients — creating chats for contacts that don't have one yet.
  5. Creates one send-job per recipient in the message queue.

At send time:

  1. The queue releases as many messages as the channel's rate cap allows.
  2. For each recipient, Lodgestory resolves variable values (global, contact field, or CSV row) and delivers the message.
  3. Success marks the recipient's job as delivered; transient failures retry with back-off up to the configured limit; permanent failures stop trying and log the reason.
  4. When every recipient has either succeeded or exhausted retries, the campaign moves to Completed.

Official vs Unofficial WhatsApp — the rules that change per channel

Campaigns behave differently depending on the WhatsApp channel type. The differences come from WhatsApp's own policy (for Official) and account-safety throttling (for Unofficial).

Templates

  • WhatsApp Official — templates and free text are both possible, but for broadcasts at scale you almost always use an approved template. Template approval is a platform-side process; approvals typically take 24 – 48 hours. A campaign against a non-approved template won't save.
  • WhatsApp Unofficial — templates are not supported. Campaigns on Unofficial channels send free text (plus media and interactive messages). No approval process, no waiting.

24-hour messaging window

  • Official is subject to the 24-hour rule at the platform level. For scale broadcasts this effectively means "template-only for Official campaigns" — you can't rely on a 24-hour window for 100,000 people.
  • Unofficial has no 24-hour window. Free text to opted-in contacts at any time.

WhatsApp groups

Both channels support groups. In practice, Unofficial is the typical choice for group-heavy broadcasts because the Official channel is oriented to 1:1 business-to-customer flows.

Campaign rate limits — why Unofficial is much slower

ChannelEffective throughput
WhatsApp OfficialAround 600 messages per minute
WhatsApp UnofficialAround 6 messages per minute by default
Email / otherAround 6 messages per minute by default

The Unofficial throttle is a deliberate account-safety measure, not a technical limit. Sending faster on an unofficial WhatsApp number can trigger abuse detection and get the number banned — banned numbers are significantly harder to recover than any per-conversation fee.

Admins who have warmed up an Unofficial number with steady engaged traffic can ask for the per-channel send rate to be tuned up.

Campaign implications. A 50,000-recipient Official campaign finishes in around 90 minutes. The same 50,000 on Unofficial at default settings takes several days. Plan accordingly:

  • Use Official for time-sensitive promos and transactional sends; use templates; accept the approval delay.
  • Use Unofficial for drip campaigns, lists where opt-in is clear and a 24-hour window isn't available, or group broadcasts. Stagger them across days rather than queuing huge batches in one go.

Cost model

  • Official charges per conversation window (pricing varies by country and message category). Predictable but per-message adds up.
  • Unofficial has a flat account cost; per-message cost is effectively zero. The trade-off is account-ban risk.

Why future scheduling is mandatory

The send time must be in the future. This forces every campaign through the paced queue — you can't accidentally fire 100,000 messages into a single burst that would slam the channel and your own rate budget.

Features in depth

Campaigns list

Paginated table. Typical columns: campaign name, channel, status, recipient count, sent / delivered / failed progress, send time, creator, actions (open, cancel).

Filters: Status dropdown, Search by name. Auto-refreshes while any campaign on the page is in progress.

Creation wizard

Four linear steps with Next / Back navigation:

  1. Channel — picks the telephony or messaging channel; downstream options depend on this.
  2. Compose — three sub-paths (Template / Quick / Interactive) with variable mapping UI if Template is chosen.
  3. Audience — three sub-paths (Chats / Contacts / CSV). The Contacts picker uses the same filter builder as the Contacts page.
  4. Schedule & Submit — date picker, rate selector, submit.

Detail page

Click any row in the list. Shows the campaign metadata, status, progress bars, a paginated messages table with per-recipient status filter, Cancel button, and a Download link to the CSV export in Reports.

Updates every few seconds while the campaign is in progress.

Audience — Chats source

Multi-select from the chat list. Resolves directly to chats — no contact lookup at send time.

Audience — Contacts source

Filter builder using standard fields and custom fields from Contact Fields. If a chosen contact has no chat on the selected channel yet, a chat is created at send time.

Audience — CSV source

  • Must include phone and countryCode columns.
  • Any other columns can be referenced as variable sources in the template.
  • Duplicate rows (same phone + country code) are de-duplicated within the upload.
  • File size: same 10 MB cap as bulk imports.

Retry and attempts

Set the per-recipient retry limit (1 – 10 attempts; typical default 3). The engine backs off between attempts. Final failures are logged with a readable reason.

Cancel mid-run

Valid from Scheduled or In progress. Pending recipients are skipped from the next send tick. Already-sent messages aren't rolled back — WhatsApp has no recall API.

Template approval gate

On save, Lodgestory checks that the selected template is approved. If not, the campaign won't save until the template is approved.

Reply handling

Campaigns are send-only. Inbound replies enter the inbox normally. The channel's assigned bot journey (if any) triages them; otherwise they queue for an agent.

Roles and permissions

ActionAccount OwnerAdminUser
View campaigns list
View campaign detail and messages
Create a campaign
Cancel a campaign
Download campaign CSV via Reports

Cross-module workflows

Broadcast → reply routing → conversion tracking

A campaign sends 50,000 approved templates. Replies arrive in the inbox over the next hour. The channel's assigned bot journey classifies intent. Interested replies hit a goal node that records which campaign the chat came from. The goals page shows the funnel: 50,000 sent → 4,200 replied → 1,100 classified interested → 340 converted to bookings.

Modules involved: Contacts → Campaigns → Home → Bot Journeys → Goals → Reports.

Single-recipient utility campaign

A property-management webhook fires a "booking confirmed" campaign for a single guest. The engine sends at the webhook-provided time — the same mechanics used for a 100,000-person broadcast.

Limits a user will run into

LimitValue
Max recipients per campaign100,000
Retry attempts per recipient1 – 10 (typical default 3)
Send timeMust be in the future
Rate — WhatsApp OfficialAround 600 messages per minute
Rate — WhatsApp UnofficialAround 6 messages per minute by default; tunable after account warm-up
Rate — Email / otherAround 6 messages per minute by default
List page size100 campaigns per page
CSV upload10 MB

Errors & FAQ

You seeLikely reasonWhat to do
"Template is not approved for use"Template is pending or rejectedResubmit the template or pick an approved one
"Schedule time must be in the future"Chosen send time is in the pastPick a later time (even one minute ahead)
"Recipient count exceeds maximum of 100000"Audience over the capSplit into multiple campaigns
"Variable mapping is incomplete"A template slot has no source setAdd a source (global, contact, or CSV) for every slot
"Campaign not found"Bad ID or cross-organisation accessVerify the link; switch organisations if needed
"Cannot cancel a COMPLETED campaign"The campaign already finishedNothing to do — it's already delivered
Per-recipient "Template not approved"Approval was revoked after the campaign was createdCancel, resubmit the template, create a new campaign
Per-recipient "Recipient not opted in"WhatsApp rejected the sendNo fix per recipient; ensure opt-in upstream
Per-recipient "Rate limit exceeded"Transient provider throttlingUsually self-heals on retry
Per-recipient "Invalid phone number"Bad phone / country-code formatClean contact data; re-run on a pruned audience

Frequently asked

Why does my campaign still show "In progress" hours after the last message was sent?
Check the messages table — some recipients may still be retrying transient errors. The campaign moves to Completed only when every recipient is in a terminal state. If retries are exhausted they flip to Failed and the campaign closes.

Why did my 100,000-recipient campaign take three-plus hours to complete?
Rate limits. WhatsApp Official caps around 600 per minute — that's already close to three hours at full throughput. Rates are per-channel budgets set by the channel provider; Lodgestory can't exceed them.

Can I edit a scheduled campaign?
Not after creation. Audience and template are locked at create time for integrity. Cancel and create a new campaign.

Can I send a campaign without a template on WhatsApp Official?
Only within the 24-hour window of each recipient, which isn't a batch operation. In practice no — Official campaigns are template-only at scale.

Can I run a campaign on WhatsApp Unofficial without a template?
Yes — Unofficial is free-text only. Templates aren't supported there.

Why does Unofficial take so much longer than Official?
The default send rate is conservatively capped to protect the account from WhatsApp's abuse detection. Faster sending risks a ban on the number. Admins can tune the rate up once a number has warmed up.

Can I broadcast to WhatsApp groups?
Yes on both channels. Unofficial is the typical choice for group-heavy broadcasts.

Why did some recipients get the wrong personalisation?
Variables are resolved at send time. If a contact's field changed between campaign creation and send time, the newer value wins. For a fixed snapshot, use the CSV source instead of contact-field references.

Why doesn't cancelling recall already-sent messages?
WhatsApp has no recall. Cancel stops further sends; it can't un-deliver.

Related modules & next steps