Skip to content
OmniChannels.ai

Free tool

WhatsApp Flows JSON Templates and Previewer

Twelve copy-ready WhatsApp Flow templates in English, Arabic, French, Spanish, German and Portuguese, from lead capture and appointment booking to NPS surveys, KYC checklists and Ramadan offer sign-ups. Preview every screen in a phone frame, copy or download the Flow JSON, and check your own JSON against the rules Meta documents.

Free · no sign-up · runs in your browser

Show templates for

Lead capture

Template language

Flow JSON (version 7.3)

{
  "version": "7.3",
  "screens": [
    {
      "id": "CONTACT",
      "title": "Your details",
      "layout": {
        "type": "SingleColumnLayout",
        "children": [
          {
            "type": "TextHeading",
            "text": "Tell us about you"
          },
          {
            "type": "TextBody",
            "text": "It takes less than a minute. We only use these details to reply to your request."
          },
          {
            "type": "TextInput",
            "name": "full_name",
            "label": "Full name",
            "input-type": "text",
            "required": true
          },
          {
            "type": "TextInput",
            "name": "company",
            "label": "Company",
            "input-type": "text",
            "required": false
          },
          {
            "type": "TextInput",
            "name": "email",
            "label": "Email",
            "input-type": "email",
            "required": true
          },
          {
            "type": "TextInput",
            "name": "phone",
            "label": "Mobile number",
            "input-type": "phone",
            "required": true,
            "helper-text": "Include the country code, for example +971"
          },
          {
            "type": "Footer",
            "label": "Continue",
            "on-click-action": {
              "name": "navigate",
              "next": {
                "type": "screen",
                "name": "NEEDS"
              },
              "payload": {}
            }
          }
        ]
      }
    },
    {
      "id": "NEEDS",
      "title": "Your request",
      "terminal": true,
      "success": true,
      "layout": {
        "type": "SingleColumnLayout",
        "children": [
          {
            "type": "RadioButtonsGroup",
            "name": "interest",
            "label": "What are you interested in?",
            "required": true,
            "data-source": [
              {
                "id": "demo",
                "title": "A product demo"
              },
              {
                "id": "pricing",
                "title": "Pricing"
              },
              {
                "id": "partnership",
                "title": "Partnership"
              },
              {
                "id": "other",
                "title": "Something else"
              }
            ]
          },
          {
            "type": "Dropdown",
            "name": "timeline",
            "label": "When do you start?",
            "required": true,
            "data-source": [
              {
                "id": "now",
                "title": "Right away"
              },
              {
                "id": "one_three",
                "title": "In 1 to 3 months"
              },
              {
                "id": "later",
                "title": "Later this year"
              },
              {
                "id": "exploring",
                "title": "Just exploring"
              }
            ]
          },
          {
            "type": "RadioButtonsGroup",
            "name": "call_time",
            "label": "Best time to call",
            "required": false,
            "data-source": [
              {
                "id": "morning",
                "title": "Morning"
              },
              {
                "id": "afternoon",
                "title": "Afternoon"
              },
              {
                "id": "evening",
                "title": "Evening"
              }
            ]
          },
          {
            "type": "TextArea",
            "name": "message",
            "label": "Message",
            "required": false,
            "helper-text": "Anything we should know before we call"
          },
          {
            "type": "OptIn",
            "name": "marketing_opt_in",
            "label": "Send me product news and offers on WhatsApp. I can reply STOP at any time.",
            "required": false
          },
          {
            "type": "Footer",
            "label": "Send request",
            "on-click-action": {
              "name": "complete",
              "payload": {
                "full_name": "${screen.CONTACT.form.full_name}",
                "company": "${screen.CONTACT.form.company}",
                "email": "${screen.CONTACT.form.email}",
                "phone": "${screen.CONTACT.form.phone}",
                "interest": "${form.interest}",
                "timeline": "${form.timeline}",
                "call_time": "${form.call_time}",
                "message": "${form.message}",
                "marketing_opt_in": "${form.marketing_opt_in}"
              }
            }
          }
        ]
      }
    }
  ]
}

Paste it into the Flow editor in WhatsApp Manager, or upload it with the Flows API. Replace the example privacy URL with yours. These templates run without a data endpoint, so they need no data_api_version and no routing_model.

Message that opens the Flow (Cloud API)

{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "<CUSTOMER_PHONE_NUMBER>",
  "type": "interactive",
  "interactive": {
    "type": "flow",
    "header": {
      "type": "text",
      "text": "Talk to our team"
    },
    "body": {
      "text": "Share a few details and the right person will contact you within one business day."
    },
    "action": {
      "name": "flow",
      "parameters": {
        "flow_message_version": "3",
        "flow_token": "<UNIQUE_FLOW_TOKEN>",
        "flow_id": "<FLOW_ID>",
        "flow_cta": "Get in touch",
        "flow_action": "navigate",
        "flow_action_payload": {
          "screen": "CONTACT"
        }
      }
    }
  }
}

An interactive message can be sent only inside the 24-hour customer service window. To start the conversation yourself, attach the Flow to an approved message template with a Flow button.

WhatsApp Flows rules these templates follow

  • Flow JSON 7.3 is the version Meta recommends for publishing new Flows.
  • A Flow without a data endpoint needs only version and screens; Meta generates the routing model.
  • Every Flow ends on a terminal screen with a Footer that runs the complete action.
  • Limits per screen: 50 components, 1 Footer, 2 embedded links, 3 images and 5 opt-ins.
  • Labels are short: 20 characters for text inputs and dropdowns, 30 for radio and checkbox groups, 35 for the Footer button.
  • Screen ids use letters and underscores only, and SUCCESS is reserved.

Rules checked against Meta's WhatsApp Flows documentation on 2026-10-10.

We build and host Flows with your data endpoint

Need live slots, prices or account data inside a Flow? Our team designs the screens, builds and hosts the encrypted data endpoint and connects the answers to your CRM. Contact sales for a scoped quote.

Nothing you type here is sent to our servers.

Short answer

A WhatsApp Flow is a set of in-chat screens defined in Flow JSON. The simplest valid Flow has a version, such as 7.3, and a screens array. Each screen has an id made of letters and underscores, a SingleColumnLayout with components, and one Footer button. Screens move forward with navigate actions, and the last screen is marked terminal and runs complete, which sends the answers to your webhook.

How to use a WhatsApp Flow template

  1. 1

    Pick a template

    Choose a use case such as lead capture, table booking or a support ticket, then switch between the language versions.

  2. 2

    Preview the screens

    Tap the button in the phone preview to move through each screen exactly in the order the customer will see it.

  3. 3

    Copy or download the JSON

    Paste the Flow JSON into the Flow editor in WhatsApp Manager or upload it with the Flows API, then publish it.

  4. 4

    Validate your edits

    Paste your changed JSON into the validator to catch broken routes, missing fields and labels over Meta's character limits.

What is in a WhatsApp Flow JSON file

Flow JSON has two required properties: version and screens. Each screen has an id, an optional title shown in the top bar, and a layout of type SingleColumnLayout whose children are components: text, inputs, selection lists, date pickers, opt-ins and one Footer button.

Navigation lives in actions. A Footer with navigate opens the next screen; on the final screen, which is marked terminal, a Footer with complete closes the Flow and sends the payload to your business with the flow token. From Flow JSON 4.0, any screen can read fields from an earlier screen with ${screen.SCREEN_ID.form.field}, so the templates keep navigate payloads empty and collect every answer in the final complete payload.

  • version: the Flow JSON version, "7.3" in every template.
  • screens: the ordered list of screens; the first one without an inbound route is the entry screen.
  • routing_model and data_api_version: only for Flows that call your data endpoint.
  • terminal and success: mark the last screen and whether finishing there counts as success.

Flows with or without a data endpoint

All twelve templates are endpoint-less. They work without a server: options are written into the JSON, Meta generates the routing model, and you receive the answers on your webhook when the customer completes the Flow. Meta recommends endpoint-less Flows whenever live data is not needed, because they open faster and are quicker to build.

Add a data endpoint when the screen depends on live data: available appointment slots, a price that changes, stock, or a check against the customer's account. Then the screens use data_exchange, the Flow needs data_api_version and a routing_model, and your endpoint must decrypt each request and answer within Meta's timeout. That is the part we build and host for clients.

Character limits and component rules to respect

Most rejected Flows fail on small rules. Labels are short: 20 characters for a text input, text area or dropdown, 30 for a radio or checkbox group, 40 for a date picker and 35 for the Footer button. Option titles are limited to 30 characters and descriptions to 300. Headings take 80 characters and body text 4,096.

Per screen you can use up to 50 components, one Footer, two embedded links, three images and five opt-ins. Screen ids may contain only letters and underscores, and SUCCESS is reserved. Arabic labels count characters, not bytes, so a 20-character Arabic label is fine. The validator checks all of these and points to the screen that needs fixing.

Arabic and RTL Flows for GCC customers

Every template has a native Arabic version with the same screens and field names, so your webhook code handles both languages without changes. WhatsApp lays out Arabic Flows from right to left on the customer's phone; the preview shows the same direction.

The library includes use cases that matter in the Gulf: Ramadan and Eid offer sign-ups with a message time after iftar, restaurant table booking, real estate viewing requests and a KYC document checklist that asks customers not to send ID photos in the chat.

How to send a Flow to customers

After you publish a Flow, send it as an interactive flow message with its Flow ID, a flow token you generate, a short button text and the first screen. The library gives you the message payload for each template. Interactive messages work only within the 24-hour customer service window; to reach customers first, attach the Flow to an approved message template with a Flow button.

When the customer finishes, WhatsApp shows them a summary of their answers and you receive the complete payload on your webhook. Reply with a confirmation message that says what happens next and how to change or cancel.

WhatsApp Flows JSON: common questions

Which Flow JSON version should I use?

Use 7.3, the version Meta recommends for publishing new Flows when we checked its changelog. Older versions such as 5.0 are frozen: Flows on them can still be sent but not published.

Do I need a server or data endpoint for these templates?

No. All the templates are endpoint-less. The options are written into the JSON and the answers reach your webhook when the customer taps the final button. You only need an endpoint for live data such as available slots or prices.

How do I use a template in WhatsApp Manager?

Create a Flow in WhatsApp Manager, open the JSON editor, replace its content with the template, check the preview and publish. You can also create and publish the Flow with the Flows API.

Can I edit the labels and options?

Yes. Change any text, add or remove options and fields, then paste the JSON into the validator. It warns you when a label goes over the character limit or a route points to a screen that no longer exists.

Why does my Flow fail to publish?

The common causes are a label over its limit, a screen id with digits or hyphens, a terminal screen without a Footer, the complete action on a non-terminal screen, and data_exchange without data_api_version and a routing model.

Are the Arabic templates right-to-left?

Yes. They are written in Arabic, and WhatsApp displays them from right to left. Field names and option ids stay in English, so the same webhook code works for both languages.

Can a Flow collect ID documents?

Flows have photo and document picker components, but sensitive uploads need careful handling. The KYC template only checks which documents the customer has and books a secure submission, which keeps ID images out of the chat.

Is this validator the same as Meta's?

No. It runs basic static checks modelled on the errors Meta documents. Meta's validator in WhatsApp Manager also checks expressions and data models, so publish only after it reports no errors.

More free tools