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.
- During an active 24-hour customer service window (CSW), utility templates are free — 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.
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 <ACCESS_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 (
pricing.type: free_customer_service,pricing.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.