# Flows

> Automate what happens after an order, a review, an upload, or a loyalty event: wait, check conditions, then send an email or an event to your CRM.

Breadcrumb: Flows › Overview · Updated: 2026-10-17
Docs index: https://docs.cevoid.com/llms.txt

A flow runs on its own when something happens in your store or in Cevoid, such as an order being delivered or a review being submitted. It can wait, check conditions, and then send an email, or an event to Klaviyo, Voyado, or your own endpoint. Review requests, thank-you emails, and reply emails are all flows.

Navigate to [Settings → Flows](https://app.cevoid.com/settings/flows) to manage your flows.

## How flows work

A flow is a trigger followed by steps, drawn as cards on a canvas. Each time the trigger happens, Cevoid starts a run of the flow, such as one run for each delivered order. To follow runs, see [Flow runs](https://docs.cevoid.com/flows/flow-runs.md).

| Part | What it does |
| --- | --- |
| Trigger | The event that starts the flow, such as _Order delivered_. A flow has one trigger, which can't be changed after the flow is created |
| _Wait_ | Holds the run for a set time |
| _Filter_ | Lets the run continue only when its conditions match |
| _If / else_ | Sends the run down a _True_ or a _False_ branch, depending on its conditions |
| _Action_ | Sends an email, or an event to Klaviyo, Voyado, or a webhook. Every path ends with an action |

You build a flow as a draft. Publishing turns the draft into the flow's live version, and the flow starts running. Later changes stay in the draft until you publish them, so the live version keeps running while you edit.

| Status | What it means |
| --- | --- |
| _Draft_ | Not published yet. Nothing runs |
| _Live_ | Published. Each new trigger event starts a run |
| _Paused_ | Published, but new trigger events don't start runs |
| _Archived_ | Retired. New trigger events don't start runs |

Click a flow in [Settings → Flows](https://app.cevoid.com/settings/flows) to open its page, with its draft, _Version history_, and _Runs_.

## Create a flow

**Create flow** on [Settings → Flows](https://app.cevoid.com/settings/flows) offers three starting points:

| Starting point | What it creates |
| --- | --- |
| **Blank flow** | A flow with only the trigger you select. You add the steps |
| **Review request** | A review request flow from a recipe. See [Review requests](https://docs.cevoid.com/reviews/collect/review-requests.md#create-a-review-request-flow-from-a-recipe) |
| **Forward event** | A flow that sends its trigger's event to **Klaviyo**, **Voyado**, or a **Webhook**. Klaviyo and Voyado need their integration connected |

_Suggested flows_, above your flows, add ready-made Reviews flows. See [Set up the suggested review request flow](https://docs.cevoid.com/reviews/collect/review-requests.md#set-up-the-suggested-review-request-flow), [Set up reply emails](https://docs.cevoid.com/reviews/manage/replies.md#set-up-reply-emails), and [Send thank-you emails](https://docs.cevoid.com/reviews/collect/review-emails.md#send-thank-you-emails).

To start from a blank flow, or to forward an event:

1. Navigate to [Settings → Flows](https://app.cevoid.com/settings/flows) and click **Create flow**
2. Select **Blank flow**, or select **Forward event** and then **Klaviyo**, **Voyado**, or **Webhook**
3. Select the trigger. For a webhook, also select or create its destination: see [Set up a webhook](https://docs.cevoid.com/flows/webhooks.md#set-up-a-webhook). The flow opens in the editor as a draft.

## Triggers

A trigger is the event that starts a flow. You select it when you create the flow, from the groups _Orders_, _Reviews_, _Uploads_, _Tiers_, _Rewards_, and _Points_.

| Trigger | Starts a run when |
| --- | --- |
| _Order fulfilled_ | The whole order is fulfilled. WooCommerce orders count as fulfilled when they're _Completed_ |
| _Order delivered_ | The whole order is delivered. On Shopify, when the carrier reports the delivery, with delivery events enabled in [Settings → Orders](https://app.cevoid.com/settings/orders). WooCommerce orders are never delivered |
| _Product review submitted_ | A customer submits a product review |
| _Company review submitted_ | A customer submits a company review |
| _Product review replied_ | Your team replies to a product review |
| _Company review replied_ | Your team replies to a company review |
| _Upload completed_ | A customer's upload finishes processing |
| _Tier earned_ | A member earns a tier |
| _Reward fulfilled_ | A member gets rewards, from an activity, a redeemable reward, a tier, or a purchase incentive |
| _Tier evaluation approaching_ | A [tier evaluation reminder](https://docs.cevoid.com/loyalty/tiers/tier-evaluation.md#evaluation-reminder-emails) is due |
| _Points expiration approaching_ | A friendly or last [points expiration reminder](https://docs.cevoid.com/loyalty/setup/points.md#expiration-reminder-emails) is due |

Orders from an order history import, and reviews you import, never start a flow. To run past orders through a flow, see [Enroll past orders](https://docs.cevoid.com/flows/flow-runs.md#enroll-past-orders).

## Add and connect steps

The flow editor shows the flow as cards on a canvas, with _Add steps_ on the left: _Wait_, _Filter_, and _If / else_ under _Flow control_, and _Action_ under _Actions_.

- **Add a step:** Click it in _Add steps_. In a flow without an _If / else_, Cevoid puts it in order: an action at the end, other steps before the first action. You can also drag a step onto the canvas.
- **Connect steps:** Drag from the dot on the right of a card to the next card. In a flow with an _If / else_, a new step starts unconnected.
- **Set up a step:** Click its card. Its settings open in a panel, with **Delete step** at the bottom.

**Auto-organize** lines up the cards. Moving cards saves on its own, while other changes need **Save draft** or publishing.

| Step | Settings |
| --- | --- |
| _Wait_ | _Duration_ in minutes, hours, days, weeks, or months. A week is 7 days, and a month is a calendar month |
| _Filter_ | Conditions that must match for the run to continue. Otherwise the run ends at this step |
| _If / else_ | Conditions. When they match, the run takes the _True_ branch, otherwise the _False_ branch. Each branch needs its own next step |
| _Action_ | What to send, and where. See [Actions](https://docs.cevoid.com/flows#actions) |

### Conditions

_Filter_ and _If / else_ steps check conditions about the customer and about what started the flow. Click **Condition**, select a field, then set the comparison and the value. With several conditions, all of them must match: click **Match all filters** to switch to **Match any filter**.

| Field group | Examples | Checked against |
| --- | --- | --- |
| _Profile_ | _Language_, _Last active market_, _Segment_, profile properties. With the Loyalty program, also _Points balance_ and _Current tier_ | Current data, when the step runs |
| _Order_ | _Market_, _Contains product_, _Profile has reviewed all products_ | Current data, when the step runs |
| _Review_ | _Rating_, _Language_, _Market_, _Has media_ | Current data, when the step runs |
| _Reply_, _Upload_, _Tier_, _Reward fulfillment_, _Tier evaluation_, _Points expiration_ | _Visibility_, _Upload form_, _Earned tier_, _Reminder stage_ | The event that started the flow |

Each trigger offers _Profile_ and the groups that fit it. A condition on _Rating_ can never lead to a review request: see [Who gets a review request](https://docs.cevoid.com/reviews/collect/review-requests.md#who-gets-a-review-request).

## Actions

An _Action_ step sends something. Set _Action type_ to what it sends and _Delivery target_ to where. The step offers only the action types that fit the flow's trigger.

| Action type | Triggers | Delivery targets |
| --- | --- | --- |
| **Product review request** | _Order fulfilled_, _Order delivered_ | Email, Klaviyo, Voyado, Webhook |
| **Company review request** | _Order fulfilled_, _Order delivered_, _Product review submitted_ | Email, Klaviyo, Voyado, Webhook |
| **Review thank you** | _Product review submitted_, _Company review submitted_ | Email |
| **Public reply notification**, **Private reply notification** | _Product review replied_, _Company review replied_ | Email |
| **Content upload request** | _Order fulfilled_, _Order delivered_ | Email, Klaviyo, Voyado, Webhook |
| **Send notification** | Every trigger | Klaviyo, Voyado, Webhook. Email too on _Upload completed_ and the tier, reward, and points triggers |

- **Review actions:** See [Review requests](https://docs.cevoid.com/reviews/collect/review-requests.md), [Replies](https://docs.cevoid.com/reviews/manage/replies.md), and [Review emails](https://docs.cevoid.com/reviews/collect/review-emails.md)
- **Content upload request:** Asks the customer for photos or videos of their order, with a link to the [upload form](https://docs.cevoid.com/ugc/collect/upload-forms.md) you select in _Upload destination_. It isn't sent for canceled or fully refunded orders.
- **Send notification:** Sends the trigger's data, such as the order, the review, and the customer's profile. Click **Preview payload** on the step to see it.

### Delivery targets

| Target | How it sends |
| --- | --- |
| **Email** | Cevoid emails the customer from the [email template](https://docs.cevoid.com/emails/email-templates.md) selected in _Email template_. Select **Create a new template** there to add one |
| **Klaviyo** | An event named in _Event name_, by default after the trigger, such as `Cevoid: Order Delivered`. _Klaviyo routing_ shows which account each market's events go to |
| **Voyado** | A contact interaction named in _Event name_, `cevoid_flow_event` by default |
| **Webhook** | A signed request to your own HTTPS endpoint, selected in _Webhook destination_. See [Create a webhook destination](https://docs.cevoid.com/flows#create-a-webhook-destination) |

Klaviyo and Voyado show as targets once they're connected: see [Klaviyo](https://docs.cevoid.com/integrations/email-crm/klaviyo.md) and [Voyado](https://docs.cevoid.com/integrations/email-crm/voyado.md).

Emails that Cevoid sends follow these rules:

- The customer needs an email address that hasn't bounced or been marked as spam
- Review requests and content upload requests go only to customers who agreed to marketing email
- Tier and reward emails need the member's _Confirmation emails_ preference, and points and tier evaluation reminders their _Reminder emails_ preference. Rewards that come with a tier get no _Earned/redeemed reward_ email.
- A points expiration or tier evaluation reminder is skipped if it no longer applies when it's due

### Create a webhook destination

A webhook destination is your own HTTPS endpoint, which receives a flow's events as signed requests. You create it from an _Action_ step.

> [!NOTE]
> Webhooks need a service of your own that receives the requests. If you don't build it yourself, share these steps with your developer.

1. Navigate to [Settings → Flows](https://app.cevoid.com/settings/flows) and open the flow
2. Click **Edit flow**
3. Set _Delivery target_ to **Webhook** in the _Action_ step
4. Select **Create destination** in _Webhook destination_
5. Enter a name and the endpoint's HTTPS URL. A description is optional.
6. Click **Create destination**. The signing secret appears.
7. Copy the signing secret. Cevoid can't show it again.
8. Click **I saved the secret**. The new destination is selected in the step.

To use a destination you already have, select it in _Webhook destination_ instead. For the request format, see [Webhooks via Flows](https://docs.cevoid.com/flows/webhooks.md). Each delivery shows in [Outbox](https://docs.cevoid.com/flows/outbox.md).

## Publish a flow

Publishing makes a flow's draft its live version. The status changes to _Live_, and new trigger events start runs.

1. Navigate to [Settings → Flows](https://app.cevoid.com/settings/flows) and open the flow
2. Click **Edit flow**
3. Click **Publish flow**. For a flow that's been published before, the button is **Publish changes**.

Publishing saves the draft first. If the flow isn't ready, see [Why can't I publish my flow?](https://docs.cevoid.com/flows#why-cant-i-publish-my-flow).

- **Reviews plan:** A flow with a review request, a reply notification, or a review thank you needs a Reviews plan. See [Plans that include Reviews](https://docs.cevoid.com/reviews/setup/order-limit.md#plans-that-include-reviews).
- **Shopify orders:** A flow on _Order delivered_ needs delivery events for every connected Shopify store: see [Enable delivery events on Shopify](https://docs.cevoid.com/orders-products/order-settings.md#enable-delivery-events-on-shopify).

## Edit a live flow

Edits to a live flow stay in its draft until you publish them.

1. Navigate to [Settings → Flows](https://app.cevoid.com/settings/flows) and open the flow
2. Click **Edit flow**
3. Click a step and change its settings
4. Optional: Click **Save draft** to keep your changes without publishing them
5. Click **Publish changes**

Each publish adds a version under _Version history_ on the flow's page. New runs use the new version, and runs that already started keep the version they started with.

## Pause or activate a flow

Pausing a live flow stops new trigger events from starting runs. Runs that already started keep going, and their scheduled emails and events still go out, unless you [cancel the run](https://docs.cevoid.com/flows/flow-runs.md#cancel-a-run).

1. Navigate to [Settings → Flows](https://app.cevoid.com/settings/flows) and open the flow
2. Click **More**
3. Select **Pause**. The status changes to _Paused_.

To start the flow again, select **Activate** in the same menu. **Pause** and **Activate** are only on the flow's page.

## Manage your flows

Each flow has a menu: **...** in its row on [Settings → Flows](https://app.cevoid.com/settings/flows), or **More** on the flow's page and in the editor.

| Action | What it does |
| --- | --- |
| **Rename** | Changes the flow's name |
| **Duplicate** | Creates a draft copy, named after the original with "copy" at the end, and opens it |
| **Archive** | Retires a published flow. Its status changes to _Archived_ |
| **Trigger test run** | Runs the flow once as a test. See [Test a flow](https://docs.cevoid.com/flows/flow-runs.md#test-a-flow) |
| **Enroll historical orders** | Runs past orders through a live flow on an order trigger. See [Enroll past orders](https://docs.cevoid.com/flows/flow-runs.md#enroll-past-orders) |
| **Delete** | Deletes the flow |

> [!WARNING]
> Deleting a flow also deletes its run history. This can't be undone.

## Troubleshooting

### Why can't I publish my flow?

_Flow is not ready to publish_ names the first problem, and the editor opens the step it's in. After that, the badge at the top of the editor counts every issue: hover over it to see them all. Check that every _Action_ step has its email template, event name, or webhook destination set.

| Message | What to do |
| --- | --- |
| _Every flow path must end with an action_ | End every path, including both branches of each _If / else_, with an _Action_ step |
| _All nodes must be reachable from the trigger_ | Connect every step to the flow, or delete the steps you don't use |
| _If/Else nodes require exactly one Yes and one No connection_ | Connect both the _True_ and the _False_ branch of the _If / else_ step |
| _Add at least one complete condition before publishing._ | Finish the condition in the _Filter_ or _If / else_ step |
| _Flows cannot contain loops_ | Remove the connection that leads back to an earlier step |
| _Select an upload destination_ | Select an upload form in _Upload destination_ |
| _Webhook destination must be active_ | Select an active destination in _Webhook destination_ |
| _Product review request is already active in_ followed by a flow's name | Only one live flow can hold a product review request. Pause the other flow, or add your changes to it |
| _Review invitations cannot be gated using sentiment or rating_ | Remove the _Rating_ condition in front of the review request |
| _Product and company review requests must be placed on separate branches_ | Put each request on its own branch of an _If / else_ step |
| _Order synchronization is disabled_ | Enable **Sync orders** in [Settings → Orders](https://app.cevoid.com/settings/orders) |
| _Shopify delivery access must be enabled for every connected store before publishing this workflow_ | Enable delivery events for each store in [Settings → Orders](https://app.cevoid.com/settings/orders) |
| _Order synchronization must be ready for every connected Shopify store_ | Check each store's order sync in [Settings → Orders](https://app.cevoid.com/settings/orders) |

## Related articles

- [Flow runs](https://docs.cevoid.com/flows/flow-runs.md)
- [Review requests](https://docs.cevoid.com/reviews/collect/review-requests.md)
- [Email templates](https://docs.cevoid.com/emails/email-templates.md)
- [Profile data and event sharing](https://docs.cevoid.com/profiles/profile-data-event-sharing.md)
- [Webhooks via Flows](https://docs.cevoid.com/flows/webhooks.md)

---

Canonical: https://docs.cevoid.com/flows
