Utility templates | Developer Documentation
Utility templates
Updated: Nov 14, 2025
This document describes how to create and send utility templates.
Utility templates are typically sent in response to a user action or request, such as an order confirmation or update.

Utility templates have strict content requirements, particularly around marketing material. If you attempt to create or update a utility template with marketing material, the template will automatically be re-categorized as a marketing template.
See our template categorization documentation for content guidelines.
Supported components
Utility templates support the following components:
Create a utility template
Request syntax
POST/<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templatescurl 'https://graph.facebook.com/<API_VERSION>/<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer<ACCESS_TOKEN>' \-d '{"name": "<TEMPLATE_NAME>","language": "<TEMPLATE_LANGUAGE>","category": "utility","parameter_format": "<PARAMETER_FORMAT>","components": [<!-- header component optional -->{"type": "header","format": "<HEADER_TYPE>","example": {"header_handle": ["<HEADER_HANDLE>"]}},<!-- body component required -->{"type": "body","text": "<BODY_TEXT>",<!-- example required if <BODY_TEXT> contains oneor more parameters -->"example": {"body_text_named_params": [{"param_name": "<PARAMETER_NAME>","example": "<PARAMETER_EXAMPLE_VALUE>"},<!-- additional parameters would follow, if usingmultiple parameters -->]}},<!-- footer component optional -->{"type": "footer","text": "<FOOTER_TEXT>"},<!-- button components optional -->{"type": "buttons","buttons": [{"type": "url","text": "<URL_BUTTON_LABEL_TEXT>","url": "<URL>"},{"type": "phone_number","text": "<PHONE_BUTTON_LABEL_TEXT>","phone_number": "<PHONE_NUMBER>"},{"type": "quick_reply","text": "<QUICK_REPLY_BUTTON_LABEL_TEXT>"}]}]}'
Request parameters
| | |
| ||
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
Response syntax
{"id": "<TEMPLATE_ID>","status": "<TEMPLATE_STATUS>","category": "<TEMPLATE_CATEGORY>"}
Response parameters
| | |
| | |
| |
Example request
curl 'https://graph.facebook.com/v23.0/102290129340398/message_templates' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer EAAJB...' \-d '{"name":"reservation_confirmation","language":"en_US","category":"utility","parameter_format":"named","components": [{"type":"header","format":"image","example": {"header_handle": ["4::aW..."]}},{"type":"body","text":"*You're all set!*\n\nYour reservation for {{number_of_guests}} at Lucky Shrub Eatery on {{day}}, {{date}}, at {{time}}, is confirmed. See you then!","example": {"body_text_named_params": [{"param_name":"number_of_guests","example":"4"},{"param_name":"day","example":"Saturday"},{"param_name":"date","example":"August 30th, 2025"},{"param_name":"time","example":"7:30 pm"}]}},{"type":"footer","text":"Lucky Shrub Eatery: The Luckiest Eatery in Town!"},{"type":"buttons","buttons": [{"type":"url","text":"Change reservation","url":"https://www.luckyshrubeater.com/reservations"},{"type":"phone_number","text":"Call us","phone_number":"+15550051310"},{"type":"quick_reply","text":"Cancel reservation"}]}]}'
Example response
{"id":"546151681022936","status":"PENDING","category":"UTILITY"}
Send a utility template
Request syntax
POST/<WHATSAPP_BUSINESS_PHONE_NUMBER_ID>/messagecurl 'https://graph.facebook.com/<API_VERSION>/<WHATSAPP_BUSINESSS_PHONE_NUMBER_ID>/messages' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer <ACCESS_TOKEN>' \-d '{"messaging_product":"whatsapp","recipient_type":"individual","to":"<WHATSAPP_USER_PHONE_NUMBER>","type":"template","template": {"name":"<TEMPLATE_NAME>","language": {"code":"<TEMPLATE_LANGUAGE>"},"components": [<!-- Only required if the template uses a media header component -->{"type":"header","parameters": [{"type":"<MEDIA_HEADER_TYPE>","<MEDIA_HEADER_TYPE>": {"id":"<MEDIA_HEADER_ASSET_ID>"}}]},<!-- Only required if the template uses bodycomponent parameters -->{"type":"body","parameters": [{"type":"<NAMED_PARAM_TYPE>","parameter_name":"<NAMED_PARAM_NAME>","text":"<NAMED_PARAM_VALUE>"},<!-- Additional parameters values wouldfollow, if needed -->]}]}}'
Request parameters
| | |
| ||
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
Response syntax
{"messaging_product":"whatsapp","contacts": [{"input":"<WHATSAPP_USER_PHONE_NUMBER>","wa_id":"<WHATSAPP_USER_ID>"}],"messages": [{"id":"<WHATSAPP_MESSAGE_ID>","message_status":"<PACING_STATUS>"}]}
Response parameters
| | |
| | |
| | |
| |
Example request
curl 'https://graph.facebook.com/v23.0/106540352242922/messages' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer EAAJB...' \-d '{"messaging_product":"whatsapp","recipient_type":"individual","to":"16505551234","type":"template","template": {"name":"reservation_confirmation","language": {"code":"en_US"},"components": [{"type":"header","parameters": [{"type":"image","image": {"id":"2871834006348767"}}]},{"type":"body","parameters": [{"type":"text","parameter_name":"number_of_guests","text":"4"},{"type":"text","parameter_name":"day","text":"Saturday"},{"type":"text","parameter_name":"date","text":"August 30th, 2025"},{"type":"text","parameter_name":"time","text":"7:30 pm"}]}]}}'
Example response
{"messaging_product":"whatsapp","contacts": [{"input":"16505551234","wa_id":"16505551234"}],"messages": [{"id":"wamid.HBgLMTY1MDM4Nzk0MzkVAgARGBJBRkJENzExMTRFRjk2NTI1OTEA","message_status":"accepted"}]}