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

# Flow Builder best practices

> Practical standards for Fliqr AI Flows — naming, modularity, omnichannel design, fallbacks, testing, and publish discipline.

These practices keep Flows reliable in production and easy for teammates to change.

## Structure

<AccordionGroup>
  <Accordion title="One job per Flow">
    Name the outcome (`Booking`, `FAQ`, `Qualify`). Put shared routines in child Flows and call them with Go to Flow.
  </Accordion>

  <Accordion title="Happy path first">
    Build the main success route, then add failure, timeout, and “I don’t understand” branches.
  </Accordion>

  <Accordion title="Always wire an else">
    Every Condition and interactive menu needs a fallback. Silence feels like a broken bot.
  </Accordion>

  <Accordion title="Stay modular before you hit 250 blocks">
    Split early. Large monolith Flows are hard to test and dangerous to publish.
  </Accordion>
</AccordionGroup>

## Content and channels

* Prefer **Omnichannel** messages; specialize only when required.
* Keep Quick Reply labels short.
* Respect [media limits](/docs/core-concepts/flows/messages-and-media) per channel.
* Mind Meta messaging windows when using long Delays or drips.

## Data

* Create fields before you build; use stable names.
* Collect only what you use.
* Tag for coarse routing; use custom fields for values.
* Document the field contract when a parent Flow calls a child.

## AI inside Flows

* Use **AI Action** for one-shot classify/extract steps.
* Constrain model output so Conditions stay reliable.
* Hand off to a full [AI Agent](/docs/core-concepts/ai-agents) for open-ended chat.

## Release discipline

| Do                                         | Don’t                                          |
| ------------------------------------------ | ---------------------------------------------- |
| Test every branch before publish           | Edit live Flows without a simulator pass       |
| Duplicate before breaking rewires          | Delete blocks contacts may still be sitting on |
| Cut triggers over after the copy is proven | Leave `Copy of Copy` names in production       |
| Keep Default Reply as a safety net         | Assume keywords cover every inbound message    |

## Operations checklist

1. Published?
2. Trigger attached and ordered correctly?
3. Fallback path exists?
4. Fields/tags verified?
5. Channel-specific media tested on device?
6. Unsubscribe path for drips?

## Next

<CardGroup cols={2}>
  <Card title="Recipes" icon="book" href="/docs/core-concepts/flows/recipes">
    Copyable patterns that apply these practices.
  </Card>

  <Card title="Limits" icon="gauge" href="/docs/core-concepts/flows/limits">
    Hard caps to design around.
  </Card>
</CardGroup>
