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

# WhatsApp Flows

> Meta's in-chat forms — multi-step structured experiences rendered natively inside WhatsApp

A **WhatsApp Flow** is a Meta feature that lets your business send a
**multi-step structured experience** — inputs, selections,
confirmations — rendered natively inside the WhatsApp client. The
user taps a button, an overlay opens, they fill out a form, they
submit. Your business receives a single structured response instead
of parsing a back-and-forth.

## What it looks like to the user

<Steps>
  <Step title="User receives a message with a call-to-action">
    A short body, a headline, and a button like "Book appointment",
    "Get a quote", or "Fill the form".
  </Step>

  <Step title="User taps the button">
    A branded overlay opens inside WhatsApp — multiple screens,
    inputs, dropdowns, date pickers, conditional sections.
  </Step>

  <Step title="User completes the form">
    Navigation between screens, validation, optional confirmation
    screen. All native WhatsApp UI.
  </Step>

  <Step title="User taps Submit">
    The overlay closes. Your business receives a structured payload
    with the user's responses, typed and validated.
  </Step>
</Steps>

No browser switch, no external page, no app install — everything
happens inside WhatsApp on the user's phone.

## Use cases

<CardGroup cols={2}>
  <Card title="Appointment booking" icon="calendar">
    Date, time slot, service type, notes — captured in one
    structured exchange.
  </Card>

  <Card title="Signup and onboarding" icon="user-plus">
    Multi-field forms with validation, conditional questions, and
    confirmation screens.
  </Card>

  <Card title="Lead qualification" icon="filter">
    Structured intake that maps cleanly to CRM fields without
    parsing natural language.
  </Card>

  <Card title="Surveys and feedback" icon="chart-simple">
    Multi-question surveys with conditional follow-ups.
  </Card>

  <Card title="Product configuration" icon="sliders">
    Pick colour, size, extras; review a summary before confirming.
  </Card>

  <Card title="Address collection" icon="location-dot">
    Country, state, city, street, postal code — all in one flow.
  </Card>
</CardGroup>

## What you can build inside a Flow

Screens can contain:

* **Text inputs** — single line, multi-line, with optional validation
  (length, regex)
* **Dropdowns and radio buttons** — single and multi-select lists
* **Checkboxes** — single or multiple
* **Date pickers** — with minimum and maximum constraints
* **Opt-in toggles**
* **Headings, paragraphs, and images** — for instructions and
  branding
* **Footer buttons** — Continue, Submit, or back navigation

Across screens you can have:

* **Conditional navigation** — show different screens based on
  previous answers
* **Pre-filled data** — pass initial values into the flow when you
  send it
* **Data endpoint** (optional) — let the flow call your own HTTPS
  endpoint to fetch dynamic options (e.g., available appointment
  slots for a specific date) or validate inputs mid-flow

## Sending a Flow message

A Flow is sent as a **message** — either:

* **Inside an approved template** (Utility or Marketing category),
  which lets you send it outside the 24h window
* **Free-form** inside the 24h Customer Service Window

Sample values for the Flow's initial data are provided at send time,
along with the Flow ID Meta issued when you published the Flow.

## Workflow, end to end

<Steps>
  <Step title="Design the Flow">
    Lay out the screens, inputs, conditional navigation, and any
    data endpoint.
  </Step>

  <Step title="Preview and test">
    Walk through every branch in the builder's preview mode before
    publishing.
  </Step>

  <Step title="Publish">
    Once happy, publish the Flow. Meta assigns it a **Flow ID** that
    you reference when sending.
  </Step>

  <Step title="Create or adapt a template to carry the Flow">
    If you want to send the Flow outside the 24h window, submit a
    template with a Flow button. Category depends on the Flow's
    purpose (Utility for transactional, Marketing for promotional).
  </Step>

  <Step title="Send">
    Reference the Flow ID, pass any initial data, and send the
    message. The user receives it, taps, fills in, submits.
  </Step>

  <Step title="Handle the response">
    When the user submits, a structured response arrives with the
    fields as typed values — handle it the same way you handle any
    other inbound event.
  </Step>
</Steps>

## Pricing

Flow messages are priced by the **category of the message that
carries them**, not by the Flow itself:

* Inside the 24h window, as a free-form message → free
* Wrapped in a Utility template → Utility pricing (free if the
  CSW is open, otherwise Utility rate)
* Wrapped in a Marketing template → Marketing pricing
* Authentication templates cannot carry Flow buttons

See [Pricing](/guides/whatsapp/pricing) for the full picture.

## Limitations

* Flow messages render on the **WhatsApp native mobile app** only.
  WhatsApp Web falls back to a simplified card.
* Each Flow has a **maximum number of screens and inputs** (limits
  published in Meta's Flow Builder documentation and updated over
  time).
* Once a Flow is published and being used, breaking changes to its
  structure require a **new Flow version** — existing Flow messages
  in the wild continue to use the version they were sent with.
* **Data endpoints** must be HTTPS, publicly reachable, and respond
  within Meta's latency budget or the Flow degrades for the user.
* A Flow session times out if the user walks away — your backend
  should handle the "no submit" case gracefully.

## When Flows are the right answer

Use a Flow when **all three** are true:

* The interaction is **multi-step or multi-field**
* The data needs to be **structured** (typed fields, validated)
* You want the user to stay **inside WhatsApp** (no link out)

If any of those is false, simpler message types are usually better:

* One-tap choice → interactive buttons
* Short list of options → interactive list
* Long-form content or complex UX → a URL button to your website
* Single free-text question → a plain text question inside the 24h
  window

See [Message types](/guides/whatsapp/message-types) for the full
catalogue.

## Learning more

Meta maintains the authoritative documentation for WhatsApp Flows,
including the visual builder reference, field types, data endpoint
spec, and current limits:

<CardGroup cols={1}>
  <Card title="Meta Flow Builder documentation" href="https://developers.facebook.com/docs/whatsapp/flows">
    The full Meta reference — screen elements, navigation model,
    data endpoint, JSON schema, and publishing process.
  </Card>
</CardGroup>

## What's next

<CardGroup cols={2}>
  <Card title="Message types" href="/guides/whatsapp/message-types">
    All message types WhatsApp supports, with when to use each.
  </Card>

  <Card title="Template examples" href="/guides/whatsapp/template-examples">
    Templates you can adapt — including patterns that work well as
    Flow entry points.
  </Card>
</CardGroup>
