ChatFlow Logo

How to Create WhatsApp Campaigns

Send automated WhatsApp reminders ahead of a renewal or expiry date. Import contacts, schedule a template per reminder day, and track who was contacted, replied, and acted.

Before you begin

Campaigns let you reach customers first, instead of waiting for them to message you. ChatFlow Campaigns are automated WhatsApp reminders timed to a date you already hold, such as a policy renewal, subscription end, or appointment. You import a list of customers with their renewal or expiry dates, schedule which days to remind them, and ChatFlow sends the right message on the right day. Then you track who was contacted, who replied, and who acted.

WhatsApp only, and sent automatically

Campaigns send over WhatsApp, so you need a connected WhatsApp Business account first. There is no email or SMS campaign type. Messages are sent automatically on a schedule (there is no manual "send now" button): once a campaign is active, ChatFlow sends each customer their reminder when their renewal or expiry date is the configured number of days away.

Who can use Campaigns

Campaigns is gated by both role and plan.

RequirementDetail
RoleAccount Manager, Supervisor, Admin, or Owner. Agents and Support Agents do not see Campaigns.
PlanIncluded on Enterprise, and available to everyone during the 14-day trial. On other plans it is enabled per organization by an admin. If you do not see it, check your plan on Manage Your Subscription.
ChannelA connected WhatsApp Business account. See Connect WhatsApp.

The Campaigns workspace

Select Campaigns in the sidebar (under BOTS & AGENTS). The workspace has five tabs:

TabWhat it does
DashboardConnect a WhatsApp number, see campaign stats, and track every customer's status.
ImportAdd customers from a CSV file or your own REST API.
CampaignBuild the reminder schedule: send time, which days to remind, and the template per day.
TemplatesWrite the reminder messages and their variables.
WebhookForward campaign events (sent, delivered, replied) to your own systems.

The rest of this guide walks the tabs in the order you would use them.

Step 1: Connect a WhatsApp number

Open the Dashboard tab and select Connect WhatsApp Business, or Select Connection if you already have a number. You can use a connection that is dedicated to campaigns, or share an existing chatbot's WhatsApp number.

Once connected, the Dashboard shows the number, its Business Account ID, the WhatsApp quality rating (GREEN, YELLOW, or RED), and the account mode (LIVE or SANDBOX).

The Campaigns Dashboard tab showing a connected WhatsApp Business number with a GREEN quality rating, plus the campaign stat cards

Watch the quality rating

A GREEN rating means WhatsApp considers the number healthy. If it drops to YELLOW or RED, delivery can be throttled. Keep messages relevant and always include an opt-out line (see Step 3).

Step 2: Import your customers

Open the Import tab. There are two ways to add customers.

  • Upload CSV: choose a .csv file. ChatFlow recognises flexible column names. The phone number is required; name, reference or policy number, and the renewal or expiry date are recommended.
  • API Endpoint: pull customers from your own REST API by entering its URL (and an optional API key). The expected JSON shape is shown on the tab.
The Import tab showing CSV upload with the recognised columns on the left, and the REST API import option with its expected JSON format on the right
CSV columnAccepted headersRequired
Phone numberphone, mobile, whatsappYes
Customer namename, first name, last nameRecommended
Referencepolicy number, policy, reference idOptional
Expiry daterenewal date, expiry date, due dateRecommended for reminders

Imported customers appear in Customer Status Tracking on the Dashboard, each starting as Pending. The Import tab also keeps a short history of your recent imports with their record counts.

Include the renewal or expiry date

The expiry date is what the schedule counts back from. Without it, a customer cannot be matched to a reminder day, so they will not receive a scheduled message.

Step 3: Write your message templates

Open the Templates tab and select New to write a reminder. Each template has a name and a message body. Insert variables with double braces, for example {{firstName}}, {{referenceId}}, {{expiryDate}}, {{daysRemaining}}, and {{renewalLink}}. ChatFlow fills these in per customer when the message is sent.

The Templates tab with several saved reminder templates on the left and the template editor on the right, showing the opt-out requirement and detected variables

Every template needs an opt-out line

ChatFlow requires your message to include opt-out instructions, such as "Reply STOP to opt out". You will see a warning until you add one. This keeps you compliant and protects your number's quality rating.

Two kinds of templates

The templates you write here are ChatFlow message templates. WhatsApp also has its own approved templates that Meta must review before you can message someone outside the 24-hour window. You sync those from Meta with Sync Templates on the Dashboard tab. The "Meta Approved Templates" section shows what has synced.

Step 4: Build the reminder schedule

Open the Campaign tab and select New, or pick an existing campaign to edit. This is where a campaign becomes a schedule rather than a one-off blast.

The Campaign tab showing the campaign list and the editor, with a daily send time, timezone, the reminder schedule chips (30, 14, 7, 1 days selected), and a template assigned per reminder day
1

Name the campaign

Give it a clear name, like "Policy Renewal Reminders", and an optional description.

2

Set the daily send time and timezone

Daily Send Time is the time each day that ChatFlow sends due reminders. Timezone makes sure that time means the same thing for you and your customers.

3

Choose which days to remind

Under Reminder Schedule (days before expiry), turn on the points where you want a message to go out, for example 30, 14, 7, and 1 days before the date. Add a custom number of days if you need one.

4

Assign a template to each day

Under Message Templates per Reminder Day, pick which template sends on each day you selected. You can use a softer note at 30 days and a firmer "expires tomorrow" message at 1 day.

5

Activate it

Set the campaign status to Active. ChatFlow then sends automatically: at your daily send time, any customer whose expiry date is one of your reminder days away gets that day's template. Use Pause to stop sending without deleting the campaign.

How sending actually works

There is no "send now" button. A background scheduler runs at your daily send time, finds customers whose renewal or expiry date matches one of your reminder days, sends them the template for that day, and updates their status. A customer is messaged once per reminder day, not repeatedly.

Step 5: Track results

Back on the Dashboard, the stat cards summarise the whole campaign, and Customer Status Tracking lists every customer. Use the search box and the status filters to narrow the list.

The Customer Status Tracking table listing customers with their reference, expiry date, days until expiry, last contact, and a status badge

Each customer moves through these states:

StatusMeaning
PendingImported but not yet contacted.
ContactedA reminder has been sent.
RespondedThe customer replied to a reminder.
CompletedThe customer took the action you wanted (for example, renewed).
Opted OutThe customer unsubscribed.

You may also see Failed on a customer whose message could not be delivered, for example an invalid number. Replies also appear in Conversations, so an agent can pick up the thread.

Opt-outs and re-opt-ins

Customers control their own consent over WhatsApp:

  • Replying STOP, UNSUBSCRIBE, OPT OUT, CANCEL, or REMOVE opts them out. They move to Opted Out and receive no further messages.
  • Replying START opts them back in.

This is automatic, which is why every template must carry an opt-out line.

Forward events to your own systems (Webhook)

The Webhook tab posts campaign events to a URL you control, which is useful for syncing replies or status changes into a CRM.

The Webhook tab showing the outbound webhook URL, secret, event checkboxes, and the advanced retry settings
  • Webhook URL and a secret sent in the X-Webhook-Secret header so you can verify the call.
  • Events to send: message sent, delivered, read, and customer responded, completed, or opted out.
  • Advanced Settings: turn the webhook on or off, set max retries and retry delay. Deliveries are queued and retried with backoff, and events older than 24 hours are dropped.

Verify it's working

  1. On the Dashboard, confirm your WhatsApp number shows as Connected.
  2. Confirm imported customers appear under Customer Status Tracking as Pending.
  3. Confirm your campaign is Active with at least one reminder day and a template assigned to it.
  4. After a send, watch Contacted rise, and replies land under Responded and in Conversations.

Troubleshooting

I cannot see the Campaigns page

Campaigns needs an Account Manager role or higher, and a plan that includes it (Enterprise, or any plan during the trial). Check your subscription or ask an Owner to enable it.

I cannot connect or send

You need a connected WhatsApp Business account. On the Dashboard tab, use Connect WhatsApp Business (or Select Connection) first.

Customers are not being contacted

Confirm three things: the campaign is Active, each customer has a valid expiry date, and that date lines up with one of your reminder days. A customer with no expiry date, or whose date is not a reminder day away, is not scheduled.

Messages are not delivered

Check that phone numbers are valid and include country codes, that the number's quality rating is healthy, and that your template includes an opt-out line. For messages outside the 24-hour window, WhatsApp requires a Meta-approved template, synced with Sync Templates on the Dashboard.