All guides

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 text with 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_meeting question gets your default availability; adjust it later wherever you need.
  • File-upload settings — each file_upload gets 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.