Create a WhatsApp Flow in Avox click by click: start from scratch or a premade Flow, name it, edit and check its JSON with Meta, set up an endpoint if it needs one, and publish.
This walkthrough takes you through the Create Flow wizard. A Flow is a structured form a customer fills out inside WhatsApp itself: a booking, a sign-up, a survey or a support request. Once it's published, you send it with an automation. Every part is covered in full on Flows, and what Flows are on WhatsApp Flows.
Before you start
You need a WhatsApp number connected to Avox first (Connect WhatsApp). Admins and Managers can create Flows by default; an Admin can change that per member under Permissions ("Create and edit Flows").
A premade Flow is the fastest start. Avox has ready-made Flows in two groups:
Start from scratch gives you a simple one-screen form to edit, under a category: Sign up, Log in, Appointment booking, Lead generation, Shopping, Contact us, Customer support, Survey or Other.
You write the Flow in Meta's Flow JSON. If that's new to you, start from a premade Flow and change it.
Open the wizard
Click Flows in the sidebar, then Create Flow at the top of the page. Or click a card under Start from a premade Flow on the Flows page: it opens the wizard with that Flow filled in, at Name.
The wizard has three steps, Type, Name and Content, with a live phone preview on the right. Back to Flows returns to the list at any time; your work is kept as a draft.

Type: pick a category or a premade Flow
Under Start from scratch, click a category, for example Appointment booking. Or under Or start from a premade Flow, click one listed under No endpoint needed or Needs a live endpoint.
Hovering or clicking a card shows it on the phone; nothing is picked until you click Continue.

Name: name it and pick categories
Under Name your Flow, enter a Flow name (up to 100 characters). It's what you'll see in the Flows list and in Meta's. A premade Flow fills in its own title, which you can change.
Under Categories, click one or more chips. Meta allows more than one category per Flow. Click Next.

Content: edit the JSON
Edit the Flow in the Flow content Editor (JSON). The phone preview reads your JSON as you type. Click Run (or press Ctrl + Enter, Cmd + Enter on a Mac) to refresh it on purpose; the preview pulses to confirm. For a Flow with several screens, use the Previewing menu above the phone to look at each one.

Check for errors
Click Errors in the footer. It lists problems Avox spots as you type, numbered, starting with anything that isn't valid JSON. When there are problems, the button turns red and shows how many.
Then click Validate above the editor to check the JSON with Meta too. Meta's findings join the same list. With nothing left to fix, it reads "No errors - Meta's happy with this JSON."
Review the actions
Click Actions in the footer to see each action your Flow uses (such as complete), how many
times, and what it does in plain English.
Set up an endpoint (only if needed)
A Flow that needs live data talks to your own server. Click Endpoint in the footer, switch on This Flow needs a live endpoint, and complete the five checklist steps ("Complete the steps below"):
https:// address.Endpoint snippet gives a working starting point for your server in Next.js or Express. See Live endpoints.
Create & publish
Click Create & publish. You see "Flow created and published", the wizard returns to the Flows page, and the Flow shows as Published under Your Flows.
Send it with an automation
Flows reach customers through an automation. Add a Use Flows action, pick your Flow, and set its button label (for example "Book now"). It costs 3 credits each time it's sent. See Use Flows and Create an automation.
A Flow started from scratch begins with one screen holding a form with a Full name field and a Submit button that completes the Flow:
{
"version": "6.0",
"screens": [
{
"id": "MAIN",
"title": "New Flow",
"terminal": true,
"success": true,
"data": {},
"layout": {
"type": "SingleColumnLayout",
"children": [
{
"type": "Form",
"name": "form",
"children": [
{ "type": "TextInput", "name": "full_name", "label": "Full name", "input-type": "text", "required": true },
{ "type": "Footer", "label": "Submit", "on-click-action": { "name": "complete", "payload": {} } }
]
}
]
}
}
]
}
Add fields to the form's children, change the title, or add more screens. The phone preview
shows each change.
Your progress saves as a draft as you go. Resume it any time from the Drafts section on the Flows page, which holds up to 10 drafts. Start over in the summary bar at the top of the wizard discards the draft and begins a new Flow. If your internet connection drops, your Flow stays on this device and you can publish it once you're back online.
The avatar shows "Check the Flow's name, categories, and JSON." (AVX-3032). Make sure the Flow has a name, at least one category, valid JSON, and an endpoint URL if This Flow needs a live endpoint is on.
Run is greyed out while the JSON doesn't parse. Open Errors: the first item says where the JSON breaks, often a missing comma or bracket.
Work through the Endpoint checklist until it reads "Endpoint is set up" (5/5). The health check is a plain reachability check; your server still has to decrypt Meta's requests with the private key, as the Endpoint snippet shows.
Last updated