Template Messages

A message template is required for the Business to start a new conversation with User. This is required if there was no interaction between the accounts previously or if the last message sent by the User has more than 24h. See more information about this here.

Template messages must be submitted to Meta for approval before they are available to use. In addition, templates may be disabled automatically based on customer feedback. Once disabled, a template cannot be sent in a template message until its quality rating has improved or it no longer violates Meta's business or commerce policies.

Each WhatsApp Business Account can have up to 250 message templates. That means 250 message template names, and each of them can have multiple language translations. For example, a message template called hello_world translated into two languages counts as a single message template in regards to this limit.

Manage your Template Messages

There are multiple ways to submit a Template Message for approval and manage your approved templates.

In the 360dialog Hub

See our Template Message Management documentation.

In the API

You can use the WhatsApp Business Management API to create new message templates, media message templates, or interactive message templates.

Some important things to note:

  1. We support create and delete for templates. Editing a template is not yet available.

  2. The Create API call allows you to add a message template in a specific language.

  3. The Delete API call allows you to delete all translations of a message template you specify by name.

  4. When you create a message template, make sure to be consistent when providing translations.

  5. Every template has to be approved by Facebook.

    • You can use your template, as soon as its status changes to approved

      • This can take up to 48h. If your template is still in status submitted after two days, please contact Help and Support.

      • You can include allow_category_change=true in your API request to avoid template rejection due to miscategorization. Including this parameter and value will allow Meta to assign whatever category they determine to be appropriate.

To create a message template, you have to use the request below:

Create a template

POST [base-url]/v1/configs/templates

Headers

Name
Type
Description

D360-API-KEY

string

object	{WABA Template}	
    name	string	optional
    namespace	string	optional
    category	string	optional
    components	array[object]	optional
        type	string	Allowed Values: BODY, HEADER, FOOTER, BUTTONS
        format	string	Allowed Values: TEXT, IMAGE, DOCUMENT, VIDEO
        text	string	optional
        example	string	optional
        buttons	object	optional
            type	string	Allowed Values: PHONE_NUMBER, URL, QUICK_REPLY
            text	string	required
            url	string	optional
            phone_number	string	optional
            example	string	optional
    language	string	optional
    rejected_reason	string	optional
    status	string	optional

Currently, you cannot edit message templates. Please use a test account when learning to use the WhatsApp Business Management API.

More information about parameters, components, and buttons you can find here: Templates - WhatsApp Business API. More information about all supported languages you can find here: Supported Languages - WhatsApp Business API.

Template Variables

Any template that has one or more variables requires a sample in order to be submitted for review. You can add samples by including the example property in API request. You can also include allow_category_change=true in your API request to avoid template rejection due to miscategorization. Including this parameter and value will allow Meta to assign whatever category they determine to be appropriate.

Example: Create template (with HEADER-IMAGE + BODY + BUTTONS-URL + PHONE + FOOTER) Request URL: /v1/configs/templates

{
  "name": "template_name_example",
  "category": "UTILITY",
  "components": [
    {
      "type": "BODY",
      "text": "What do you want to do now?"
    },
    {
      "type": "HEADER",
      "format": "IMAGE",
      "example": {
          "header_handle": [
              "https://url-to-media-file/media.file"
          ]
      }
    },
    {
      "type": "FOOTER",
      "text": "your-footer-text"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "PHONE_NUMBER",
          "text": "your-phone-button-text",
          "phone_number": "+1(650) 555-1111"
        },
        {
          "type": "URL",
          "text": "your-url-button-text",
          "url": "https://www.website.com/{{1}}",
          "example": [
            "https://www.website.com/dynamic-url-example"
          ]
        }
      ]
    }
  ],
  "language": "en_US",
  "allow_category_change": true
}

You can use the WhatsApp Business Management API to get a list of your existing message templates.

Get template list

GET [base-url]/v1/configs/templates

Path Parameters

Name
Type
Description

limit

integer

default: 1000

offset

integer

default: 0

sort

string

Allowed Values: id, name, status

Headers

Name
Type
Description

D360-API-KEY

string

object
count integer optional
filters object optional
limit integer optional
offset integer optional
sort array[string] optional
total integer optional
waba_templates array[object] {WABA Template} optional
    name string optional
    namespace string optional
    category string optional
    components array[object] optional
        type string ALLOWED VALUES: BODY, VALUE, FOOTER, BUTTONS required
        format string ALLOWED VALUES: TEXT, IMAGE, DOCUMENT, VIDEO optional
        text string optional
        example string optional
    buttons object optional
        type string ALLOWED VALUES: PHONE_NUMBER, URL, QUICK_REPLY required
        text string required
        url string optional
        phone_number string optional
        example string optional
    language string optional
    rejected_reason string optional
    status string optional

Example:

Response code:

{
    "count": 3,
    "filters": {
    },
    "limit": 1000,
    "offset": 0,
    "sort": [
        "id"
    ],
    "total": 3,
    "waba_templates": [
        {
            "category": "UTILITY",
            "components": [
                {
                    "format": "TEXT",
                    "text": "Facebook Template Message",
                    "type": "HEADER"
                },
                {
                    "text": "Thank you for your request. \nAs Facebook closes the conversation after 24hours we cannot reach out to you anymore besides this template. \nIf you like to get in contact with us again and revoke the conversation please just click on one of the buttons and we get back to you.",
                    "type": "BODY"
                },
                {
                    "text": "Many thanks, your 360dialog team",
                    "type": "FOOTER"
                },
                {
                    "buttons": [
                        {
                            "text": "RESOLVED",
                            "type": "QUICK_REPLY"
                        },
                        {
                            "text": "NO",
                            "type": "QUICK_REPLY"
                        },
                        {
                            "text": "YES",
                            "type": "QUICK_REPLY"
                        }
                    ],
                    "type": "BUTTONS"
                }
            ],
            "language": "en",
            "name": "test_1",
            "namespace": "xxxxxxxx_xxxx_xxxx_xxxx_xxxxxxxxxxxx",
            "rejected_reason": "NONE",
            "status": "APPROVED"
        },
        {
            "category": "UTILITY",
            "components": [
                {
                    "text": "Thank you for reaching out to us. We are looking into your request and get back to you.",
                    "type": "BODY"
                },
                {
                    "text": "Feel free to get in contact",
                    "type": "FOOTER"
                },
                {
                    "buttons": [
                        {
                            "phone_number": "+49xxxxxxxxx",
                            "text": "Call number",
                            "type": "PHONE_NUMBER"
                        },
                        {
                            "text": "360dialog Website",
                            "type": "URL",
                            "url": "https://www.360dialog.com/de/whatsapp-business/"
                        }
                    ],
                    "type": "BUTTONS"
                }
            ],
            "language": "en",
            "name": "test_2",
            "namespace": "xxxxxxxx_xxxx_xxxx_xxxx_xxxxxxxxxxxx",
            "rejected_reason": "NONE",
            "status": "APPROVED"
        },
        {
            "category": "MARKETING",
            "components": [
                {
                    "text": "Hello {{1}}! This is a test message, setup with API version {{2}}",
                    "type": "BODY"
                },
                {
                    "buttons": [
                        {
                            "text": "Follow the link!",
                            "type": "URL",
                            "url": "https://www.360dialog.com/{{1}}"
                        }
                    ],
                    "type": "BUTTONS"
                },
                {
                    "text": "This is the footer",
                    "type": "FOOTER"
                }
            ],
            "language": "en",
            "name": "test_3",
            "namespace": "xxxxxxxx_xxxx_xxxx_xxxx_xxxxxxxxxxxx",
            "rejected_reason": "NONE",
            "status": "APPROVED"
        }
    ]
}

You can use the WhatsApp Business Management API to delete your message templates by providing the message template name. Some things to keep in mind before deleting a message template:

  • If that message template name exists in multiple languages, all languages will be deleted.

  • Messages that have been sent but not delivered (e.g., if the customer's device is offline) will attempt to be delivered for 30 days.

  • If a message from an approved message template is sent 30 days after deletion, you will receive a "Structure Unavailable" error and the customer will not receive the message.

  • Once deleted, the name of an approved template cannot be used again for 30 days. Use a different name to create future templates.

Delete a template

DELETE [base-url]/v1/configs/templates/{template_name}

Path Parameters

Name
Type
Description

template_name

string

Headers

Name
Type
Description

D360-API-KEY

string

{
    "meta": {
        "developer_message": "template name=`<template_name>` was deleted",
        "http_code": 200,
        "success": true
    }
}

More information on what is possible with templates can be found in the Facebook Template Message guide and the Facebook Template reference guide.

Template Categories

A template message can have three different categories:

  • UTILITY

  • MARKETING

  • AUTHENTICATION

Utility templates

Utility templates relate to a specific, agreed-upon transaction and accomplish one of the following: Confirm, suspend, or change a transaction or subscription.

Any template that has a mix of utility and marketing content will be classified as a marketing template.

Definition
Examples

Confirm or suspend an existing transaction

  • "Your subscription has been renewed successfully!"

  • "Your flight has been rescheduled for tomorrow at 10 AM."

  • "Congratulations! Your purchase has been confirmed and will be shipped out shortly."

  • "Thank you for visiting the doctor, here is your treatment plan"

  • "Your order has been canceled; your refund will be processed in 7-10 days"

Change or update a transaction

  • "You have successfully checked in! Here’s your boarding pass for your flight"

  • "Your order has shipped! It will be delivered on Friday"

  • "Reminder: Your appointment is at 1pm on Tuesday"

  • "Your password was changed"

  • "Your profile was updated"

Account, billing, or payment notification

  • "Here is the monthly statement you requested"

  • "Your payment was accepted” / "Your payment failed"

  • Reminder: your payment is due on Tuesday"

  • "Here is your low-balance warning for account ending in -XXXX"

  • "Your pre-paid balance is low; click here to top up"

Marketing templates

Marketing templates are the most flexible – they do not relate to a specific, agreed-upon transaction and instead may relate to the business and/or its products/services. These templates may include promotions or offers; welcoming / closing messages; updates, invitations or recommendations; or requests to respond or complete a new transaction.

Any template that has a mix of utility and marketing content will be classified as a marketing template.

Definition
Examples

Promotions or offers

  • "If you buy 2 or more coffees, you’ll get $5 off!"

  • "Thanks for your order! Use code SAVE20 for 20% off your next order!

  • "Your pre-paid balance is low; click here to top up! Get a 10% bonus with code EXTRA10"

  • "Hey members join us tonight for this event"

Welcoming or closing messages

  • "This is Vinny’s Bakery and we are now on WhatsApp!"

  • "Hello, welcome to our profile on WhatsApp!"

  • "I'm sorry for the delay, my name is XX, how can I help you?"

  • "Thank you, have a good day"

  • "A question for you - how much time are you spending doing your hair?"

Updates, invitations, newsletters, or recommendations

  • "Our store has moved. Come and check us out!"

  • "We will be closed next Monday for the holiday"

  • "Good news! The product you saved is back in stock."

  • "Join us for our upcoming holiday gala!"

  • "Here are this month’s coupons – happy shopping!"

  • "We think you will love this – check out our new ice cream flavor"

Requests to respond or complete a new transaction

  • "Thank you for your order. We’d love your feedback. Please click here."

  • "Forgot something? We kept your items, click to check out"

  • "Your application is waiting for you. Click here to complete"

  • "You missed your recent appointment, tap here to rebook."

Authentication templates

Authentication templates enable businesses to authenticate users with one-time passcodes (usually 4-8 digit alphanumeric codes), potentially at multiple steps in the login process (e.g., account verification, account recovery, integrity challenges).

For a template to be classified as authentication, a business must:

  • Use WhatsApp’s preset authentication message templates, which include optional add-ons like security disclaimers and expiry warnings.

  • Configure a one-time password button (copy-code or one-tap)

  • Follow content restrictions: URLs, media, and emojis are not allowed for authentication template content or parameters. Additional length restrictions of 15 characters also apply to parameters.

See our Authentication Templates with One-Time-Password documentation for the specific requirements.

Definition
Examples

Provide an authentication code to the user

  • "{{1}} is your verification code."

  • "{{1}} is your verification code. For your security, do not share this code."

  • "{{1}} is your verification code. This code expires in 15 minutes."

Template Statuses

Once a Template Message is created and approved, it can have the following statuses:

  • In-Review: Indicates that the template is still under review. The review process is done by Meta and it can take up to 24 hours.

  • Rejected: The template has been rejected during our review process or violates one or more of Meta's Policies.

  • Active - Quality pending: The message template has yet to receive quality feedback from customers. Message templates with this status can be sent to customers and will be monitored for rating. See Quality Rating.

  • Active - High Quality: The template has received little or no negative customer feedback. Message templates with this status can be sent to customers. See Quality Rating.

  • Active - Medium Quality: The template has received negative feedback from multiple customers but may soon become paused or disabled. Message templates with this status can be sent to customers. See Quality Rating.

  • Active - Low Quality: The template has received negative feedback from multiple customers. Message templates with this status can be sent to customers but are in danger of being paused or disabled soon, so it is recommended that you address the issues that customers are reporting. See Quality Rating.

  • Paused: The template has been paused due to recurring negative feedback from customers. Message templates with this status cannot be sent to customers. See Template Pausing.

  • Disabled: The template has been disabled due to recurring negative feedback from customers. Message templates with this status cannot be sent to customers.

  • Appeal Requested: Indicates that an appeal has been requested. See Appeals.

You can see the exact payload of every status when received via webhook here.

Template Pausing

If a message template reaches the lowest quality rating (a status of Active - Low quality), it will automatically be paused for a period of time. Pausing durations are as follows:

  • 1st Instance: Paused for 3 hours

  • 2nd Instance: Paused for 6 hours

  • 3rd Instance: Disabled

When a message template is paused (status of Paused) it can't be sent to customers, so you should suspend any automated messaging campaigns that rely on that template. Although you won't be charged for attempting to send a paused message template to a customer, and the attempt won't count against your messaging limit, the API will reject such attempts. You should only resume these campaigns once the template's status has been changed back to Active.

You may wish to edit a paused template if you feel that editing its content will reduce the amount of negative feedback it may receive. Keep in mind, however, that once you edit a message template and resubmit it for approval, its status will change to In Review and it can't be sent to customers again until it has been re-approved and the status set back to Active.

Having Paused Templates won't impact the WABA from which the message template was sent, or cause the Messaging Limit to decrease. Other high-quality message templates can continue to be sent from the phone number. However, if a business consistently sends message templates that reach a Low quality status, the WhatsApp Business Account may eventually be impacted. See WABA Policy Enforcement.

Unpausing

A template will unpause on its own after satisfying the pause duration outlined above. Once unpaused, the template's status will be set to Active and you may begin sending it to customers again. If you haven't suspended any automated messaging campaigns that relied on a paused template, they should start working again. However, we recommend that you hold any campaigns that rely on a template that has been paused until it is unpaused, because the API will reject your requests anyway.

The template's quality rating will also be reset to a value based on the most recent customer feedback the template has received.

Similar to pause notifications, we will notify you by WhatsApp Manager notification, email, and webhook once the template's status has been set to Active.

Appeal

You can submit Template Appeals from the WhatsApp Business Manager. Meta's team reviews the case against the appealed violation and decides the outcome, which typically takes 24 to 48 hours. The appealed violation will either remain Unchanged, or be set as Reversed. See our documentation for WABA Policy Enforcement.

Sending a Template Message

When sending messages with media such as images, videos, or audio files, it is important to ensure that they are not heavy, as processing heavy media files at once can cause delays in transmission and lead to issues with message delivery.

For this, we suggest uploading media beforehand using the /media endpoint and then utilizing the media_id obtained from the response when sending messages.

By following this approach, you can ensure that the media file is processed accurately without causing any delays or latencies during send-outs.

If the WABA is registered in On-premise API

Send a Template Message

POST https://waba.360dialog.io/v1/messages

There is no limit to the number of parameters allowed in a Message Template.

See Meta's Official Documentation to assemble your request's parameters.

Example 1 - Sending Basic Template Message

{
    "to": "wa_id",
    "type": "template",
    "template": { 
    "namespace": "c8ae5f90_307a_ca4c_b8f6_d1e2a2573574",
        "language": {
            "policy": "deterministic",
            "code": "en"
        },
        "name": "template_name"
    }
}

Example 2 - Sending Media Template Message with Parameters

{
    "to": "wa_id",
    "type": "template",
    "template": {
        "namespace": "c8ae5f90_307a_ca4c_b8f6_d1e2a2573574",
        "language": {
            "policy": "deterministic",
            "code": "en"
        },
        "name": "template_name",
        "components": [{
                "type": "header",
                "parameters": [{
                        "type": "image",
                        "image": {
                            "link": "https://link-to-your-image.jpg"
                        }
                    }
                ]
            }, {
                "type": "body",
                "parameters": [{
                        "type": "text",
                        "text": "John"
                    }, {
                        "type": "text",
                        "text": "1234abcd"
                    }
                ]
            }
        ]
    }
}

If the WABA is registered in Cloud API

Send Template Messages

POST https://waba-v2.360dialog.io/messages

See Meta's Official Documentation to assemble your request's parameters.

Any variables can be added with the Localizable Parameters. See the documentation on how to use it here.

Example 1 - Sending Basic Template Message

{
    "messaging_product": "whatsapp",
    "to": "wa_id",
    "type": "template",
    "template": { 
    "namespace": "c8ae5f90_307a_ca4c_b8f6_d1e2a2573574",
        "language": {
            "policy": "deterministic",
            "code": "en"
        },
        "name": "template_name"
    }
}

Example 2 - Sending Media Template Message with Parameters

{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "BODY",
        "parameters": [
          {
            "type": "TEXT",
            "text": "text-string"
          },
          {
            "type": "CURRENCY",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "DATE_TIME",
            "date_time": {
              "fallback_value": "DATE"
            }
          }
        ]
      }
    ]
  }
}

Example 3 - Template message with opt-out button

{ 
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "promotional_message",
    "language": "en_US",
    "category": "PROMOTIONAL",
    "components": [{
        "type":"BODY",
        "text":"Hi {{1}}, get an extra 10% off every order above $300.",
        "example":{"body_text":[["Maria"]]}
      },
      {
        "type":"HEADER",
        "format":"TEXT",
        "text": "Bonus Tuesday starts now!"
      },
      {
        "type":"FOOTER",
        "text":"Not interested? Tap Stop promotions"
      },
      {
        "type":"BUTTONS",
        "buttons":[{"type":"QUICK_REPLY", "text": "Shop now"},
        {"type":"QUICK_REPLY", "text": "Stop promotions"}]
      }]  
  }
}

Adding a marketing opt-out button to your Template Message

WhatsApp provides a marketing opt-out button that can be added to any template message.

To use it, you will simply need to add the following to your template message sending:

         {
           "type":"FOOTER",
           "text":"Not interested? Tap Stop promotions"
         },
         {
           "type":"BUTTONS",
           "buttons":[{"type":"QUICK_REPLY", "text": "Shop now"},
            {"type":"QUICK_REPLY", "text": "Stop promotions"}]
         }

Using this button will help you:

  • Reduce block rate: You’ll have a lower risk of campaign stoppages as a result. A high block rate may cause a campaign to be suspended or the quality rating of your phone number to decline. Giving customers the option to opt out instead of blocking your business ensures that campaigns can run uninterrupted.

  • Allow faster scaling: Your business may encounter quality issues as you scale your marketing outreach on WhatsApp. This usually happens when customers block certain templates. Allowing customers to opt out of marketing messages may reduce your block rate, which may help you increase your messaging limits faster.

  • Give customers options for how they want to hear from you: By letting customers opt out of marketing messages, you’ll keep your ability to contact them with critical information such as transactional and customer care messages.

  • Obtain better insights into customer preferences: Currently, your business can’t see which customers have blocked you. With the opt-out button, you will be able to see who has opted out of your marketing messages. This can help you learn from and improve your campaigns.

Example 3 - Template message with opt-out button

{ 
  "name": "promotional_message",
  "language": "en_US",
  "category": "MARKETING",
  "components": [{
           "type":"BODY",
           "text":"Hi {{1}}, get an extra 10% off every order above $300.",
           "example":{"body_text":[["Sonia"]]}
         },
         {
           "type":"HEADER",
           "format":"TEXT",
           "text": "Bonus Tuesday starts now!"
         },
         {
           "type":"FOOTER",
           "text":"Not interested? Tap Stop promotions"
         },
         {
           "type":"BUTTONS",
           "buttons":[{"type":"QUICK_REPLY", "text": "Shop now"},
            {"type":"QUICK_REPLY", "text": "Stop promotions"}]
         }]  
}

Best practices to get your Template Message approved

Here are some tips to get your templates through the review process: Clarity: be specific and clear. The reviewers may not know a customer’s business and need more clarity. Avoid spam promotion: You should avoid using language or tactics that are designed solely to promote a product or service, without providing any real value or benefit to the user. It's important to be mindful of several activities that could fall under this category, such as upselling, cold-calling, or using language that may sound overly promotional. Spelling: check for spelling and grammatical errors and use appropriate formatting (e.g., double curly brackets for parameters). Name: make your message template name clear. Instead of using a name like template_014, use bus_ticket_details. Remember that someone from Facebook will be reviewing your templates. Providing more clarity gives reviewers context around how the template will be used. Create context: if you need to write a message template to re-open the 24-hour window, we would suggest starting with some mention of the previous conversation thread. Make sure it's easy to navigate and understand, and that it provides a positive user experience. Choose an appropriate category: don’t forget to use the correct message template type. Choosing the correct one will increase the chances of getting your templates approved and will provide more information to WhatsApp during the approval process. See Template Categories. Header (optional): you can add a title or choose which type of media you'll use for this header. Image, PDF and Video is supported. Location Header will be available soon.

Any tiny detail can prevent a template from being approved. If you are creating duplicates or similar templates but are confused if one of them is approved and the other isn't, double check the small details that might differentiate the two. For example, if you duplicate an approved template or create a new one with similar content, please make sure that the language is the same for both. A simpler variation such as en_GB instead of en can cause the template rejection. It's important to also watch out for small word changes and different emojis.

BSPs have no control over Meta's decisions. All reviews and approvals are conducted by Meta's Trust and Safety team, hence they may not provide detailed information on why a specific message template was rejected, while a similar one with the same content was approved. However, please be assured that Meta's team thoroughly reviews every request. If you do not agree with their decision, you have the option to appeal it. Examples

Deal Promotion
Get in touch
Appointment Reminder

Best Practices for a high-quality opt-out experience

We recommend that you continue to optimize the user experience when designing your opt-out flow.

Here are some tips for creating a high-quality opt-out experience:

  • Honor all opt-out requests: It is important that your business takes the necessary steps to stop sending marketing messages to customers who have opted out. Otherwise, you’ll create a negative experience for your customers, which may impact your block rate and quality score. Also, you should stop sending marketing messages to these customers from all of your WhatsApp phone numbers.

  • Send a confirmation reply to customers who request to opt out to:

    • Include an option for customers to opt back in. This is helpful for people who change their minds or who have accidentally tapped the marketing opt-out button.

    • Ask customers for feedback on why they’ve opted out or what types of content they prefer to receive instead. This can help your business improve marketing messages and audience targeting.

  • Identify messages to add the marketing opt-out button to: Adding a marketing opt-out button to every message may be repetitive and even encourage customers to opt out. We see opt out works best when included in the following types of messages:

    • The first message a customer receives from your business.

    • The first message after a longer period without marketing messages.

    • Messages that are sent to unengaged customers.

Official Meta Developer Documentation

Message Templates for On-Premises API
Message Templates for Cloud API
Message Template Guidelines

Cost of WhatsApp Conversations

Cost of sending Template Messages / Conversations

Last updated

Was this helpful?

Revision created