# The visual builder

FunctionFlow AI · Build functions · Updated October 3, 2026

> A tour of the builder — title, conditions, actions and the sidebar with the live summary, quick test, test mode, active dates and status.

Every function — however you start it — is edited in the visual builder. It shows the whole rule on one page: what to check on the left, what it does and how it’s published on the right.

![The visual builder with the title card, When and Then cards, and the sidebar](https://help.fleekapps.com/media/functionflow-ai/builder.webp "A free shipping function in the builder.")

## The header

- **Test** — opens the full [Test page](https://help.fleekapps.com/functionflow-ai/test-a-function/) for the saved version (saved functions only).
- **History** — opens [version history](https://help.fleekapps.com/functionflow-ai/version-history/) (saved functions only).
- **Unpublish** — stops the function at checkout (only while it’s Active or Scheduled).
- **Save draft** — saves your changes without touching checkout.
- **Publish…** — publishes the function. The first time, it asks whether to go live in [test mode](https://help.fleekapps.com/functionflow-ai/test-mode/) or for everyone. On a live function the button reads **Save & publish** and publishes straight away.

Next to the title you’ll see the function’s status — **Draft**, **Active**, **Scheduled**, **Archived** or **Publish failed** — and badges such as **Test mode** or **Unpublished changes**. See [Publish, schedule and unpublish](https://help.fleekapps.com/functionflow-ai/publish-and-schedule/).

## Steps to go live

Until a function is live, a three-step guide sits at the top: **Build the rule** (save it), **Test it** (run the quick test) and **Publish**. Each step has a shortcut, and finished steps get a check mark.

## Title and internal note

- **Title** — up to 255 characters. For discounts, customers see it at checkout next to the discount, so make it friendly (*Free shipping*, *Happy hour: 20% off*). For shipping, payment and checkout rules it’s only shown to your team in Shopify admin.
- **Internal note (optional)** — why the rule exists, who asked for it. Only your team sees it.

Below them, a line reminds you of Shopify’s limit for this kind of function — for example, up to 25 active app discounts per store.

## When: the conditions

The **When** card holds the conditions a checkout must meet, with a count in the corner. Leave it empty and the actions apply to every checkout. Conditions can be combined with **ALL** or **ANY**, grouped and inverted. Everything about them is in [Conditions](https://help.fleekapps.com/functionflow-ai/conditions/).

## Then: the actions

The **Then** card lists what happens when the conditions match. Click **Add action** to choose one; each action has its own options, and you can reorder or remove actions.

Some actions can’t share a function because Shopify runs them as different kinds of function — for example, a shipping discount can’t be combined with product discounts, and free shipping can’t be combined with hiding shipping methods. Those actions are greyed out in the menu; create a separate function for them.

The actions for each kind are explained in [Discounts](https://help.fleekapps.com/functionflow-ai/discounts/), [Shipping rules](https://help.fleekapps.com/functionflow-ai/shipping-rules/), [Payment rules](https://help.fleekapps.com/functionflow-ai/payment-rules/) and [Checkout rules](https://help.fleekapps.com/functionflow-ai/checkout-rules/).

## The sidebar

### What it does

A plain-English summary of your rule that updates as you edit, for example *“Free shipping when the cart total is at least $150.”* It’s the quickest way to check the rule says what you mean.

Underneath, a meter such as **8/100** shows how much of Shopify’s function limits the rule uses. It grows with the number of conditions and actions and with the size of the rule. Green is plenty of room; amber and red mean you’re getting close to the 10 KB limit — consider splitting the rule into two functions.

### Quick test

Runs the real compiled function against a sample cart, using your unsaved changes. See [Test a function](https://help.fleekapps.com/functionflow-ai/test-a-function/).

### Discount settings

For discounts (including free and discounted shipping): automatic or code discount, and which other discounts it combines with. See [Discounts](https://help.fleekapps.com/functionflow-ai/discounts/#discount-settings).

### Test mode

Saved functions only. Switch it on to show the function only to customers tagged `ff-test`. See [Test mode](https://help.fleekapps.com/functionflow-ai/test-mode/).

### Active dates

When the function starts and, optionally, ends — in your store’s time zone. See [Schedule a function](https://help.fleekapps.com/functionflow-ai/publish-and-schedule/#schedule-a-function).

### Status

Saved functions only: the status, version (and which version is live), when it was published and how many orders it has influenced. At the bottom:

- **View in Shopify** — opens the discount or customization in Shopify admin.
- **Duplicate** — makes a draft copy. A discount code gets *-COPY* added.
- **Export** — downloads the function as a `.functionflow.json` file you can import later.
- **Archive** — removes it from Shopify and keeps its history.

## Saving and unsaved changes

- Inside Shopify admin, Shopify’s save bar appears as soon as you change something: **Save** saves a draft, **Discard** reverts to the last save.
- If you leave the page with unsaved changes, FunctionFlow asks *Leave without saving your changes?*
- If something needs fixing, you’ll see *Please fix the highlighted fields.* and the field is marked in red with a message underneath.

Saving never changes what customers see. Only **Publish** (or **Save & publish**) does — so you can work on a live function safely and publish when you’re ready.

---
Source: https://help.fleekapps.com/functionflow-ai/visual-builder/
