📋 WhatsApp Rules & Costs

Utility or marketing? How Meta categorises your template

Why adding a discount code to your order confirmation can turn a free message into a charged one that US customers never receive.

A WhatsApp message template belongs to one of three categories — utility, marketing or authentication — and Meta assigns the category based on the template's content, not on what you name it. The category decides whether the message is free inside the customer service window, whether per-user limits apply, and whether it can be delivered to a US number at all.

Getting this wrong is the most expensive small mistake in WhatsApp automation. A template you think is a free order update can quietly become a charged marketing message that a third of your list never receives.

The three categories side by side

UtilityMarketingAuthentication
What it is forA specific transaction the customer already hasAnything promotionalOne-time codes
Typical useOrder confirmed, shipped, delivered, payment failedOffers, launches, cart reminders, re-engagementLogin and verification codes
Cost inside an open windowFreeChargedFree
Cost outside the windowChargedChargedCharged
Per-user marketing limitsNoYesNo
Deliverable to US numbersYesNoYes

The cost rules come from Meta's pricing documentation; the delivery and limit rules from its per-user limits page.

Where the line actually falls

The working test is simple: a utility template is about a transaction that already exists. The customer bought something, or tried to, and this message tells them what happened to it. The moment the message tries to cause a new transaction, it is marketing.

MessageCategoryWhy
"Order #1042 confirmed, arriving Thursday"UtilityAbout an order that exists
"Order #1042 shipped, track here"UtilityStatus of an existing order
"Your payment failed, try again here"UtilityAbout an existing attempt
"Order #1042 confirmed. Here's 10% off your next one"MarketingThe second sentence sells something new
"You left items in your basket"MarketingNo transaction exists yet — the checkout was abandoned
"Back in stock!"MarketingPromotional by nature

The abandoned cart trap. Merchants very often expect a cart reminder to qualify as utility, because it references a specific basket. It does not — an abandoned checkout is not a completed transaction, and the message exists to cause a purchase. Plan and budget for cart recovery as marketing, which also means it cannot reach US numbers.

Why templates get recategorised after approval

Meta can reclassify a template after it is live. This surprises people, but it follows from category being content-based: if the content is promotional, the category follows the content regardless of what was ticked at submission. The practical symptom is a bill that goes up without your send volume changing, or a utility template that suddenly stops reaching US numbers.

Meta's policy enforcement documentation lists template misclassification explicitly among the behaviours that trigger enforcement — so persistently submitting marketing content as utility is not a cost optimisation, it is a risk.

How to keep an order flow in the utility category

  1. One job per template. The order confirmation confirms the order. It does not also cross-sell, collect a review, or carry a coupon.
  2. No discount codes, ever, in a utility template. This is the single most common cause of recategorisation.
  3. Keep buttons transactional. "Track order" and "Confirm" are fine. "Shop now" and "See offers" are not.
  4. Reference the specific transaction. Include the order number or amount as a variable. A message that could apply to anyone reads as marketing.
  5. Put the upsell in the reply, not the template. Once the customer taps a button, the 24-hour window is open and you can say anything, free, with no template and no category. Sell there.

That last point is the whole strategy in one line. A utility template that earns a tap is worth more than a marketing template that gets ignored, because the tap buys you a day of unrestricted conversation.

Splitting one template into a free utility message and a free follow-up

TriggerShopify: order shipped
Ask a question"Shipped — track it, or need help?"Utility template, buttons: Track order / I have a question
Track order
Send the tracking link
And, since the window is now open, the reorder nudge

Free text. No template. No category. No per-user limit.

I have a question
Hand it to a person

The window is open, so your team can reply freely all day.

What you cannot control

Be clear-eyed about the limits of this. You cannot choose your own category, you cannot appeal your way to a cheaper one, and you cannot rely on a category staying put. What you can control is content — and content is the only input the categoriser has.

Before you write your next template

Three checks, in order. First, could this message exist if the customer had never bought anything? If yes, it is marketing. Second, does it contain a price, a discount, or a reason to buy again? If yes, it is marketing. Third, would you be comfortable if Meta charged you for it and US customers never saw it? If not, rewrite it as a question that opens the window instead.

If a template is being rejected outright rather than recategorised, that is a different problem — why was my WhatsApp template rejected covers it.

Rewriting a marketing template back into a utility one

Most recategorised templates can be rescued, because the promotional element is usually one sentence. Three real examples:

As written (marketing)Rewritten (utility)
"Order #1042 confirmed! Here's 10% off your next order with code THANKS10.""Order #1042 is confirmed, total {{2}}. We'll message you when it ships."
"Your order shipped 🎉 While you wait, check out our new arrivals!""Order #1042 shipped with {{2}}. Track it here: {{3}}"
"Payment failed — but don't miss out, stock is running low!""We couldn't process payment for order #1042. You can try again here: {{2}}"

In each case the rewrite loses the promotional line and keeps the job the message actually exists to do. The revenue that line was chasing has not been lost — it has moved to the reply, where you can say it for free.

Where the upsell should live instead

This is the part worth internalising, because it turns the constraint into an advantage. A utility template that earns a tap opens the 24-hour window, and inside that window you can send anything — including promotional content — as ordinary free text. No template, no category, no per-user limit, no charge.

So the sequence that works is: a clean utility template that asks a question, the customer taps, and the offer goes in the follow-up. You get the same message in front of the same person, but it is free, uncapped, and it reaches US customers, none of which is true of the marketing template version.

The strategic version: stores that treat utility templates as doorways rather than announcements end up paying for one message per order and talking freely for a day. Stores that pack everything into one template pay per message forever and never open a window.

What authentication templates are, and why not to touch them

The third category exists for one-time codes, and it is the most tightly constrained of the three. It accepts fixed wording, which means it cannot carry a custom value — a fact that catches people building account-related flows.

We hit this ourselves. A template telling a customer their account name, with a "Sign in" button, was auto-rejected: a credential plus a login button reads as authentication, and that category's fixed wording cannot carry a username. The fix was reframing it as an account-details lookup, which kept it in utility.

The general lesson: if your message contains anything resembling a credential and a button to use it, expect it to be read as authentication regardless of what you submitted.

Category by flow, at a glance

FlowCategoryReaches US numbers?Free in an open window?
Order confirmationUtilityYesYes
Payment receiptUtilityYesYes
Shipping and trackingUtilityYesYes
Delivery confirmationUtilityYesYes
Failed payment noticeUtilityYesYes
Review requestUtility, if it asks about the orderYesYes
Abandoned checkout reminderMarketingNoNo
Back-in-stock alertMarketingNoNo
Sale or offer campaignMarketingNoNo
Win-back / reorder nudgeMarketingNoNo
Login or verification codeAuthenticationYesYes

Read that table as a build order. Everything in the utility rows is free, unrestricted and deliverable everywhere — build those first. The marketing rows all cost money on every send and are unavailable to US customers entirely.

A closing caution on all of the above: Meta changes these mechanics. Pricing moved from conversation-based to per-message on 1 July 2025, rates were revised on 1 July 2026, and further adjustments are scheduled for 1 October 2026. Category rules are stable in principle, but the cost consequences attached to them are not. Treat the pricing page as the live source and this article as a snapshot.

What has not changed, and is unlikely to, is the underlying logic: Meta prices and restricts messages a business initiates, and leaves conversations a customer started alone. Design around that and the specific rates matter far less than they appear to.

Frequently asked questions

Can I choose my own template category?

You submit a category, but Meta assigns the final one based on the template's content, and can reclassify a template after approval.

Is an abandoned cart reminder a utility template?

No. An abandoned checkout is not a completed transaction and the message exists to cause a purchase, so it is marketing — which means it is charged and cannot be delivered to US numbers.

Why is my utility template suddenly costing money?

Utility templates are free only inside an open 24-hour customer service window. Sent outside it, they are charged. A recategorisation to marketing would also make them charged in both cases.

Can I put a discount code in my order confirmation?

You can, but it will make the template marketing rather than utility — which means it is charged, subject to per-user limits, and undeliverable to US numbers.

Need help? Message us