Conversational Components
Three in-app affordances that improve first-message quality:
| Component | What the user sees |
|---|---|
| Welcome Message | An auto-sent greeting the first time a customer opens the chat with your number |
| Ice Breakers | Up to 4 tappable prompts shown above the input field on an empty chat |
| Commands | Slash-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/jsonRequest 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
| Field | Constraints |
|---|---|
enable_welcome_message | Boolean. When true, Meta sends a request_welcome webhook to your endpoint on first contact — you reply with the actual welcome text |
prompts | 1–4 entries, each ≤ 80 chars. Empty array clears prompts |
commands | 1–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
| Body | When |
|---|---|
(#100) Invalid parameter — prompts | One of the prompts exceeds 80 chars |
(#100) Invalid parameter — commands | command_name contains uppercase, dashes, or spaces |
(#136025) Conversational automation rate limited | More 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_namelanguage to decide.