Flow Builder
Visual Flow Builder
Section titled “Visual Flow Builder”The flow builder provides a drag-and-drop interface for designing automation sequences. Build sophisticated multi-step flows with branching logic, delays, and channel mixing.
Flow Steps
Section titled “Flow Steps”Messages
Section titled “Messages”- Send Email — Select or create an email template to send. For order and account notices, use a transactional template so it also reaches customers who haven’t subscribed to marketing.
- Send SMS — Compose a text message. It only delivers to contacts subscribed to SMS whose country has an active sender registration (see Setting up SMS); otherwise the step is skipped and logged. Tick Transactional for order and account notices so they bypass opt-in and quiet hours; marketing must stay non-transactional.
Timing
Section titled “Timing”-
Wait: Pause the flow for a set time, in minutes, hours, days or weeks. Two optional extras control when the contact carries on:
- Send at a set time: carry on at this time of day, for example 10:00. A wait of days or weeks carries on at that time on the day it ends, so “wait 90 days, send at 11:00” sends on day 90 at 11:00. A wait of hours carries on at the next 10:00 after it ends.
- Only on certain days: carry on only on the days you pick, for example Tuesday to Thursday. If the wait ends on another day, the contact moves on the next day you picked.
- Time zone: times follow the customer’s own time zone, and the store’s for customers without one. You can pick the store’s time zone instead.
With a set time or days, the length can be 0, so a step like “wait until the next weekday at 9am” works. Imported Klaviyo flows keep their “wait until” times and days.
-
Wait until a date: Instead of a length of time, wait for a date on the contact’s profile, for example
renewal_dateorbirthday. Pick the date property, then:- When: on the date, or a number of days before or after it.
- Every year: wait for the next anniversary, which suits birthdays. Off waits for the date itself.
- If there’s no upcoming date: carry on straight away, or leave the flow.
Set a time and time zone the same way as any wait. If the date changes while the contact is waiting, the wait moves with it.
- Conditional split: Branch contacts based on criteria:
- Customer properties (location, order count, total spent)
- Segment membership
- Email engagement (opened/clicked previous messages)
- Shopping behavior (purchased, viewed product)
- Custom profile properties (for example
tierequalsgold)
- A/B split: Send a set share of contacts down path A and the rest down path B. Each contact always lands on the same path, and the step shows how many went each way so you can pick a winner.
- Trigger split: Branch on the event that started the flow. For example, send orders over 100 down one path, or orders containing a hoodie down another. Conditions check the event’s properties (equals, not equals, contains, greater or less than, at least, at most), and the contact goes down Yes only when every condition matches. Works on flows that start from an event.
Actions
Section titled “Actions”- Update profile — Set, add to or clear a custom profile property, for example set
viptotrueor add1toorders_in_flow. - Unsubscribe — Opt the contact out of email, SMS or both, for example when they enter a segment of bounced or inactive contacts. The change shows in their activity and syncs to Shopify. Anyone already unsubscribed or suppressed is left as they are.
- Webhook — Send a request to another system. The URL must use https. Leave the body empty to send the contact, trigger event and flow as JSON, or write your own body with merge tags like
{{ person.email }}and{{ person.properties.tier }}. A failed request is logged and the contact carries on through the flow.
Starting a Flow From a Profile Property
Section titled “Starting a Flow From a Profile Property”Pick Profile property as the trigger, choose a custom property, then what should start the flow:
- It changes: any new value, for example when
planchanges. - It becomes a value: when the value starts to match, for example
tierequalsVIP,pointsmore than 500, orquiz_doneis set. It starts on the move to a match, not every time the profile is saved, so a VIP who updates their address doesn’t get the VIP email again. If they stop matching and match again later, it starts again (your entry frequency still applies). - Its date comes round: on a date property, for example 7 days before a
birthdayevery year, or 3 days before a one offrenewal_date. It starts early on the day in the contact’s time zone (the store’s when they have none). Add a wait with a set time as the first step to choose the send time. A 29 February birthday falls on the 28th in other years.
Changes are checked about 30 seconds after they’re saved, so several updates close together are acted on once, with the latest values. Changes made by a flow’s own Update profile step don’t start that same flow again, and properties brought in by an import don’t start flows.
Gro also records a Profile property changed event with the property name, the new value and the previous value, which you can use in segments and reports.
Flow Settings
Section titled “Flow Settings”- Entry frequency — How often a contact can re-enter the flow (once, once per day, unlimited)
- Smart sending — Skip contacts who received a message recently
- Exit conditions — Automatically remove contacts when they meet criteria (e.g., made a purchase)
Testing Your Flow
Section titled “Testing Your Flow”Before going live:
- Click Preview to walk through the flow step by step
- Send test messages to verify email and SMS content
- Use Live Preview to see real contacts enter and move through the flow