Flow import format
Import flow format
The simplified JSON your chat AI returns when you use the \u201cCreate with prompt\u201d guide. It is a plain list of questions — no IDs, no variables, no conditions — so an AI can produce it reliably and ChatMakeee can validate it completely before importing.
[
{
"type": "single_select",
"text": "Are you a new patient or an existing one?",
"options": [
{
"label": "New patient",
"children": [
{ "type": "text", "text": "Great — what brings you in today?" }
]
},
{ "label": "Existing patient" }
]
},
{ "type": "email", "text": "What is your email address?" },
{ "type": "book_meeting", "text": "Pick a time that works for you." }
]Question types
Each entry is one question. Only these types are supported — anything else blocks the import:
- text — an open short-answer question (use this for a name).
- number — a numeric answer.
- email — collects, validates, and saves an email address.
- phone — collects and saves a phone number.
- date — a free date the visitor enters.
- single_select — one answer chosen from option buttons.
- multi_select — several answers chosen from option buttons.
- book_meeting — a booking step that opens your real calendar availability inside the chat. Your settings (hours, slots, time zone) are applied on import.
- file_upload — lets the visitor attach a document, saved on the lead. Sensible file-type and size limits are applied on import.
Each question has just three fields
A question object can only carry three fields:
- type — one of the supported types above. If missing, it is treated as
textwith a clear warning. - text — the question the visitor sees. Must not be empty.
- description — optional helper text shown under the question.
Anything else (IDs, variables, availability, colors, message tones) is either generated for you or ignored with a warning — never silently.
Branching with nested answer options
Select questions (single or multi) carry an options array. Each option is either a string label or an object with a label and an optional children array of further questions:
{
"type": "single_select",
"text": "Do you want a quote?",
"options": [
{ "label": "Yes", "children": [
{ "type": "text", "text": "Tell us what you need" }
] },
{ "label": "No" }
]
}This is exactly how branching works in the builder: the questions under an option only run when that option is chosen. Nesting is capped at six levels — deeper flows are rejected with a clear message so nothing is lost or mangled.
What the import handles for you
- IDs and variables — generated automatically and kept unique across the whole flow, including nested branches.
- Booking settings — each
book_meetingquestion gets your default availability; adjust it later wherever you need. - File-upload settings — each
file_uploadgets the default accepted types and size limit. Change per question in the builder if needed. - Blockers vs warnings — blockers (unsupported type, empty text, unusable options, over-deep nesting) stop the import until fixed. Warnings (unknown fields we ignored, missing type, a very large flow) describe the auto-fix so you always know what changed.
Validation as you paste
You never press a “validate” button. In the Create with prompt wizard the pasted text is checked automatically a moment after you stop typing, and a status line updates live — either “Looks good — N questions, no blockers” or the number of remaining blockers and warnings.
Each issue is shown with its path in the flow and, for common failures, a plain-language Fix hint — for example an unsupported type, a select with no options, an empty question text, over-deep nesting, or text that is not JSON. Fix the issue in the AI output, paste again, and it re-validates by itself.
Troubleshooting
- “Not valid JSON” — Copy only the JSON block your AI returned. A little prose around it is fine; markdown fences are stripped automatically.
- Missing email or phone — To capture leads, ask for the contact details inside the flow itself (at least one email or phone step).
- Option branching looks flat — Make sure follow-up questions are inside an option’s
children, not added as siblings.
When everything checks out, the flow opens in the builder ready to edit — or keep generating with your AI until the conversation feels right.