What is Carousel


The Carousel templates allow you to send a single text message accompanied by a set of up to 10 carousel cards in a horizontally scrollable view:



Components in the Template


  1. Message Bubble

    1. A message bubble is required. Message bubbles are text-only and support variables in it. 

    2. One Carousel Template can only have 1 generic message bubble present which can be used to explain the carousel cards and set the context.

    3. It supports up to a Maximum of 1024 characters.

  2. Carousel Cards: Carousel templates support up to 10 carousel cards. 

    1. Header: Cards must have a mandatory media header (image or video).

    2. Card Body text:

      1. A card body bubble is required and is text-only which supports variables.

      2. It only supports up to a Maximum of 160 characters in each card.

    3. Button 

      1. It should at least have 1 button for each card.

      2. It supports a maximum of up to 2 buttons for each card.

      3. The button types supported are Quick Reply, Website URL CTA & Call Phone Number CTA.

      4. Buttons can be the same type or a mix of Quick reply buttons, phone number buttons, or URL buttons for each card.


Important Note: The template will be rejected if we fail to follow the above limitations of the Carousel Template. 



Note

  • The media header format and button types must be the same across all cards that make up a carousel template.

  • Media assets will be cropped to a wide ratio based on the customer's device.

  • The template will be rejected if we fail to follow the above limitations of the Carousel Template. 

  • The Carousel message template is only supported in the Cloud APIs.



Create Carousel Template


Currently, Carousel Templates can only be created using the WhatsApp Template APIs. It is not supported on the Exotel or Meta Templates dashboard. 


Create the template via Support: for Non-API Users 

As Meta has not made the Carousel Template creation available on their dashboard and is only supporting it to be created via APIs, we are making it available to our customers in an easy way. 

  • We at Exotel are extending our support to make it available to all the customers who mostly rely on Exotel or the Meta Template Management Dashboard to remove the API-only roadblock. 

  • You can simply raise a ticket to us with all the Template message content and we will get this done for you. In phase 1, we have limited the creation process via the support ticket.

Customers not integrated with Template APIs or are not familiar with using the APIs can seek assistance from the Exotel support team. They just need to raise a ticket with the details mentioned below. Let’s see the process quickly - 

  1. Support Request Submission:

    1. A support request needs to be raised via email to hello@exotel.in with the filled Carousel Template sheet attached.

    2. Email Subject: Create the Carousel Template for WABA ID <WABA ID> under <Account SID> SID

    3. Sample Body
      Hi Team, 

      Please help us create this carousel template for our account:

WABA: <waba_name>
WABA ID: <waba_id>
API Key: <api_key>
API Token: <api_token>
Subdomain: <subdomain>
Account SID: <sid>

The message content is shared below - Attach the <Create Carousel Template filled sheet link> (with public access to the sheet). 

  1. Sample Sheet - 

    1. Please create a copy of this sheet Create Carousel Template

    2. Fill in all the details with the help of the sample provided in the sheet.

Note: Please take help from your CX/Account managers to fill in the details in the sheet in case of any difficulties or queries.


Create the template via API: Direct API Access

Things to follow to Create the Template via API

  1. You can access the Create Template APIs from 

    1. Postman Collection - Create Carousel Template APIs 

    2. Developer Documentation - Template APIs.

  2. You will need to have the API credentials to access the APIs, get this from your Exolite dashboard under the API Credentials section - Exotel Dashboard.

  3. Now you need to construct API requests, call the Exotel APIs, and create carousel templates on the correct WABA and Exolite accounts.

  4. Please refer to the sample request shared below or the working postman collection has a ready Carousel template sample linked above in point 1.i.


Get Started

Use the Create Templates API to create & submit templates to WhatsApp for approval. The API supports both single and bulk creation.

POST - https://{{AuthKey}}:{{AuthToken}}@{{SubDomain}}/v2/accounts/{{AccountSid}}/templates?waba_id=

  1. Replace <api_key> and <api_token> with the API key and token created by you.

  2. Replace <sid> with your “Account sid".

  3. Replace <subdomain> with the region of your account

    1. <subdomain> of Singapore cluster is @api.exotel.com

    2. <subdomain> of Mumbai cluster is @api.in.exotel.com

  4. <api_key>, <api_token>, <subdomain>, and <sid> are available in the API settings page of your Exotel Dashboard.

API Key, API Token, Subdomain, & Account SID: The API details are present in the Exotel account under the API Credentials section. 

Login to your Exotel account, go to the API Settings page, and get all the required details as shown below

On this page, you will find your <your_sid>, <subdomain>, <your_api_key>, and <your_api_token> for the respective account and share it with the support team.

WABA Name & ID: The WhatsApp business manager Account name from the Exotel messaging console or Meta dashboard.


Example Request for Create Carousel Template


{

  "name": "summer_carousel_promo_2023",

  "language": "en_US",

  "category": "MARKETING",

  "components": [

    {

      "type": "BODY",

      "text": "Summer is here, and we have the freshest produce around! Use code {{1}} to get {{2}} off your next order.",

      "example": {

        "body_text": [

          [

            "15OFF",

            "15%"

          ]

        ]

      }

    },

    {

      "type": "CAROUSEL",

      "cards": [

        {

          "components": [

            {

              "type": "HEADER",

              "format": "IMAGE",

              "example": {

                "header_handle": [

                  "4::aW..."

                ]

              }

            },

            {

              "type": "BODY",

              "text": "Rare lemons for unique cocktails. Use code {{1}} to get {{2}} off all produce.",

              "example": {

                "body_text": [

                  [

                    "15OFF",

                    "15%"

                  ]

                ]

              }

            },

            {

              "type": "BUTTONS",

              "buttons": [

                {

                  "type": "QUICK_REPLY",

                  "text": "Send more like this"

                },

                {

                  "type": "URL",

                  "text": "Buy now",

                  "url": "https://www.luckyshrub.com/shop?promo={{1}}",

                  "example": [

                    "https://www.luckyshrub.com/shop?promo=summer_lemons_2023"

                  ]

                }

              ]

            }

          ]

        },

        {

          "components": [

            {

              "type": "HEADER",

              "format": "IMAGE",

              "example": {

                "header_handle": [

                  "4::aW..."

                ]

              }

            },

            {

              "type": "BODY",

              "text": "Exotic fruit for unique cocktails! Use code {{1}} to get {{2}} off all exotic produce.",

              "example": {

                "body_text": [

                  [

                    "20OFFEXOTIC",

                    "20%"

                  ]

                ]

              }

            },

            {

              "type": "BUTTONS",

              "buttons": [

                {

                  "type": "QUICK_REPLY",

                  "text": "Send more like this"

                },

                {

                  "type": "URL",

                  "text": "Buy now",

                  "url": "https://www.luckyshrub.com/shop?promo={{1}}",

                  "example": [

                    "https://www.luckyshrub.com/shop?promo=exotic_produce_2023"

                  ]

                }

              ]

            }

          ]

        }

      ]

    }

  ]

}


  • The above example helps you create a Carousel Template with a Message Bubble Text with 2 variables followed up with 2 carousel cards with 2 buttons each: Quick Reply & Website CTA.

  • You can refer to the API sample and construct your type of carousel message content with the help of the below Body Properties which explains each section and the parameter details with sample values.


Body Properties


Placeholder

Description

Example Value

<BUBBLE_TEXT>

String

Required.


Message bubble text string. Supports variables.


Maximum 1024 characters.

Summer is here, and we've got the freshest produce around! Use code {{1}} to get {{2}} off your next order.

<BUBBLE_TEXT_VAR_EXAMPLE>

Array of strings

Required if the message bubble text string uses variables.


Array of example variable strings. Number of strings must match the number of variables included in the string.

"15OFF","15%"

<CARD_BODY_TEXT>

String

Required.


Card body text. Support variables.


Maximum 160 characters.

Rare lemons for unique cocktails. Use code {{1}} to get {{2}} off all produce.

<CARD_BODY_TEXT_VAR_EXAMPLE>

Array of strings

Required if using card body text with variables.


Card body text example variables.

"15OFF","15%"

<CARD_HEADER_FORMAT>

Enum

Required.


Card media header format. Must be IMAGE or VIDEO.

IMAGE

<CARD_HEADER_HANDLE>

Media asset handle

Required.


Uploaded media asset handle. Use the Resumable Upload API to generate an asset handle.


Important: Please use the Upload Sample Media API to generate an ID and use that ID to provide a Sample Header Handle.


See Carousel Cards for media asset requirements.

4::aW...

<QUICK_REPLY_BUTTON_TEXT>

String

Required if using a quick reply button.


Quick reply button label text.


Maximum 25 characters.

Send more like this

<TEMPLATE_CATEGORY>

Enum

Required.


Must be MARKETING or UTILITY.

MARKETING

<TEMPLATE_LANGUAGE>

Enum

Required.


Template language and locale code.

en_US

<TEMPLATE_NAME>

String

Required.


Template name.


Maximum 512 characters.

summer_carousel_promo_2023

<URL_BUTTON_TEXT>

String

Required if using a URL button.


URL button label text. Supports 1 variable.


25 characters maximum.

Buy now

<URL_BUTTON_URL>

String

Required if using a URL button.


URL of website that loads in the device's default mobile web browser when the URL button is tapped by the app user.


Supports 1 variable, appended to the end of the URL string.


Maximum 2000 characters.

https://www.luckyshrub.com/shop?promo={{1}}

<URL_BUTTON_VAR_EXAMPLE>

String

Required if using a URL button.


URL of website. Supports 1 variable.


If using a variable, add sample variable property to the end of the URL string. The URL loads in the device's default mobile web browser when the customer taps the URL button.


Maximum 2000 characters.

https://www.luckyshrub.com/shop?promo=summer_lemons_2023


Preview Template


  1. After creating the Carousel Template, you should be able to check the template preview before start sending the template.

  2. The template will be available in the Exotel WhatsApp dashboard for the interactive preview and here is how you can navigate to see the preview:

    1. You can log in to your Exolite account and navigate to the WhatsApp section from the LHS navigation bar.

    2. Go to the Template section from the LHS navigation bar.

    3. Search for the provided template name and click on the Edit icon on the right-hand side.

    4. This will open the message preview for the selected template.

  3. Please note that we do not support Create and Edit Carousel templates on the console at the moment.


Sending Carousel Templates

Now that the Carousel templates are created using the APIs, the customer should be able to send the templates.


There are 2 ways to send the carousel Templates:

  1. Send via APIs

  2. Send via Campaigns


Let’s try to understand how can a user send the carousel templates as explained below.


Send via APIs 


Use the WhatsApp Business Phone Number to send a carousel template message using a carousel template with an APPROVED status.


Credentials

Use the create templates API to create & submit templates to WhatsApp for approval. The API supports both single and bulk creation.

POST - https://<api_key>:<api_token><subdomain>/v2/accounts/<sid>/messages

  1. Replace <api_key> and <your_api_token> with the API key and token created by you.

  2. Replace <sid> with your “Account sid".

  3. Replace <subdomain> with the region of your account

    1. <subdomain> of Singapore cluster is @api.exotel.com

    2. <subdomain> of Mumbai cluster is @api.in.exotel.com

  4. <api_key>, <api_token>, and <sid> are available in the API settings page of your Exotel Dashboard.


Example Request of Sending Carousel


{

  "messaging_product": "whatsapp",

  "recipient_type": "individual",

  "to": "16505555555",

  "type": "template",

  "template": {

    "name": "summer_carousel_promo_2023",

    "language": {

      "code": "en_US"

    },

    "components": [

      {

        "type": "BODY",

        "parameters": [

          {

            "type": "TEXT",

            "text": "20OFF"

          },

          {

            "type": "TEXT",

            "text": "20%"

          }

        ]

      },

      {

        "type": "CAROUSEL",

        "cards": [

          {

            "card_index": 0,

            "components": [

              {

                "type": "HEADER",

                "parameters": [

                  {

                    "type": "IMAGE",

                    "image": {

                      "id": "24230790383178626"

                    }

                  }

                ]

              },

              {

                "type": "BODY",

                "parameters": [

                  {

                    "type": "TEXT",

                    "text": "10OFF"

                  },

                  {

                    "type": "TEXT",

                    "text": "10%"

                  }

                ]

              },

              {

                "type": "BUTTON",

                "sub_type": "QUICK_REPLY",

                "index": "0",

                "parameters": [

                  {

                    "type": "PAYLOAD",

                    "payload": "59NqSd"

                  }

                ]

              },

              {

                "type": "button",

                "sub_type": "URL",

                "index": "1",

                "parameters": [

                  {

                    "type": "payload",

                    "payload": "last_chance_2023"

                  }

                ]

              }

            ]

          },

          {

            "card_index": 1,

            "components": [

              {

                "type": "HEADER",

                "parameters": [

                  {

                    "type": "IMAGE",

                    "image": {

                      "id": "1690627074790615"

                    }

                  }

                ]

              },

              {

                "type": "BODY",

                "parameters": [

                  {

                    "type": "TEXT",

                    "text": "30OFF"

                  },

                  {

                    "type": "TEXT",

                    "text": "30%"

                  }

                ]

              },

              {

                "type": "BUTTON",

                "sub_type": "QUICK_REPLY",

                "index": "0",

                "parameters": [

                  {

                    "type": "PAYLOAD",

                    "payload": "7C4xhY"

                  }

                ]

              },

              {

                "type": "BUTTON",

                "sub_type": "URL",

                "index": "1",

                "parameters": [

                  {

                    "type": "payload",

                    "payload": "summer_blues_2023"

                  }

                ]

              }

            ]

          }

        ]

      }

    ]

  }

}







Body Properties


Placeholder

Description

Example Value

<BUBBLE_TEXT_VARIABLE>

String

Required if the message bubble uses variables.


Message bubble text variable.


There is no maximum character limit on this value, but counts against the message bubble limit of 1024 characters.

20OFF

<BUTTON_INDEX>

Integer

Required.


Zero-indexed order in which button appears at the bottom of the template message. 0 indicates the first button, 1 indicates second button, etc.

0

<CARD_INDEX>

Integer

Required.


Zero-indexed order in which card appears within the card carousel. 0 indicates first card, 1 indicates second card, etc.

0

<CARD_BODY_VARIABLE>

String

Required if card body text uses a variable.


Card body text variable.


There is no maximum character limit on this value, but counts against the card body text limit of 160 characters.

20OFF

<HEADER_ASSET_ID>

Media asset handle

Required.


Uploaded media asset ID.

24230790383178626

<QUICK_REPLY_BUTTON_PAYLOAD>

String

Optional.


Value to be included in messages webhooks (messages.button.payload) when the button is tapped.

59NqSd

<TEMPLATE_LANGUAGE_CODE>

Enum

Required.


Language and locale code of the template to be sent in the template message.

en_US

<TEMPLATE_NAME>

String

Required.


Name of the template to be sent in the template message.

summer_carousel_promo_2023

<TO>

String

Required.


Phone number of customer who the template message should be sent to.

16505555555

<URL_BUTTON_PAYLOAD>

String

Required if the URL button uses a variable.


URL button variable value.

last_chance_2023



Send via Campaigns


After creating the template, you can send the carousel template using our Campaign console which is explained below



  1. You need to log in to the Exotel Campaign console and click on Create Campaign.

  2. Provide all the Basic Information details on the first step and click on Next.

  3. On the second step of Template selection, you will be able to see and search the Carousel template name. Select the template and click on Next.



  1. You will land on the third step, Configure Your Message section where you will have to provide all the Variable and Media details for all your cards present in that carousel.

  2. Once the variables are configured, you can proceed ahead and send the campaign by configuring the schedule.


You can see the Campaign Analytics after the campaign completion -