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.
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 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.
| 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 to open its page, with its draft, Version history, and Runs.
Create a flow
Create flow on 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 |
| 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, Set up reply emails, and Send thank-you emails.
To start from a blank flow, or to forward an event:
- Navigate to Settings → Flows and click Create flow
- Select Blank flow, or select Forward event and then Klaviyo, Voyado, or Webhook
- Select the trigger. For a webhook, also select or create its destination: see 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. 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 is due |
| Points expiration approaching | A friendly or last points expiration reminder 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.
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 |
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.
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 | |
| Public reply notification, Private reply notification | Product review replied, Company review replied | |
| 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, Replies, and Review emails
- Content upload request: Asks the customer for photos or videos of their order, with a link to the upload form 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 |
|---|---|
| Cevoid emails the customer from the email template 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 |
Klaviyo and Voyado show as targets once they're connected: see Klaviyo and Voyado.
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.
Webhooks need a service of your own that receives the requests. If you don't build it yourself, share these steps with your developer.
- Navigate to Settings → Flows and open the flow
- Click Edit flow
- Set Delivery target to Webhook in the Action step
- Select Create destination in Webhook destination
- Enter a name and the endpoint's HTTPS URL. A description is optional.
- Click Create destination. The signing secret appears.
- Copy the signing secret. Cevoid can't show it again.
- 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. Each delivery shows in Outbox.
Publish a flow
Publishing makes a flow's draft its live version. The status changes to Live, and new trigger events start runs.
- Navigate to Settings → Flows and open the flow
- Click Edit flow
- 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?.
- 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.
- Shopify orders: A flow on Order delivered needs delivery events for every connected Shopify store: see Enable delivery events on Shopify.
Edit a live flow
Edits to a live flow stay in its draft until you publish them.
- Navigate to Settings → Flows and open the flow
- Click Edit flow
- Click a step and change its settings
- Optional: Click Save draft to keep your changes without publishing them
- 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.
- Navigate to Settings → Flows and open the flow
- Click More
- 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, 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 |
| Enroll historical orders | Runs past orders through a live flow on an order trigger. See Enroll past orders |
| Delete | Deletes the flow |
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 |
| Shopify delivery access must be enabled for every connected store before publishing this workflow | Enable delivery events for each store in Settings → Orders |
| Order synchronization must be ready for every connected Shopify store | Check each store's order sync in Settings → Orders |