What Counts as Utility
Utility messages are template messages sent in response to a user action or request, with specific context about an active transaction, account, subscription, or service interaction.
Examples:
- Order confirmation with order ID
- Delivery update with tracking details
- Billing or account reminder tied to an existing service
- Service alert linked to a current issue
- Reservation confirmation
- Appointment reminder
Utility templates have strict content requirements, particularly around marketing material. If you create or update a utility template that includes promotional language, Meta will automatically re-categorize it as a marketing template — see Template Category Reclassification.
Why Utility Templates Matter
- Utility templates are generally lower-cost than marketing templates.
- Through September 30, 2026, utility templates are free during an active 24-hour customer service window (CSW). Meta will charge for them from October 1, 2026. See Pricing → Free vs Billed Messages.
- They provide clear operational updates that customers expect and value.
- Utility messages have volume tiers — higher monthly volume per market unlocks lower per-message rates.
Utility Pages in This Section
- Location templates — UTILITY (or MARKETING) templates with a map header and send-time coordinates
- Call permission request — see the section below on this page
Prerequisites
- Create a template with category
UTILITY. - Wait for
APPROVEDstatus. - Capture and retain valid user opt-in for WhatsApp communication.
- Send using the standard Cloud API template message flow.
User Opt-In for WhatsApp Communication
Meta's Business Messaging Policy requires that a person opts in before your business sends them a business-initiated message. That applies to utility templates as much as to marketing templates. An order confirmation sent without opt-in is still a policy violation, even though the content is transactional.
A valid opt-in must make three things clear to the user:
- They are agreeing to receive messages over WhatsApp, not just "notifications".
- Which business will message them, using the name they will see on the sender.
- What kind of messages they can expect. Separate consent for marketing from consent for order and account updates wherever you can.
Opt-in can be collected anywhere you already talk to the customer: a checkbox on a checkout or account form, a keyword or reply inside an existing WhatsApp thread, SMS, IVR, or in person at a point of sale. Meta does not require a specific channel, but it does require that the user takes an explicit action. Pre-ticked boxes, purchase-implied consent, and imported lists do not qualify.
Keep evidence. Store the source, timestamp, channel, and category for every opt-in so you can answer a Meta quality review or a customer complaint. Blocks and reports from users who never opted in are the fastest way to lose messaging limits.
Dualhook does not collect or store opt-in on your behalf. Consent lives in your own systems, and the messaging best practices page covers how to structure it.
Supported Components
Utility templates support the following component layout:
| Component | Cardinality | Notes |
|---|---|---|
header | 0 or 1 | All header formats supported: text, image, video, document, location |
body | 1 (required) | Up to 1024 characters. Supports named or positional parameters |
footer | 0 or 1 | Up to 60 characters. Variables supported |
buttons | Up to 10 | See supported types below |
call_permission_request | 0 or 1 | Cannot be combined with other interactive components — see Call Permission Request (Utility) |
For full component-level structural details, see Template Elements.
Supported Button Types
Up to 10 buttons total, in any combination of these types:
quick_reply— predefined reply text the user can tapurl— opens a URL in the user's default browserphone_number— taps to dial the configured business phone numbercopy_code— copies a code to the user's clipboard (max 20 characters)- Call request — used in conjunction with the
call_permission_requestcomponent (see below)
Specialty Utility Templates
Beyond standard custom utility templates, Meta supports two specialty utility template types. Both are created through the same /<WABA_ID>/message_templates endpoint by varying the components array.
| Type | What it does |
|---|---|
| Custom utility | Standard structure: optional header (any format), required body, optional footer, up to 10 buttons |
| Location template | Map header that displays a specific location at send time. Real-time location is not supported. Specify lat/lng/name/address in the send call, not at template creation time. Categorized as UTILITY or MARKETING. |
| Call permission request | Required body + call_permission_request component. Recipient grants or denies your business permission to call them. Categorized as UTILITY or MARKETING. See section below. |
Call Permission Request (Utility)
Call permission request templates can be categorized as either MARKETING or UTILITY. The UTILITY variant is appropriate when you want to call a customer about an active transaction, account issue, or service interaction.
curl 'https://graph.facebook.com/<GRAPH_VERSION>/<WABA_ID>/message_templates' \
-H 'Authorization: Bearer <CUSTOMER_OWNED_META_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"name": "order_support_call",
"language": "en_US",
"category": "UTILITY",
"parameter_format": "named",
"components": [
{
"type": "body",
"text": "Hi {{first_name}}, we would like to call you to assist with your recent order. Our support team is ready to help.",
"example": {
"body_text_named_params": [
{ "param_name": "first_name", "example": "Pablo" }
]
}
},
{ "type": "call_permission_request" }
]
}'
Constraints:
- Body text is required and must not be empty.
- The
call_permission_requestcomponent cannot be combined with other interactive components (no buttons, no quick replies, no URLs). - Only
MARKETINGandUTILITYtemplates can include this component.
When sent, the recipient sees a permission prompt and can grant or deny your business permission to call them outside the customer service window. Send via the standard /messages endpoint with parameter_format: named (note language.policy: deterministic is recommended).
Common Use Cases
- Order and delivery lifecycle notifications
- Account alerts and service-status updates
- Reservation and appointment confirmations
- Post-service feedback collection
- Follow-up on a support interaction started in another channel
- Opt-in and opt-out confirmations
- Delivery location updates (use a location template)
Sending Flow
- Create utility template (custom, location, or call-permission).
- Wait for
APPROVEDstatus. - Send via template message endpoint —
POST /<PHONE_NUMBER_ID>/messages. - Monitor webhook statuses and quality signals.
Utility templates are sent through Cloud API only. They cannot be sent through Marketing Messages API for WhatsApp, which is marketing-only.
Recategorization and Appeals
Meta automatically reclassifies a utility template as marketing if the content contains promotional language or mixed intent. When this happens, pricing and messaging behavior follow marketing rules immediately, and you receive a template_category_update webhook — see Webhook Events → Template Category Reclassification.
To challenge a reclassification, use Meta business support channels (Dualhook does not file appeals on your behalf).
Billing and Windows
- Utility templates inside an open CSW: free through September 30, 2026, then billed from October 1. Before the change, the webhook uses
pricing.type: free_customer_serviceandpricing.category: utility. - Utility templates outside an open CSW: billed at the utility rate for the recipient's country/region.
- Volume tiers apply — higher monthly volume per market–category unlocks lower rates. See Pricing → Volume Tiers.
Best Practices
- Keep utility templates factual, concise, and non-promotional.
- Include concrete transaction references (order, booking, account, case IDs).
- Do not add upsell or cross-sell wording in utility templates — Meta will reclassify them as marketing.
- Use marketing templates separately when the objective is promotion.
- For physical-location updates (delivery, pickup, store), prefer location templates over text-only descriptions.