WhatsApp flows
A Flow is a native form: the customer fills it inside WhatsApp, with no browser and no external link. Useful for taking an order, a booking or qualifying a lead, where a back-and-forth of questions would be tedious and lose half the people.
Lifecycle
GET /whatsapp/flows
POST /whatsapp/flows
GET /whatsapp/flows/{id}
PATCH /whatsapp/flows/{id}
PUT /whatsapp/flows/{id}/json
POST /whatsapp/flows/{id}/publish
POST /whatsapp/flows/{id}/deprecate
DELETE /whatsapp/flows/{id}
A published flow cannot be edited. That is a Meta rule: to change anything you deprecate and publish a new version. Plan for it in your integration rather than discovering it in production.
PUT /json accepts autoFix: the most common structural mistakes are corrected instead of returning a flat rejection.
Sending a flow
A flow is attached to a message, with type: "flow" on POST /whatsapp/messages. The flow_token you pass comes back in the response: that is what lets you tie a submission to a record.
Collecting responses
GET /whatsapp/flows/{id}/responses
GET /whatsapp/flows/{id}/stats
This is what an integration comes for. Responses arrive continuously; poll periodically, or wire up your webhook.
Dynamic screens
PUT /whatsapp/flows/{id}/endpoint
Declares the URL Meta calls while the customer fills the form, to feed a screen from your own data - available slots, remaining stock, prices. Without an endpoint, the form stays static.
Preview
GET /whatsapp/flows/{id}/preview
Returns a preview link, to open in a browser and see the real rendering before publishing.