0.2 Message categories

Meta prices per category: marketing, utility, authentication and service. Meta decides which one a template gets, and can change it after approval.

Every message is billed at the rate of its category, and Meta decides which category that is.

The four categories

CategoryWhat it is
marketingPromotions, offers, announcements, re-engagement. The most expensive category.
utilityMessages about a transaction the customer has already made: order confirmations, shipping updates, appointment reminders. Through September 30, 2026, these are free inside an open customer service window; from October 1 they are billed there too.
authenticationOne-time passcodes and login verification.
serviceFree-form replies to a customer who wrote to you first. Free through September 30, 2026; billable from October 1.

Two more values in billing data

Status webhooks can report two categories beyond the four above.

authentication_international is authentication where the code crosses a border: an OTP sent from your number in one country to a user in another. It has its own rate, and in some markets the gap over domestic authentication is large. If you send verification codes internationally, look at this line on its own.

marketing_lite marks a marketing message that was sent through Meta's Marketing Messages API, a separate send path that optimises delivery, rather than through the Cloud API. It bills at the marketing rate. The category tells you which API sent the message, not that a different price applied. If you group spend by category, fold it into marketing.

You don't choose the category

You propose a category when you submit a template, and Meta reviews it. Most reclassification happens at review time. A template submitted as utility that reads like promotion comes back approved as marketing.

Meta can also reclassify a template that's already running, typically when it's edited or when Meta updates its rules. It's less common, and it doesn't break anything. Messages keep sending, and the change shows up on the bill.

So watch the category you're actually billed under. Chapter 1.3 covers how.

Sending without a template: Direct Send

Meta is rolling out the Direct Send API, a beta that removes the template step for utility and authentication messages. You call the regular send endpoint with a category field, and Meta creates and matches templates behind the scenes:

{
  "messaging_product": "whatsapp",
  "to": "5215512345678",
  "type": "text",
  "text": { "body": "Your package was delivered." },
  "category": "utility"
}

The pricing model doesn't change. The message bills as utility or authentication, by category and country, like any template would. And Meta still decides whether the content matches the category; sending something as utility doesn't make it utility.

It's in beta and not widely available yet, so the template flow above is still what most integrations use.