How it worksFeaturesSolutionsGuides PricingFAQ Ask on WhatsApp
Help Channels

WhatsApp templates for campaigns

Every campaign message has to be approved by Meta before you can send it — what you can put in one, what the approval states mean, and why a rejected template stops a campaign before it starts.

Updated 16 August 2026 8 min read

WhatsApp does not let a business send whatever it likes to someone who is not already talking to it. Outside a 24-hour window after a customer’s last message, every message has to be a template — wording Meta has read and approved in advance, sitting in your own WhatsApp account.

A campaign is always outside that window. So a campaign is always a template, and the template is the campaign: you cannot type a message and send it.

This page is about the templates you write for campaigns. Your assistant’s own two templates work differently and are covered in Why your follow-ups need their own template.

⚠️ A template that is not approved stops the campaign at the moment you create it, not at the moment it sends. That is the kinder of the two failures — the other one is several thousand rejections counted against your number.

What a campaign template looks like

A template has a fixed body, and can have blanks in it that you fill in when you send. For example:

Hi! Our Onam offer is on until the 30th — 20% off all service packages
at {{1}}.

Reply to this message and we'll book you a slot.

Reply STOP to stop promotional messages.

Three things about that:

  • Everything except {{1}} is fixed. That is what approval means. Changing a word means a new template and a new review.
  • The stop line belongs in the template. A marketing message with no visible way out is what gets a number blocked. WhatsApp adds its own Stop promotions button to some marketing messages, sometimes, depending on category and region — it is a bonus, not something to rely on, because it can disappear without any change on your side.
  • Write it as one message, not a campaign. Templates are reused. A template that names a specific date is dead the week after.

Marketing, not Utility

Meta sorts templates into categories, and a campaign template is Marketing.

It is tempting to submit a promotion as Utility, because Utility is reviewed against a lighter bar and Meta charges less for it. It works, briefly. Then the customers who wanted the promotions to stop keep getting them under a category with no advertised way out, they block you, and the rating drop costs far more than the category ever saved.

A Marketing template is also the only kind a customer’s “stop sending me offers” correctly silences — which is exactly what you want it to do.

What you can and cannot put in one

Supported
Body textYes
Blanks in the bodyYes — see below
A header at the topYes — an image, a video, a document, or text
A blank in a text headerYes — one value, set per campaign
Buttons — reply buttons and link buttonsYes
Carousels (2–10 cards to swipe)Yes
A link button that counts clicksYes — see below
The customer’s nameNo

Filling in the blanks

You set what goes in each blank once, for the whole campaign. A blank is either a fixed piece of text — your business name, this month’s offer — or the customer’s own phone number.

⚠️ There is no name personalisation yet. “Hi Priya” is not something a campaign can do today. Write the template so it reads well without a name; “Hi!” is fine and “Hi {{1}}” filled with something generic is worse than nothing.

If a blank cannot be filled for a particular person, that person is skipped. Nobody is ever sent a message with a visible {{1}} in it. One lost send is cheaper than a customer screenshotting a half-built message — but it does mean a campaign whose blanks are set up wrongly can skip everybody, quietly. If a campaign is sending nothing, check the blanks first.

Buttons and carousels

Both are sent. A template Meta approved with reply buttons, link buttons, or as a carousel of cards goes out with all of it intact.

What you supply per campaign is a specification, not a value — the same contract the blanks have, so one campaign serves every recipient. For a button that means which position in the approved template it fills and what goes in it; for a carousel it means the cards, each of which can carry its own image, its own blanks and its own buttons.

Everything is checked against Meta’s copy of the template when the campaign is created, and the refusal names the part that disagrees:

  • a reply button aimed at a position Meta approved as a link button, or the reverse;
  • a link button whose address takes a changing part you have not supplied — or a fixed address you supplied one for anyway;
  • cards on a template that is not a carousel, or a carousel with fewer than 2 or more than 10 cards, which are Meta’s own bounds;
  • a card whose image or blanks do not match the card Meta approved.

All of it has a screen. On the campaign’s Message step, an approved template with buttons gets one box per button, labelled with that button’s own text; an approved carousel gets one card per approved card, each with its picture and its values; and the tracked link has its own pair of controls. You cannot add or remove carousel cards there — the count has to match what Meta approved, and a carousel with a card missing is one WhatsApp will not render.

One link button per campaign can be pointed at a tracked address. The customer lands where you sent them, and the campaign report counts how many people opened it — each person once, however many times they tapped, because the link travels through forwards and a taps figure is one a stranger could inflate.

Two conditions, and if either is missing the report shows zero clicks rather than an error: the campaign has to name both the destination and which button carries it — one without the other is refused — and Kooday’s tracked-link address has to be configured on the deployment you are on. Read a zero as not measured, not as nobody clicked. See Reading a campaign report.

Getting one approved

Campaign templates are created in your own WhatsApp Business account, in Meta’s Business Manager, under the number you want to send from.

You do not have to tell us about it. Kooday reads the template list for each of your connected numbers from Meta and keeps its own copy — every six hours. That copy is what a campaign is checked against, which is why a template approved five minutes ago may not be pickable yet.

You do not have to wait for the next pass. The Templates screen has a Check with Meta now button: pick the number, press it, and the list is re-read from Meta there and then.

Approval is Meta’s and usually takes minutes to a few hours. Marketing templates are reviewed harder than Utility ones, so expect the occasional rejection and a resubmission.

Two things people get caught by:

  • Templates are per number. A template approved on your transactional number is not available on your marketing number. Create it on the number that will send it.
  • A template can be edited after approval. If it is, campaigns using it may stop working: a campaign is checked against Meta’s current shape, so an edit that adds or removes a blank makes every campaign built on the old shape refuse.

The approval states

Meta’s stateWhat a campaign does
APPROVEDSends
PENDINGRefused — still under review
REJECTEDRefused
PAUSED, DISABLED, anything elseRefused

Only approved sends. Everything else — including a state Meta invents next year that we have never seen — is refused. That is the safe direction: a template we cannot vouch for is not sent, rather than sent and hoped about.

The refusal names the state: “Meta’s status for this template is PENDING, not APPROVED.”

Troubleshooting

”Not in this connector’s template cache”

The template exists at Meta but Kooday’s copy of the list for that number does not have it — usually because it was approved since the last refresh, and the refresh runs every six hours. Press Check with Meta now on the Templates screen and try again.

Two other things produce the same message. The template may be on a different number — templates are per number, and Kooday’s copy is too. Or the number’s connection may be missing the WhatsApp Business account id it needs to read the list at all, in which case the copy is empty and stays empty; tell us and we will check the connection.

The template is approved but the campaign was still refused

The blanks do not match. Meta’s copy of the template has a certain number of blanks, in a certain order, with or without a media header — and what you set on the campaign has to match it exactly. The refusal says which part disagrees.

This most often happens when the template was built by hand in Business Manager after the campaign was set up.

It was approved yesterday and is refused today

Meta can change a template’s status after approval — a pause, a disable, a re-review — and it does not tell you loudly. Kooday picks the change up on its next refresh, within six hours, and campaigns refuse from that moment. Check the template in Business Manager to see what Meta did.

Can I edit the message after the campaign has started?

No. The message can only be changed while the campaign is still a draft. Once it is scheduled or running, the wording, the template, the blanks and the audience are fixed; the name, the timing and the pace are still yours to change. A campaign that could be rewritten mid-flight would mean two different messages went out under one report.

Still stuck? We answer support mail the same working day.

Email support