Skip to main content

WhatsApp Message Types

The WhatsApp Business API supports a variety of message types to enable rich, interactive customer communication. This guide covers all available message types, when to use each one, and how they work within the Exotel platform.

Message Type Overview​

Message TypeRequires TemplateSession RequiredDescription
TemplateYesNoPre-approved messages to initiate conversations
TextNoYesPlain text messages within a session
MediaNoYesImages, videos, documents, audio, stickers
InteractiveNoYesButtons, list menus, quick replies
LocationNoYesShare GPS coordinates with a map preview
ContactNoYesShare contact cards (vCard)
ReactionNoYesReact to a message with an emoji
tip

Template messages are the only type that can be sent outside the 24-hour session window. All other message types require an active session initiated by the customer. See Session Messages for details.

Template Messages​

Template messages are pre-approved message formats required for initiating business-to-customer conversations. They are reviewed by Meta before they can be used.

Structure​

ComponentRequiredDescription
HeaderNoText, image, video, or document
BodyYesMain message text with {{1}}, {{2}} parameters
FooterNoShort footer text (max 60 characters)
ButtonsNoQuick Reply or Call-to-Action buttons (max 3)

API Example​

curl -X POST "https://<api_key>:<api_token>@api.in.exotel.com/v2/accounts/<account_sid>/messages" \
-H "Content-Type: application/json" \
-d '{
"from": "+919876500001",
"to": "+919876543210",
"content": {
"type": "template",
"template": {
"name": "order_confirmation",
"language": {
"code": "en",
"policy": "deterministic"
},
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Rahul" },
{ "type": "text", "text": "ORD-12345" }
]
}
]
}
}
}'

For detailed template guidance, see Template Messages.

Text Messages​

Simple plain-text messages sent within an active 24-hour session window.

Specifications​

PropertyLimit
Max length4,096 characters
FormattingBold (*text*), italic (_text_), strikethrough (~text~), monospace (```text```)
URLsAutomatically rendered as clickable links
EmojisSupported

API Example​

curl -X POST "https://<api_key>:<api_token>@api.in.exotel.com/v2/accounts/<account_sid>/messages" \
-H "Content-Type: application/json" \
-d '{
"from": "+919876500001",
"to": "+919876543210",
"content": {
"type": "text",
"text": {
"body": "Thank you for contacting us! How can we help you today?",
"preview_url": false
}
}
}'

Text Formatting​

FormatSyntaxResult
Bold*bold text*bold text
Italic_italic text_italic text
Strikethrough~strikethrough~strikethrough
Monospace```code```code

Media Messages​

Share images, videos, documents, audio files, and stickers within a session.

Media TypeSupported FormatsMax Size
ImageJPEG, PNG5 MB
VideoMP4, 3GPP16 MB
AudioAAC, MP3, AMR, OGG16 MB
DocumentPDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT100 MB
StickerWebP (static), WebP (animated)100 KB (static), 500 KB (animated)

For detailed media messaging guidance, see Media Messages.

Interactive Messages​

Interactive messages allow customers to take action directly within the chat using buttons and menus.

Types of Interactive Messages​

TypeMax OptionsDescription
Reply Buttons3 buttonsUp to 3 quick action buttons
List Message10 items in up to 10 sectionsScrollable menu of options
CTA URL Button2 buttonsButtons that open a URL

Reply Buttons Example​

{
"type": "interactive",
"interactive": {
"type": "button",
"body": {
"text": "How would you like to proceed with your order?"
},
"action": {
"buttons": [
{ "type": "reply", "reply": { "id": "track", "title": "Track Order" } },
{ "type": "reply", "reply": { "id": "cancel", "title": "Cancel Order" } },
{ "type": "reply", "reply": { "id": "support", "title": "Talk to Agent" } }
]
}
}
}

List Message Example​

{
"type": "interactive",
"interactive": {
"type": "list",
"body": {
"text": "Please select your issue category:"
},
"action": {
"button": "View Options",
"sections": [
{
"title": "Order Issues",
"rows": [
{ "id": "order_status", "title": "Order Status", "description": "Check your order delivery status" },
{ "id": "order_return", "title": "Return/Refund", "description": "Initiate a return or refund" }
]
},
{
"title": "Account",
"rows": [
{ "id": "profile", "title": "Update Profile", "description": "Change your account details" },
{ "id": "password", "title": "Reset Password", "description": "Reset your login credentials" }
]
}
]
}
}
}

For detailed interactive messaging guidance, see Interactive Messages.

Location Messages​

Share a location with GPS coordinates, displayed as a map preview in the chat.

API Example​

{
"type": "location",
"location": {
"latitude": 12.9716,
"longitude": 77.5946,
"name": "Exotel Office",
"address": "Bengaluru, Karnataka, India"
}
}

Contact Messages​

Share a contact card (vCard) containing phone numbers, email addresses, and other details.

API Example​

{
"type": "contacts",
"contacts": [
{
"name": {
"formatted_name": "Exotel Support",
"first_name": "Exotel",
"last_name": "Support"
},
"phones": [
{ "phone": "+919876500001", "type": "WORK" }
],
"emails": [
{ "email": "support@exotel.com", "type": "WORK" }
]
}
]
}

Reaction Messages​

React to a specific message with an emoji. Useful for acknowledgments.

API Example​

{
"type": "reaction",
"reaction": {
"message_id": "wamid.xxxxxxxxxxxx",
"emoji": "\ud83d\udc4d"
}
}

Choosing the Right Message Type​

Use CaseRecommended TypeWhy
Initiate conversationTemplateRequired outside session window
Simple responseTextFast, lightweight
Send invoice or reportMedia (Document)Supports PDFs up to 100 MB
Offer choicesInteractive (Buttons)Clear, clickable options
Category selectionInteractive (List)Organized, scrollable menu
Product showcaseMedia (Image/Video)Visual engagement
Store locationLocationMap preview included
Share contact detailsContactNative vCard format
Acknowledge a messageReactionQuick, non-intrusive
warning

Sending non-template messages outside the 24-hour session window will result in an error. Always check if a session is active before sending free-form messages. Use the WhatsApp API to check session status.

Next Steps​