Skip to Content
API ReferenceWhatsAppConversational Components

Conversational Components

Three in-app affordances that improve first-message quality:

ComponentWhat the user sees
Welcome MessageAn auto-sent greeting the first time a customer opens the chat with your number
Ice BreakersUp to 4 tappable prompts shown above the input field on an empty chat
CommandsSlash-commands (/help, /track, …) that appear when the user types /

All three are configured per-phone-number via a single endpoint.

1. Read current configuration

GET /api/v25.0/{PHONE_NUMBER_ID}?fields=conversational_automation Authorization: Bearer pk_live_<your-key>

Response — 200

{ "conversational_automation": { "enable_welcome_message": true, "prompts": [ "How do I track my order?", "What's your return policy?", "Talk to a human" ], "commands": [ { "command_name": "help", "command_description": "Show available commands" }, { "command_name": "track", "command_description": "Track your latest order" } ] }, "id": "112269058640637" }

2. Update configuration

POST /api/v25.0/{PHONE_NUMBER_ID}/conversational_automation Authorization: Bearer pk_live_<your-key> Content-Type: application/json

Request body

Send only the fields you want to change. Omitted fields are left as-is; sending an empty array ([]) clears that component.

{ "enable_welcome_message": true, "prompts": [ "How do I track my order?", "What's your return policy?", "Talk to a human" ], "commands": [ { "command_name": "help", "command_description": "Show available commands" }, { "command_name": "track", "command_description": "Track your latest order" }, { "command_name": "human", "command_description": "Connect to a human agent" } ] }

Field rules

FieldConstraints
enable_welcome_messageBoolean. When true, Meta sends a request_welcome webhook to your endpoint on first contact — you reply with the actual welcome text
prompts1–4 entries, each ≤ 80 chars. Empty array clears prompts
commands1–30 entries. command_name is 1–32 lowercase alphanumeric + _; command_description ≤ 256 chars

Response — 200

{ "success": true }

Welcome Message — how it actually fires

Setting enable_welcome_message: true does not define the message text. Instead, when a customer opens the chat for the first time, Meta calls your webhook with:

{ "type": "request_welcome", "from": "+919999999999" }

You then call Send Messages within 60 seconds with whatever welcome you want — text, template, media, interactive, or even a flow. Miss the window and the user sees nothing.

Ice Breakers — UX rules

  • Always shown on empty chats only. Once the customer has sent one message, the prompts disappear forever for that conversation.
  • Tapping a prompt sends it as a normal text message — you receive it in your webhook as type: "text", no special marker. To attribute, match the body against your configured prompts.

Commands — UX rules

  • The user types / and a picker appears. Tapping a command sends it as a text message — /help, /track, etc.
  • You receive it as a normal text webhook. Route by exact match on the leading /<command_name>.
  • Updating commands takes effect on Meta’s side within a minute, but the client may cache the old list for up to an hour.

Errors

BodyWhen
(#100) Invalid parameter — promptsOne of the prompts exceeds 80 chars
(#100) Invalid parameter — commandscommand_name contains uppercase, dashes, or spaces
(#136025) Conversational automation rate limitedMore than ~5 updates in 5 minutes — back off

cURL — set ice breakers + commands

curl -X POST \ "https://api.splashifypro.com/api/v25.0/$PHONE_NUMBER_ID/conversational_automation" \ -H "Authorization: Bearer $SPLASHIFY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "enable_welcome_message": true, "prompts": [ "Track my order", "Return policy", "Talk to a human" ], "commands": [ { "command_name": "help", "command_description": "Show available commands" }, { "command_name": "track", "command_description": "Track your latest order" } ] }'

Notes

  • Per-phone-number, not per-WABA. If you operate multiple numbers for one brand, set the same prompts on each — Meta does not share configuration across numbers.
  • Localisation. Meta picks a single language per phone number; there’s no per-recipient translation today. Use the phone number’s verified_name language to decide.