___

Use WhatsApp message templates

WhatsApp message templates allow you to send messages to users outside of the 24-hour session window. This guide covers how to choose the correct format, structure its content, and create and register a template.

## Create and register a WhatsApp message template

You can create and register a WhatsApp message template using our web interface or our WhatsApp API.

IMPORTANT
To ensure template approval, follow the guidelines stated on the [Message template compliance](https://www.infobip.com/docs/whatsapp/compliance/template-compliance) page.

### Message templates over the web interface [#message-templates-over-the-web-interface-create-and-register-a-whatsapp-message-template]

To create and register a WhatsApp message template on our web interface, follow the steps below:

1. [Log in](https://portal.infobip.com/login/) and select **Channels and Numbers > Channels**.
2. Select **WhatsApp** and go to the **Senders** tab.
3. For the desired sender, select the three dots menu and then **Manage templates**.
4. Select **Register template**.
5. Choose the template category: **Marketing**, **Utility**, or **Authentication**. Then, choose the appropriate [subcategory](https://www.infobip.com/docs/whatsapp/message-types-and-templates#message-templates).
6. Enter the template name and language, and you can begin designing the template through the template editor. Follow the required specifications to register your template successfully. As you make changes, you can preview how the message will look in the left preview window.

NOTE
The template name can contain only lowercase letters, numbers, or underscores. White spaces or other characters are not allowed.

When you finish the design, select **Register template** and await approval. You can monitor the state of your template to see if it is **Approved**, **Pending**, or **Rejected**.

To see how to register the WhatsApp message template on the Infobip web interface in action, check our demo video below:

### Message templates over the API [#message-templates-over-the-api-create-and-register-a-whatsapp-message-template]

Using [Infobip WhatsApp API](https://www.infobip.com/whatsapp-business/api), you can create, modify, send, retrieve, or delete your templates.

| API | Description |
| --- | --- |
| Create a WhatsApp template | Create a template and upload media files during registration. |
| Get all WhatsApp templates | Retrieve all templates and their statuses for a specified sender. |
| Get a WhatsApp templates | Retrieve a single template and its status for a specified template ID. |
| Get account WhatsApp templates | Retrieve all templates associated with your account. You can filter them by sender, status, name, language, category, application ID, and entity ID |
| Edit a WhatsApp template | Modify a template that is in `APPROVED`, `REJECTED`, or `PAUSED` status. Once edited, the template will be submitted for review and must be approved again before it can be sent to the users. |
| Send a WhatsApp template | Send a single or multiple WhatsApp templates to your users.You can also enable the failover to SMS option (`smsFailover`) and ensure that the message will still be delivered through SMS if it fails on WhatsApp. |
| Delete a WhatsApp template | Deleting a template also removes all registered languages. The template will be removed for all senders under the same WABA. Messages sent before deletion will still attempt delivery for 30 days.You cannot reuse the template name for 30 days after deletion. |
| Receive a WhatsApp template update | Get real-time notifications when a template changes. Updates can include template status, category, or quality. |

Looking for more technical details?
Visit the [Infobip WhatsApp API documentation](https://www.infobip.com/docs/api/channels/whatsapp) for full endpoint specifications, request examples, and response parameters.

## Message template formats

There are several message template formats available, depending on the template category you choose.

### Text and rich media template [#text-and-rich-media-template-message-templates]

- Send single text-only or rich media messages with buttons.
- Classified as a **Marketing** or a **Utility** template.

### Carousel template [#carousel-template-message-templates]

- Send a message with up to 10 carousel cards, text, and buttons.
- You can define media (image or video) and button types for all your cards.
- Classified as a **Marketing** or a **Utility** template.
- It can be created on the web interface or using the WhatsApp API.

### Limited time offer template [#limited-time-offer-template-message-templates]

- Send time-bound offers with expiration dates for offer codes.
- You can define the offer heading, expiration date, and button types.
- Classified as a **Marketing** template.
- The footer is not supported.
- It can be created on the web interface or using the WhatsApp API.

### Coupon code template [#coupon-code-template-message-templates]

- Send discount codes with a button to quickly copy the code.
- You can add a button to copy the code. The code can contain a maximum of 15 characters.
- Classified as **Marketing** template.
- It can be created on the web interface or using the WhatsApp API.

### Flow template [#flow-template-message-templates]

- Send a message with a button that initiates a predefined flow.
- You can create a button that allows customers to trigger the flow by entering the Flow ID.
- It can be created on the web interface or using the WhatsApp API.

### Authentication template [#authentication-template-message-templates]

- Send a one-time verification code.
- Add your message and a security recommendation to users not to share the code with anyone.
- Choose how users can copy the verification code:
    - **Create a button to copy the code**.
    - **Create a button for one-tap autofill (Android only)**: the code will automatically be copied to the app when you tap the button. For this to work, you must enter the Android app's package name and signature hash.

To use an authentication template for the authentication copy code button through the WhatsApp API, you must set the button type as `URL` with the authentication code value as the parameter (if you create the template through our template editor, the `URL` will automatically be set as the button type).

View JSON example

```json
{
  "messages": [
    {
      "from": "441134960000",
      "to": "441134960001",
      "messageId": "a28dd97c-1ffb-4fcf-99f1-0b557ed381da",
      "content": {
        "templateName": "template_name",
        "templateData": {
          "body": {
            "placeholders": [
              "Authentication Code Value"
            ]
          },
          "buttons": [
            {
              "type": "URL",
              "parameter": "Authentication Code Value"
            }
          ]
        },
        "language": "en_GB"
      },
      "callbackData": "Callback data",
      "notifyUrl": "https://www.example.com/whatsapp",
      "urlOptions": {
        "shortenUrl": true,
        "trackClicks": true,
        "trackingUrl": "https://example.com/click-report",
        "removeProtocol": true,
        "customDomain": "example.com"
      }
    }
  ]
}
```

## Supported template elements

Message templates include the following sections:

- Header
- Body
- Footer
- Buttons
- Cards (check [Carousel template](#carousel-template-message-templates))

Different template categories support different elements. Below is a summary of available components over our web interface.

|  | Text and rich media | Carousel | Limited-time offer | Coupon | Flow | Authentication |
| --- | --- | --- | --- | --- | --- | --- |
| Header | • Text• Image• Video• Document• Location | • Image• Video | • Image• Video | • Text• Image• Video• Document• Location | • Text• Image• Video• Document• Location | ❌ |
| Body | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Footer | ✅ | ❌ | ❌ | ✅ | ✅ | • Non-editable text• Code expiry time |
| Buttons | • Quick reply• Call button• Click-to-URL• Voice Call button | • Quick reply• Call button• Click-to-URL | • Quick reply• Call button• Click-to-URL• Copy code | • Quick reply• Call button• Click-to-URL• Copy code | • Flow trigger | • Copy code• One-tap autofill |
| Cards | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |

### Header [#header-message-templates]

The header is optional. Use it to provide additional context before the main message body. Headers can include media or short text to support the content of your message.

Supported header types:

| Header type | Limitations |
| --- | --- |
| Text | Maximum: 60 charactersSupports 1 placeholder |
| Image | File size: Up to 5 MBFormats: `.jpg`, `.jpeg`, `.png`Recommended resolution: 1125 px x 600 px |
| Video | File size: Up to 16 MBFormats: `.mp4`Recommended resolution: 1125 px x 600 px |
| Document | File size: Up to 100 MBFormat: `.pdf` |
| Location | Appears as a generic map at the top of the templateTapping the map opens the specified location in the user's default map application |

NOTE
To ensure media is displayed correctly, use a direct link that ends with a file extension (`.mp4`). YouTube or streaming service URLs are not supported.

### Body [#body-message-templates]

The body is a required section and contains the main content of the message.

Guidelines:

- It supports only text and emojis.
- It can include placeholders.
- Maximum length: 1,024 characters.
- It cannot include newlines, tab characters, or more than four consecutive spaces.
- If using sample content for placeholders, sample values must be provided for all placeholders in the message.

NOTE
A placeholder is a variable (like `{{1}}`) that gets replaced with dynamic content when the message is sent. If your template includes multiple placeholders, you must provide sample values for **all of them** during creation and registration. Otherwise, the template will be rejected.

### Footer [#footer-message-templates]

The footer is optional and appears below the message body. Use it for short, non-interactive information.

Guidelines:

- It supports only plain text.
- It cannot contain placeholders.
- Maximum length: 60 characters.
- In **Authentication** templates, the footer can contain a code expiry notice.

### Buttons [#buttons-message-templates]

Buttons are optional components in a message template that enable customers to interact directly within the chat. Depending on the template type, you can include up to 10 buttons. Buttons allow customers to respond quickly, take specific actions, or navigate to external resources without leaving the conversation. They can be used to trigger replies, open links, copy codes, or start a call.

#### Quick reply

Allow users to respond by tapping one of the predefined options.

- Maximum: 10 quick reply buttons per template.
- Label text: Up to 25 characters.

#### Call button

Initiates a phone call to the specified business number.

- Only one call button is allowed per template.
- The phone number must be in international format, starting with a `+` sign.
- Label text: Up to 25 characters.

#### Click-to-URL

Opens a specified URL in the user's browser.

- Maximum: 2 URL buttons per template.
- Label text: Up to 25 characters.
- URL: Up to 2,000 characters.
- URL may include one placeholder at the end.

#### Copy code

Allows users to copy a code (for example, a coupon) with a single tap.

- Label text: Up to 25 characters.

## WhatsApp template library

The [template library](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/send-message-templates/template-library), provided by **Meta**, helps you create standard message templates faster by offering a catalog of predefined templates for common utility and authentication use cases. Examples include payment reminders, account updates, delivery confirmations, and identity verification.

Library templates contain fixed content that cannot be edited. You can only customize the values of predefined parameters and button actions, such as URLs. These templates are already categorized by WhatsApp as `UTILITY` or `AUTHENTICATION`, so you do not need to submit them for approval.

You can access the template library programmatically using our **web interface** or Meta's **WhatsApp Manager**.

NOTE
The template library is maintained by **Meta** and available only for **utility** and **authentication** template categories.

### Fetch and create templates in the web interface [#create-templates-using-web-interface-template-library]

To fetch or create templates in the web interface:

1. Log in to the [web interface](https://portal.infobip.com/), go to **Channels and Numbers** > **Channels**, and select **WhatsApp**.
2. On the **Templates** tab, open the **Register template** dropdown and choose **Select from Meta template library**.
3. Select your sender.
4. Browse the template library and choose a template.
5. Enter the template name and the required parameter values, then select **Register template**.

IMPORTANT
The template library is maintained by **Meta** and available only for **utility** and **authentication** template categories.

### Create templates using WhatsApp Manager [#create-templates-using-whatsapp-manager-template-library]

To create a template from the library in **WhatsApp Manager**:

1. In [WhatsApp Manager](https://business.facebook.com/wa/manage/template-library), go to **Message templates** > select **Create template**.
2. Under **Browse the WhatsApp template library**, select **Browse templates**.
3. Use the filters or search bar to explore available templates by industry, topic, use case, or language.
4. Select a template, name it, and enter the required parameter values and button actions (such as URL).
5. Select **Submit** to create the template.

IMPORTANT
If you choose **Customize template**, the template will be submitted for review and will no longer qualify as a pre-approved library template.
---