Skip to content

WhatsApp Flows

WhatsApp Flows are forms that open inside WhatsApp. Customers can sign up, book an appointment or answer a survey without leaving the chat. Every endpoint on this page needs the /flow grant.

POST /flow/create

{
"whatsappPhoneId": "123456789012345",
"flow": {
"name": "Book a demo",
"categories": ["APPOINTMENT_BOOKING"],
"screens": [
{
"id": "DETAILS",
"title": "Your details",
"layout": {
"children": [
{ "type": "TextHeading", "text": "Book a demo" },
{ "type": "TextInput", "name": "full_name", "label": "Full name", "required": true },
{ "type": "TextInput", "name": "email", "label": "Email", "input-type": "email", "required": true },
{ "type": "DatePicker", "name": "date", "label": "Preferred date" },
{ "type": "Dropdown", "name": "team_size", "label": "Team size", "options": [{ "id": "1", "title": "1–10" }, { "id": "2", "title": "11–50" }] },
{ "type": "Footer", "label": "Submit" }
]
}
}
]
}
}

201: {"success": true, "message": "WhatsApp flow created successfully", "flow_id": "…"}. The new flow is a draft.

SIGN_UP, SIGN_IN, APPOINTMENT_BOOKING, LEAD_GENERATION, CONTACT_US, CUSTOMER_SUPPORT, SURVEY, OTHER

Type Use for
TextHeading, TextSubheading, TextBody Static text
TextInput One-line input. input-type: text, email, number, phone, passcode, password. Optional helper-text, pattern
TextArea Multi-line input
Dropdown, RadioButtonsGroup, CheckboxGroup Choices, as [{id, title}] options
DatePicker A date
OptIn A consent checkbox
PhotoPicker, DocumentPicker File uploads
Footer The submit button. Wabot adds one if you leave it out

PUT /flow/update

action What it does
update Replace the draft with a new flow definition
update_json Upload raw Meta Flow JSON in flow_json
publish Publish the flow so it can be sent. A published flow can’t be edited
{ "flow_id": "1234567890", "action": "publish" }

DELETE /flow/delete with body {"flow_id": "…"}

A draft is deleted. A published flow can’t be deleted, so Wabot marks it deprecated instead.