A WhatsApp message template is a message format that you can use over and over again to message users once they have opted-in and given your app permission to send them messages. To use a message template, you must first submit it to WhatsApp. Meta reviews and approves each message template to maintain high-quality content and avoid spam. Once WhatsApp has approved your template, you can use the message template to send notifications. For more info on WhatsApp's template approval process, please refer to this article.
Templates use placeholder values that can be replaced with dynamic content inside double curly braces ({{...}}
) when the message is sent:
Your appointment for {{1}} is scheduled for {{2}}. Need to reschedule? Tap below to reply.
Think of your template message as a conversation starter; the goal is to convert this initial message into a two-way conversation when the user replies. Two-way conversations are considered higher value because you are engaging with your end-user. In addition, they reduce your spend because WhatsApp does not charge for free-form outbound messages within the 24-hour session. For more information on pricing, please see our pricing page.
If a WhatsApp user has sent your application a message — whether it's a reply to one of your outbound messages, or they have initiated communication themselves — your application has a 24-hour window (sometimes called a "24-hour session") to send that user messages that don't need to use a template.
When your application sends a message to a WhatsApp user outside a 24-hour session, the message must use an approved template.
Starting June 1, 2023, WhatsApp maintains separate 24-hour windows depending on the category of the template used to start the conversation. For example, if you already opened a 24-hour window using one template category, then a template of a different category would open up a second, separate 24-hour window.
Twilio has pre-provisioned for the following templates for use in the WhatsApp Sandbox:
Your {{1}} appointment is coming up on {{2}}. Get ready!
Your {{1}} order of {{2}} has shipped and should be delivered on {{3}}. Details : {{4}}. Let us know if you have any questions.
For more information, read our guide to getting started with the Twilio Sandbox for WhatsApp.
Your WhatsApp message templates must fall into one of the following categories. Please note that the categories "One-time password" and "Transactional" have been renamed to "Authentication" and "Utility", respectively.
As of June 1, 2023, Meta's fees for business-initiated conversations is now defined by the category of the template used to start the conversation. Any templates that do not clearly result from an explicit end-user request will likely be categorized by Meta as "Marketing". Learn more in our pricing page. Please refer to Meta's docs for examples and the latest details on Meta's template categorization rules. Meta determines template categories at their sole discretion.
Customers interested in sending notifications outside of the 24-hour window need to create their own templates for these messages.
Content Templates are omnichannel templates and offer access to WhatsApp templates. Content Templates are message templates that can be used on any channel, including WhatsApp. They offer flexibility and future proof your implementation at Twilio. Learn more detailed information about Content templates and how to use them for WhatsApp here.
** What is supported in Content Templates** | |
---|---|
Supported channels | WhatsApp, SMS, MMS, Facebook Messenger |
Sending messages | Send messages with a ContentSid field |
Messaging Service | Required |
Rich feature support | Latest rich features support by Twilio, such as catalog, carousels, media templates and dynamic buttons |
API to manage templates | Content API |
UI to manage templates | Content Editor In the Twilio Console, go to Messaging > Content Editor |
To create a WhatsApp template, go to Twilio Console > Messaging > Content Template Builder. Click on Create new:
Note: If you are not creating a template for the first time, you will see the Create your first content template button. Click it to create templates.
On the next screen, you will be able to fill out information to submit to WhatsApp. WhatsApp's team uses the information you submit to approve or reject your template submission.
For more information refer to this page on creating Content Templates
Template name: Name can only contain lowercase alphanumeric characters and underscores. Tip Use a name that helps WhatsApp's reviewer understand the purpose of your message, for example "order_delivery" rather than "template_1"
Template category: You must select the category that matches WhatsApp's definition. See Meta's docs for definitions and examples. Authentication templates have special constraints. (See below.)
Message language: Select from the languages provided by WhatsApp.
Message body: The text of the message that you want to send. Please note WhatsApp does not allow multiple sequential line breaks.
Buttons and other rich features: There are a variety of button types and other rich features that can be added into a content template. To see a full list of supported template types, see our content type overview here.
After you fill out the message template, click Save and submit for WhatsApp approval.
If your template includes placeholders (e.g. "Hello {{1}}! We've received your request regarding {{2}}."
), a modal will appear for you to add sample content for each placeholder. Enter in sample text for each placeholder and then click Save and submit to submit your template to WhatsApp.
Note: Once you submit a template, it currently cannot be edited.
Please refer to the WhatsApp documentation to learn more about message template formatting and supported languages.
When creating a template with the category of Authentication (i.e. Authentication Templates) using WhatsApp Templates, certain restrictions apply to comply with WhatsApp's policies:
To learn more about Authentication Templates, see more here.
WhatsApp currently evaluates each template language translation on an individual basis. Content Templates offers searching and filtering tools to help manage your templates.
To delete a message template, click on the template name on the WhatsApp Message Templates page and then click Delete at the bottom on the page. Or click on the 3-dot menu on the right hand side of the template and select Delete.
Per WhatsApp guidelines, you may not reuse the name of a deleted template for 30 days after deletion.
WhatsApp now supports up to 6000 template translations in total, across all templates, per account. Previous limits of 250 and 1500 templates no longer apply.
Most templates submitted to WhatsApp for approval are reviewed within minutes. To learn more about WhatsApp's approval process, and for additional tips and tricks, please refer to this article.
Twilio supports sending Content Templates using the ContentSid and ContentVariable parameters.
To send a templated message, include the ContentSid parameter in the call with the HX content sid of the template you would like to send. If your template includes variables, set them using the ContentVariables parameter. Twilio will send the message as a templated message if it matches one of the approved templates. For more information refer to this page on sending Content Templates.
For example, if your approved template is:
Hi {{1}}! Thanks for placing an order with us. We'll let you know once your order has been processed and delivered. Your order number is {{2}}. Thanks
in the Content Variables
parameter of the message resource, you would write the following with the end-user's information:
ContentVariables={ "1": "Joe", "2": "O12235234" }
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function createMessage() {11const message = await client.messages.create({12contentSid: "HXXXXXXXXX",13contentVariables: JSON.stringify({ 1: "Name" }),14from: "whatsapp:+15005550006",15messagingServiceSid: "MGXXXXXXXX",16to: "whatsapp:+18551234567",17});1819console.log(message.body);20}2122createMessage();
1{2"account_sid": "ACXXXXXXXXX",3"api_version": "2010-04-01",4"body": "Hello! 👍",5"date_created": "Thu, 24 Aug 2023 05:01:45 +0000",6"date_sent": "Thu, 24 Aug 2023 05:01:45 +0000",7"date_updated": "Thu, 24 Aug 2023 05:01:45 +0000",8"direction": "outbound-api",9"error_code": null,10"error_message": null,11"from": "whatsapp:+15005550006",12"num_media": "0",13"num_segments": "1",14"price": null,15"price_unit": null,16"messaging_service_sid": "MGXXXXXXXX",17"sid": "SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",18"status": "queued",19"subresource_uris": {20"media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json"21},22"tags": {23"campaign_name": "Spring Sale 2022",24"message_type": "cart_abandoned"25},26"to": "whatsapp:+18551234567",27"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"28}
Twilio's Error 63016 indicates that you are making an attempt to send a freeform message when there's no conversation set with that user. This may happen if your template was rejected later by WhatsApp. If you need to change the template to match your needs, please submit a new template. If you are seeing a different error code and you believe it is related to templates, please open a support ticket, and we will help you understand why this is happening.
If you are rendering new lines or other escaped characters, you will need to encode the line breaks properly based on the language you are using. The Twilio Console may show line breaks and other escaped characters in their raw form, such as \n
.
As a developer, you may want to send different types of notifications and messages to your users. However, it's difficult and inefficient to go through the template approval process described above for every type of message that you wish to send to your end-users.
For example, let's say you want to send out a time-sensitive message to all of your end-users, such as "Today, we are having a company-wide announcement at 11am." It is unlikely that WhatsApp will approve this template, which makes it challenging to build a real notification flow.
To work around this problem, you can create a generic template that asks your end-users to respond. An example of generic notification template that you can submit for approval is:
"Hello {{1}}, we have a new update regarding your account. Please respond to this message to receive it. Have a nice day!"
Once an end-user replies to this templated message, it initiates the 24-hour session, during which your business can send free-form messages.
Once you start using your templates, it's important to monitor them for excessive negative user feedback.
If end users are repeatedly giving blocking or reporting spam in association with a message template, WhatsApp will pause the template for a period of time to protect the quality rating of senders that have used the template. Pausing durations are as follows:
When a template is paused a third time it will instead be permanently disabled. Messages sent using paused or disabled templates will fail. Paused and disabled message templates that are attempted to be sent do not count against the daily messaging limit.
Twilio can send a notification using Twilio Alerts when a template status changes to "paused", "disabled" or "rejected". To get notified, create an alert for error 63041 (paused), 63042 (disabled) and/or 63040 (rejected). We also offer alarms for approved templates with code 63046.
You may send URLs in a template, e.g., "Thanks for registering with My Business. To continue click on https://app.example.com".
WhatsApp does not currently support URL previews in templated messages. URL previews are supported in in-session messages.
Ready to create your own WhatsApp templates? Head over to the Twilio Console to get started.