> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chatsyncs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# WhatsApp Flows

> WhatsApp Flows let you build interactive forms and data-collection experiences directly inside WhatsApp, on top of Meta's WhatsApp Flows feature. Subscribers fill out the form without leaving the chat — useful for lead generation, appointment booking, customer registration, feedback collection, service requests, surveys, event registration, and product inquiries.

On top of [Meta's WhatsApp Flows feature](/meta-api/concepts/flows-awareness), ChatSyncs lets
you build and publish these in-chat forms yourself.

## Create a WhatsApp Flow

<Frame caption="Chatbot Manager → Data Collection → WhatsApp Flows, with the Create button highlighted.">
  <img src="https://mintcdn.com/chatsyncs/KBWIuAfBOnKg9V2U/images/learn/whatsapp-flows/step-01-open-whatsapp-flows.png?fit=max&auto=format&n=KBWIuAfBOnKg9V2U&q=85&s=2d8b3923c7a9af60a0236cf9ad9daedb" alt="ChatSyncs left navigation with Chatbot Manager selected, the Data Collection tab highlighted, the WhatsApp Flows sub-tab highlighted, and the WhatsApp Flows list with a Create button" width="1276" height="542" data-path="images/learn/whatsapp-flows/step-01-open-whatsapp-flows.png" />
</Frame>

<Steps>
  <Step title="Open Chatbot Manager">Go to **Chatbot Manager**.</Step>
  <Step title="Open the Data Collection tab">Select **Data Collection**.</Step>
  <Step title="Click WhatsApp Flows">Select **WhatsApp Flows** from the sub-tabs.</Step>
  <Step title="Click Create">Click **Create** to start a new flow.</Step>
  <Step title="Add form components">Build the form by adding fields from the component palette.</Step>
  <Step title="Configure each field">Set each component's options to match what you need to collect.</Step>
  <Step title="Save and publish">Save the flow, then publish it once you're ready to use it live.</Step>
</Steps>

Once published, a flow can be attached to WhatsApp templates, buttons, and chatbot
automations.

## Flow configuration

Before designing screens and fields, configure the flow's settings:

<Frame caption="WhatsApp Flow configuration fields — Flow Name, Flow Category, Screen Unique Name, Form Title, Reply Sent After Form Submit, Select HTTP API, and Google Sheets, alongside the live form preview.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-02-flow-configuration-fields.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=c8225fcc67b8a980c8aec30523296abb" alt="WhatsApp Flow configuration form with Flow Name, Flow Category, Screen Unique Name, Form Title, Reply Sent After Form Submit, and Select HTTP API fields highlighted" width="1266" height="568" data-path="images/learn/whatsapp-flows/step-02-flow-configuration-fields.png" />
</Frame>

| Field                                  | Purpose                                                                                                                         |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Flow Name**                          | Internal name to identify the flow inside the platform, e.g. `Customer Registration Flow`.                                      |
| **Flow Category**                      | The category that best matches the flow, e.g. `Lead Generation`, `Appointment Booking`, `Customer Registration`.                |
| **Screen Unique Name**                 | A unique internal identifier for the screen — letters and underscores only, no spaces or numbers, e.g. `customer_registration`. |
| **Form Title**                         | The title shown to the subscriber at the top of the flow, e.g. `Customer Registration Form`.                                    |
| **Reply Sent After Form Submit**       | The bot reply sent to the subscriber once they submit the form, confirming it was received.                                     |
| **Select HTTP API**                    | An HTTP API to send the submitted form data to an external application (CRM, lead management software, ERP, etc.).              |
| **WhatsApp Flow Data in Google Sheet** | Enable to save every submission directly into Google Sheets for reporting, lead management, and backups.                        |

## Form components

<Frame caption="The form component palette — Header, Text Field, Text Area, Checkbox Group, Radio Group, Select, Date Field, and Submit Button.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-03-available-components.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=311013f34a713f55d6d6780a8c6eab95" alt="WhatsApp Flow builder component palette with Header highlighted" width="1270" height="566" data-path="images/learn/whatsapp-flows/step-03-available-components.png" />
</Frame>

Each flow is built by dragging components from the palette onto the form. Available
components: **Header, Text Field, Text Area, Checkbox Group, Radio Group, Select, Date Field,
Submit Button**.

### Header

Displayed at the top of the flow — use a clear title so subscribers understand the form's
purpose, e.g. `Customer Registration Form`.

### Text Field

<Frame caption="Text Field settings panel — Required, Label, Name, Value, and Custom Field.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-04-text-field-settings.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=62f7eb3844239eaa32514b106c7f1581" alt="Text Field configuration panel with Required, Label, Name, Value, and Custom Field options" width="951" height="214" data-path="images/learn/whatsapp-flows/step-04-text-field-settings.png" />
</Frame>

A single line of text — common for name, company name, city, or job title. Clicking a Text
Field opens the settings panel shown above:

* **Required** — the subscriber can't submit the form without filling this field in.
* **Label** — the text shown to the subscriber as the field's title, e.g. `Full Name`.
* **Name** — the internal identifier used when the form data is submitted (not shown to the
  subscriber). ChatSyncs fills in a default like `text-1782067965307-0`, but renaming it to
  something readable like `full_name` makes the submitted data far easier to work with — see
  [Naming fields well](#naming-fields-well) below.
* **Value** — a default value prefilled when the form opens. For example, if the field's
  **Label** is `City` and **Value** is set to `Bangalore`, the subscriber sees `Bangalore`
  already typed in — they can keep it as-is or edit it to something else before submitting.
* **Custom Field** — connects the field to a custom variable or subscriber field, so a
  previously saved value (e.g. a name already on file) can prefill automatically.

<Frame caption="A Text Field labeled 'Full Name', marked Required, inside the Customer Registration Form preview.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-05-text-field-example.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=cc9367be6775c4287ab2c91eb51f7d2f" alt="Text Field configured with Required checked and Label set to Full Name, shown in the form preview" width="1252" height="568" data-path="images/learn/whatsapp-flows/step-05-text-field-example.png" />
</Frame>

This is what a configured Text Field looks like to the subscriber filling out the form.

<Tip>
  Use the **Value** field to prefill information from a known customer and improve the
  experience by reducing how much they need to type.
</Tip>

### Text Area

Allows longer free-text responses — common for feedback, comments, or project requirements.

### Checkbox Group

<Frame caption="Checkbox Group settings — Label, Name, and a list of selectable Options.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-06-checkbox-group.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=ec737292dac36fa9000c5c5b821cd174" alt="Checkbox Group configuration panel showing Services Interested In with three options" width="1254" height="564" data-path="images/learn/whatsapp-flows/step-06-checkbox-group.png" />
</Frame>

Lets the subscriber select multiple options, e.g. `Which services are you interested in?`
with options like `AI Automation`, `WhatsApp Marketing`, `Chatbot Development`. Add options
with **Add Option**.

### Radio Group

<Frame caption="Radio Group settings — Label, Name, and single-select Options.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-07-radio-group.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=b6f114752e5652693b9e812a0cde93c2" alt="Radio Group configuration panel showing Business Size with three options" width="1262" height="559" data-path="images/learn/whatsapp-flows/step-07-radio-group.png" />
</Frame>

Lets the subscriber select only one option, e.g. `Business Size` with options `Startup`,
`Small Business`, `Medium Business`, `Enterprise`.

### Select

<Frame caption="Select field settings — Label, Name, and dropdown Options.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-08-select-config.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=37c5aef521c2118c0f24d318252c344b" alt="Select field configuration panel showing Industry Type with four options" width="1238" height="569" data-path="images/learn/whatsapp-flows/step-08-select-config.png" />
</Frame>

Displays options in a dropdown — useful when there are many choices, e.g. `Industry Type`
with `Real Estate`, `Hospital`, `Education`, `E-commerce`.

<Frame caption="The Select field rendered as a dropdown in the form preview, with Real Estate highlighted.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-09-select-dropdown-example.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=a75b4817f7c8f3679c6fc438d5419f1a" alt="Industry Type dropdown open in the form preview with Real Estate selected" width="1275" height="558" data-path="images/learn/whatsapp-flows/step-09-select-dropdown-example.png" />
</Frame>

### Date Field

<Frame caption="Date Field added to a form already containing a Text Area, a Text Field, and a Checkbox Group — it renders as a native date picker (dd-mm-yyyy).">
  <img src="https://mintcdn.com/chatsyncs/LEtjwVNbWnSagXhm/images/learn/whatsapp-flows/step-10-date-field.png?fit=max&auto=format&n=LEtjwVNbWnSagXhm&q=85&s=f577c90bb4b4f4e425c8a238cd71a5e7" alt="Date Field component selected in the palette, with a dd-mm-yyyy date picker rendered in the form preview alongside Text Area, Full Name, and Select your service fields" width="1266" height="543" data-path="images/learn/whatsapp-flows/step-10-date-field.png" />
</Frame>

Lets the subscriber pick a date — common for appointment booking, event registration,
delivery scheduling, or follow-up meetings. Subscribers get their device's native date picker,
so the format is always valid without you having to validate it yourself.

### Submit Button

<Frame caption="Submit Button added as the final component — it completes the form, shown here below the Date Field at the end of the same example form.">
  <img src="https://mintcdn.com/chatsyncs/LEtjwVNbWnSagXhm/images/learn/whatsapp-flows/step-11-submit-button-preview.png?fit=max&auto=format&n=LEtjwVNbWnSagXhm&q=85&s=dc647e28494d8f66de7c14b68b96f4f1" alt="Submit Button component selected in the palette, rendered at the bottom of the form preview below the Date Field" width="1270" height="542" data-path="images/learn/whatsapp-flows/step-11-submit-button-preview.png" />
</Frame>

Completes the form and sends all collected data once clicked.

**Example — an appointment booking flow:**

<Frame caption="An Appointment Booking flow in the builder — Radio Group and Date Field above a highlighted Submit Button that completes the form.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-11b-appointment-booking-submit-example.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=152e56f372c5f2c6df031ffb8e89b42c" alt="Appointment Booking WhatsApp Flow with a Choose one option radio group and Date Field, and the Submit Button highlighted" width="1230" height="659" data-path="images/learn/whatsapp-flows/step-11b-appointment-booking-submit-example.png" />
</Frame>

```
Header:
Book a Free Consultation
        ↓
Full Name
        ↓
Email Address
        ↓
Phone Number
        ↓
Service Interested In
        ↓
Preferred Appointment Date
        ↓
Additional Notes
        ↓
Submit
```

## Naming fields well

Every field has a **Label** (what the subscriber sees) and a **Name** (the internal key used
when the data is submitted) — and fields with options (Checkbox Group, Radio Group, Select)
also give each option its own **Label** and **Value**. Getting these right makes the data you
collect much easier to work with later.

<Frame caption="A Text Field with Label 'Full Name' and Name renamed to the readable full_name.">
  <img src="https://mintcdn.com/chatsyncs/LEtjwVNbWnSagXhm/images/learn/whatsapp-flows/step-11c-text-field-name-example.png?fit=max&auto=format&n=LEtjwVNbWnSagXhm&q=85&s=a3ecf970f18805b5290d89baabb1b12d" alt="Text Field settings panel with Label set to Full Name and Name set to full_name" width="1259" height="552" data-path="images/learn/whatsapp-flows/step-11c-text-field-name-example.png" />
</Frame>

### Name

ChatSyncs assigns a default **Name** like `text-1782067965307-0` or
`checkbox-group-1782068854255-0` — technically valid, but unreadable in your submitted data.
Rename it to something meaningful instead:

| Good                  | Avoid                            |
| --------------------- | -------------------------------- |
| `services_interested` | `Services Interested`            |
| `first_name`          | `Field 1`                        |
| `phone_number`        | `Checkbox123`                    |
| `email_address`       | `checkbox-group-1782068854255-0` |

**Best practices:** lowercase letters, underscores between words, no spaces or special
characters, and a name descriptive enough that you'd understand it without seeing the label.

### Options (Checkbox Group, Radio Group, Select)

Each option has its own **Label** (shown to the subscriber) and **Value** (stored when
selected) — give the Value a descriptive snake\_case name too, not a number:

<Frame caption="A Checkbox Group's Options list, each with a descriptive Label and a matching snake_case Value.">
  <img src="https://mintcdn.com/chatsyncs/LEtjwVNbWnSagXhm/images/learn/whatsapp-flows/step-11d-checkbox-options-label-value.png?fit=max&auto=format&n=LEtjwVNbWnSagXhm&q=85&s=2b4ef8ef5e11ae18c89e7e8877fd2bb0" alt="Checkbox Group Options showing Label/Value pairs like WhatsApp AI Chatbot / whatsapp_ai_chatbot" width="1862" height="836" data-path="images/learn/whatsapp-flows/step-11d-checkbox-options-label-value.png" />
</Frame>

| Option Label        | Recommended Value     | Avoid |
| ------------------- | --------------------- | ----- |
| WhatsApp AI Chatbot | `whatsapp_ai_chatbot` | `1`   |
| Lead Generation     | `lead_generation`     | `2`   |
| Appointment Booking | `appointment_booking` | `3`   |

Numbers work, but a descriptive value reads correctly even without the label next to it — e.g.
a submission showing `"services_interested": ["whatsapp_ai_chatbot", "lead_generation"]` is
immediately understandable; `"services_interested": [1, 2]` is not.

<Frame caption="A fully filled-out example form, combining Text Field, Text Area, Checkbox Group, Radio Group, and Select.">
  <img src="https://mintcdn.com/chatsyncs/LEtjwVNbWnSagXhm/images/learn/whatsapp-flows/step-11e-complete-form-example.png?fit=max&auto=format&n=LEtjwVNbWnSagXhm&q=85&s=044afc54b6afcf8842dd6067089e5925" alt="A complete WhatsApp Flow form filled out with Full name, City, Email, Phone number, comments, service checkboxes, business type radio buttons, and an Industry dropdown" width="2560" height="1405" data-path="images/learn/whatsapp-flows/step-11e-complete-form-example.png" />
</Frame>

<Tip>
  Well-named fields produce clean, predictable JSON — much easier to use in webhooks, Google
  Sheets, or any automation downstream.
</Tip>

## Field label length limit

<Frame caption="Warning shown when a field's label exceeds the character limit — 'Your textarea field label name must be between 20 characters.'">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-12-label-character-limit-warning.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=09578c007da7bf99496bad09647b71cc" alt="Warning popup stating the textarea field label name must be between 20 characters" width="1265" height="569" data-path="images/learn/whatsapp-flows/step-12-label-character-limit-warning.png" />
</Frame>

Each field's **Label** has a character limit of **20 characters**. Going over it blocks saving
the flow with a warning like the one above — but the warning itself doesn't say which label is
too long or by how much, so you have to check each one yourself.

For example, in the registration form below, two labels were over the 20-character limit and
had to be shortened before the flow would save:

| Label                  | Character count | Over the 20-character limit? |
| ---------------------- | --------------- | ---------------------------- |
| Full Name              | 9               | No                           |
| Project Requirements   | 20              | No (exactly at the limit)    |
| Services Interested In | 22              | Yes — 2 characters over      |
| Business Size          | 13              | No                           |
| Industry Type          | 13              | No                           |
| Preferred Demo Date    | 19              | No                           |
| Customer Registration  | 21              | Yes — 1 character over       |

<Warning>
  **Keep field labels to 20 characters or fewer.** `Services Interested In` (22) and
  `Customer Registration` (21) both had to be shortened before this flow would save — count the
  characters in each label yourself, since the warning popup doesn't tell you which field is the
  problem.
</Warning>

## Example: a complete registration form

```
Header:
Customer Registration Form
        ↓
Text Field — Full Name
        ↓
Text Area — Project Requirements
        ↓
Checkbox Group — Services Interested In
        ↓
Radio Group — Business Size
        ↓
Select — Industry Type
        ↓
Date Field — Preferred Demo Date
        ↓
Submit Button
```

## Manage WhatsApp Flows

<Frame caption="The WhatsApp Flows list with its row actions expanded — export, delete, webhook, preview, sync, and edit.">
  <img src="https://mintcdn.com/chatsyncs/KBWIuAfBOnKg9V2U/images/learn/whatsapp-flows/step-13-flow-list-actions.png?fit=max&auto=format&n=KBWIuAfBOnKg9V2U&q=85&s=350dff22a3aab56a7db87384979bccec" alt="WhatsApp Flows list with Sync and Create highlighted, and a flow row's action icons expanded showing export, delete, webhook, preview, sync, and edit" width="1272" height="532" data-path="images/learn/whatsapp-flows/step-13-flow-list-actions.png" />
</Frame>

Saved flows appear under **Chatbot Manager → Data Collection → WhatsApp Flows**, with these actions:

* **Add Webhook** — connect a webhook to send submitted data to a CRM, lead management tool,
  Google Sheets automation, or other third-party app.
* **Report Data** — view submitted responses: user submissions, form completion data, lead
  information, customer details.
* **Preview Flow** — test the form layout, field validations, and user experience before
  publishing.
* **Open in Studio** — open the flow builder to modify fields, labels, validation rules,
  buttons, or settings.
* **Publish** — push the flow to Meta so it can be used in WhatsApp templates and automations.
  Once approved, it's available for production use.
* **Edit** — modify form content, questions, options, labels, or integrations.
* **Delete** — permanently remove the flow. Deleted flows cannot be recovered.

<Tip>Always **Preview** a flow before publishing to confirm everything works correctly.</Tip>

## Publishing and Meta approval

<Frame caption="A 'Something went wrong — Integrity requirements not met' error after attempting to publish a flow.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-14-publish-error-toast.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=406fa945b2baa8cf7abcdca519f015ec" alt="Error toast reading Something went wrong, Integrity requirements not met, on the WhatsApp Flows list" width="1259" height="579" data-path="images/learn/whatsapp-flows/step-14-publish-error-toast.png" />
</Frame>

A WhatsApp Flow must be published and approved by Meta before it can be used in production.
Clicking **Publish** can fail if your Meta Business Account hasn't met Meta's requirements,
as shown above.

Common reasons publishing fails:

<Frame caption="Meta's own Publish panel showing 'Verify your business' and 'Send high-quality messages' as requirements before a flow can be published.">
  <img src="https://mintcdn.com/chatsyncs/sOr8zsZPH59fQo2F/images/learn/whatsapp-flows/step-15-meta-business-verification-required.png?fit=max&auto=format&n=sOr8zsZPH59fQo2F&q=85&s=946b3640e5cfea9e4f826faf65cd0f9f" alt="Meta WhatsApp Manager Publish panel listing Verify your business and Send high-quality messages requirements" width="1260" height="584" data-path="images/learn/whatsapp-flows/step-15-meta-business-verification-required.png" />
</Frame>

* **Business Verification not completed** — your Meta Business Portfolio must be verified
  before Meta will approve a flow.
* **Messaging quality requirements not met** — some accounts need to establish messaging
  quality and compliance first.

**Solution:** complete Meta Business Verification, keep your WhatsApp Business Account active
and compliant, maintain good messaging quality, then retry publishing.

## Frequently asked

<AccordionGroup>
  <Accordion title="How do I build a multi-field form inside WhatsApp?">
    Create a **WhatsApp Flow** in Chatbot Manager, configure the flow settings (name, category,
    screen name, form title), then add components (Text Field, Checkbox Group, Radio Group,
    Select, Date Field, Submit Button) and configure each one's label and options.
  </Accordion>

  <Accordion title="Why does it say my field label is too long when I try to save?">
    Each field's **Label** has a character limit. Shorten the label — the warning names the
    field and the required range — and save again.
  </Accordion>

  <Accordion title="Where does submitted form data go?">
    To wherever you've configured: the bot reply set in **Reply Sent After Form Submit**
    confirms the submission to the subscriber, and the data itself can be sent to an
    **HTTP API**, saved to **Google Sheets**, or forwarded via a **webhook** added from the
    flow's actions.
  </Accordion>

  <Accordion title="Why does publishing my WhatsApp Flow fail?">
    Most often because your Meta Business Account hasn't completed **Business Verification**,
    or hasn't met Meta's messaging quality requirements. Complete verification, keep your
    account compliant, and retry.
  </Accordion>

  <Accordion title="Should I let the subscriber edit prefilled values?">
    Yes — set a default in **Value** to prefill known information, but subscribers can still
    edit it before submitting. This reduces typing without locking in stale data.
  </Accordion>
</AccordionGroup>

<Warning>
  * **Screen Unique Name has strict rules** — letters and underscores only, no spaces, no
    numbers, and it must be unique.
  * **Field labels have a character limit** — an over-length label blocks saving the flow.
  * **A flow can't go live until Meta approves it** — Business Verification and messaging
    quality requirements must be met first, or **Publish** will fail.
  * **Deleted flows can't be recovered** — there's no undo for **Delete**.
</Warning>

## Learn From a Use Case

* [Clinic Appointment Booking Automation](/learn/clinic-appointment-booking-business-problem) —
  the structured, multi-field appointment form patients fill out.
