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

# Flow Builder

> The visual node-based editor for building, configuring, and activating WhatsApp automation flows in Galantis.

The Flow Builder is the canvas where automation flows are designed. It presents a node-based graph interface — each step in the flow is a node, nodes are connected by edges that represent execution paths, and the full flow is stored as a structured JSON object of `nodes` and `edges` arrays. Every node has a visual position on the canvas that reflects the logical sequence of the flow.

Building a flow means placing nodes, connecting them in order, configuring each node's settings, and activating when the flow is ready.

## What this covers

* The Flow Builder interface and canvas layout
* Node types and how they connect
* How flows are stored
* Activating and deactivating flows
* AI-assisted flow creation via Galantis AI

## Opening the Flow Builder

<Steps>
  <Step title="Navigate to Automations">
    In the Galantis dashboard, go to **Automations** and click **New Automation**, or open an existing automation to edit its flow.
  </Step>

  <Step title="The canvas opens">
    The Flow Builder canvas loads with an empty canvas or the existing flow. A `TriggerNode` is always present as the entry point — it cannot be removed or repositioned to a non-entry position.
  </Step>

  <Step title="Add nodes">
    Drag nodes onto the canvas from the node panel or click the `+` connector on any existing node to add a new step. Connect nodes by drawing edges between them.
  </Step>

  <Step title="Configure each node">
    Click any node to open its settings panel. Configure the trigger event, delay duration, condition logic, or template assignment depending on the node type.
  </Step>

  <Step title="Validate and activate">
    When the flow is complete, Galantis runs validation checks before activation. Resolve any flagged issues, then toggle the automation to **Active**.
  </Step>
</Steps>

## Node types

Every flow is built from four node types. Each type has a specific role in the execution sequence.

<Tabs>
  <Tab title="Trigger Node">
    **TriggerNode** is the entry point of every flow. It defines the event that starts the automation and accepts exactly one trigger per flow.

    Every automation has exactly one `TriggerNode` — it cannot be duplicated or placed mid-flow. The trigger fires when a qualifying event occurs for a customer, enrolling them into the flow from this point.

    Configuration includes:

    * The trigger event type (see [Triggers](./triggers) for all available options)
    * Whether to include existing users who already match the trigger condition at activation time (`include_existing_users`)

    The `TriggerNode` connects to the first step in the flow — typically a `DelayNode` or `ConditionNode`.
  </Tab>

  <Tab title="Delay Node">
    **DelayNode** pauses flow execution for a defined duration before the next node runs. It does not send any message — it simply holds the customer at that position in the flow until the delay elapses.

    Available delay units: `MINUTES`, `HOURS`, `DAYS`, `MONTHS`.

    Delays are essential for timing flows correctly. A welcome message sent 10 minutes after registration feels deliberate. The same message sent within seconds feels automated and impersonal. An abandoned checkout recovery sent 30 minutes after abandonment arrives while the session is still fresh.

    <Tip>
      Add a delay after every trigger before the first action node. Sending immediately on trigger — especially for events like New Order Placed or New Customer Created — can make messages arrive simultaneously with Shopify's own transactional emails, reducing impact.
    </Tip>
  </Tab>

  <Tab title="Condition Node">
    **ConditionNode** evaluates a condition against the customer's data and branches the flow into a **YES** path and a **NO** path. Both paths must connect to at least one subsequent node — a condition branch that leads nowhere will fail validation.

    Conditions support AND/OR logic and nested grouping for complex evaluations. See [Conditions](./conditions) for the full list of available condition types and operators.

    Every condition branch should lead to an action or a further delay — avoid creating condition branches that only lead to more conditions without any eventual action, as these create flows that enroll customers but never send them anything.
  </Tab>

  <Tab title="Action Node">
    **ActionNode** executes the send of an approved WhatsApp template to the customer. This is the node that actually dispatches a message.

    Configuration includes:

    * Selecting an approved template
    * Mapping template variables to customer or order data fields

    An automation with an action node whose assigned template is not `APPROVED` will be flagged during validation and cannot be activated.

    See [Actions](./actions) for full Action node configuration details.
  </Tab>
</Tabs>

## How flows are stored

Flows are stored as structured JSON with two arrays:

* **`nodes`** — an array of node objects, each with a type, configuration, and canvas position
* **`edges`** — an array of connection objects defining which node connects to which

This structure is managed automatically by the Flow Builder canvas. You do not edit the JSON directly — changes made on the canvas are persisted to the underlying structure on save.

## Flow validation

Before a flow can be activated, Galantis runs a set of validation checks:

| Check                       | What is validated                                                             |
| --------------------------- | ----------------------------------------------------------------------------- |
| Template approval           | All Action nodes use `APPROVED` templates                                     |
| Node connections            | All nodes are connected — no orphaned nodes                                   |
| Condition branches          | Both YES and NO branches of every Condition node connect to a subsequent node |
| Condition completeness      | All condition logic is fully configured with no empty fields                  |
| Frequency cap configuration | Frequency cap is set and valid                                                |

Validation errors are surfaced inline on the canvas — flagged nodes are highlighted and the specific issue is described in the node's settings panel. Resolve all validation issues before attempting to activate.

## Activating and deactivating flows

Toggle the automation status between **Active** and **Inactive** from the automation detail page. Deactivating a flow stops new customers from being enrolled. Customers already in the flow at the time of deactivation continue through their remaining nodes — deactivation does not cancel in-progress executions.

## Galantis AI assistance

The Flow Builder includes AI-powered assistance via Galantis AI. When building or editing a flow, Galantis AI can:

* Suggest appropriate triggers and action sequences based on a goal you describe
* Highlight incomplete or conflicting node configurations
* Surface optimization suggestions — for example, flagging a missing delay in an abandonment recovery flow

See [Galantis AI](/whatsapp/galantis-ai/ai-flow-builder) for the full AI flow builder reference.

## Related guides

* [Triggers](./triggers) — All trigger events and their configuration
* [Conditions](./conditions) — Condition types, operators, and branching logic
* [Actions](./actions) — Action and Delay node configuration
* [Activity Tracking](./activity-tracking) — Monitoring flow execution per customer
