How workflows work
Workflows automate how and when customers receive notifications — for example, when a product is back in stock. Instead of sending messages manually, you can create a visual flow of actions that automatically execute when specific events occur
Each workflow is a visual sequence of Triggers → Conditions → Actions that runs automatically when a restock event happens.
Triggers
Required, exactly
Define when a workflow starts by responding to a specific event or customer action.
Conditions
Optional, multiple
Define the logical rules that determine how a workflow branches or proceeds.
Actions
Optional, multiple
Define what the workflow does as an outcome.
Workflow system
The Workflow System enables automated, event-driven sequences where Triggers, Conditions, and Actions work together to execute dynamic customer notifications.
Triggers
Triggers are events that start a workflow execution. Each workflow must have exactly one trigger.
Customer signed up
customer.signed_up
Customer submits "Notify Me" form
Confirmation emails, signup incentives
Email, product/variant ID, timestamp, source, consent
Product restocked
product.restocked
Inventory changes from 0 to > 0
Send restock notifications to waitlist
Product/variant ID, inventory level, subscriber list, campaign ID
Conditions
Conditions control workflow logic by creating branches based on criteria. Workflows can have multiple conditions that determine which path to follow.
An event occurred
(Event-based)
Has a specific event happened?
- Email opened
- Email clicked
- Customer unsubscribed
- Customer purchased
Event type, time email selection (optional)
Engagement-based routing, purchase verification
Customer
(Data comparison)
Does customer data match criteria?
8 customer fields with flexible operators
Field selector, operator, compare value, AND/OR logic
Customer segmentation, VIP identification, targeting
An event occurred
Description: Check if specific customer engagement events have happened
Email Opened
email.opened
True if customer opened any email in this workflow
Send follow-up only if customer engaged
Email Clicked
email.clicked
True if customer clicked any link in the email
High-intent customers get priority offers
Customer Unsubscribed
customer.unsubscribed
True if customer opted out of notifications
Stop all further communications
Customer Purchased
customer.purchased
True if customer bought the product (within attribution window)
Stop follow-ups after conversion
Configuration options:
Event type selection (dropdown)
Specific email selection (which email in workflow): Optional field, leave blank if applies to any email
Customer
Description: Filter based on customer profile data and behavior patterns
Condition Type: Flexible customer data comparison with configurable operators
Available customer data fields
Order Count
Number
Total number of orders placed
Total Spent
Number
Lifetime customer spending
Signed Up Date
Date
When customer signed up for notification
Last Order Date
Date
Date of most recent order
Customer Tags
Text/Array
Tags assigned to customer
Accepts Marketing
Boolean
Email marketing opt-in status
Available operators
Number
Equals, Not equals, Greater than, Less than, Greater than or equal, Less than or equal
Order Count > 5
Currency
Equals, Not equals, Greater than, Less than, Greater than or equal, Less than or equal
Total Spent >= $500
Date
Is, Is not, Is before, Is after, Is between, Days ago (relative), Days from now (relative)
Signed Up Date > 30 days ago
Text
Equals, Not equals, Contains, Does not contain, Starts with, Ends with
Customer Tags contains "VIP"
Boolean
Is true, Is false
Accepts Marketing is true
Date comparison operators
Is
Absolute
Exact date match (ignoring time)
Signed Up Date IS November 11, 2025
✅ Nov 11, 2025 (any time)
❌ Nov 10 or Nov 12, 2025
Is not
Absolute
Does NOT match specific date
Last Order Date IS NOT November 11, 2025
✅ Any date except Nov 11
❌ Nov 11, 2025
Is before
Absolute
Earlier than specified date
Signed Up Date IS BEFORE November 1, 2025
✅ Oct 31, 2025 or earlier
❌ Nov 1, 2025 or later
Is after
Absolute
Later than specified date
Last Order Date IS AFTER October 1, 2025
✅ Oct 2, 2025 or later
❌ Oct 1, 2025 or earlier
Is between
Absolute
Within date range (inclusive)
Signed Up Date IS BETWEEN Oct 1, 2025 AND Oct 31, 2025
✅ Oct 1 through Oct 31
❌ Before Oct 1 or after Oct 31
Days ago
Relative
Past date calculated dynamically
Signed Up Date > 30 days ago
(Running On Nov 11)
✅ Oct 11, 2025 or earlier
❌ Oct 13, 2025 or later
Days from now
Relative
Future date calculated dynamically
Signed Up Date < 7 days from now
(Running On Nov 11)
✅ Nov 18, 2025 or earlier
❌ Nov 19, 2025 or later
Advanced configuration:
Multiple conditions (AND logic):
All conditions must be true
Example: "Total Spent > $500 AND Order Count > 5"
Use case: Very specific targeting
Condition groups (OR logic):
At least one condition must be true
Example: "Total Spent > $500 OR Customer Tags contains 'VIP'"
Use case: Multiple paths to qualification
Actions
Actions are tasks that are executed when triggered or after specific conditions are met. Multiple actions can be chained together in sequence.
Send Follow-up Email
Communication
Send additional email to customer
Template selection, delay, conditional send, Liquid variables
Send Internal Email
Team Communication
Notify store team about events
Multiple recipients, trigger conditions, performance data
Create Draft Order
Sales Facilitation
Pre-filled order with checkout link
Auto-populate product, apply discount, one-click checkout
Create Discount Code
Incentive
Generate discount code for customer
Unique/shared codes, flexible types, expiry dates, usage limits
Add Customer Tags
Segmentation
Tag customer profile for targeting
Multiple tags, static/dynamic, future campaign use
Send SMS
Communication
Text message notification
160 chars, opt-in compliance, link shortening
Send Push Notification
Communication
Browser/app push alert
Action buttons, deep linking, real-time
Send Follow-up Email
Description: Send an additional email to the customer after the initial notification
Configuration Options:
Email Template: Select from template library or create new
Send Delay: Immediate or scheduled delay (hours/days)
Conditional Send: Only if customer hasn't purchased
Subject Line: Customizable with variables
Content: Rich text editor with Liquid variables
Available Variables:
{{ customer.first_name }}{{ customer.email }}{{ product.title }}{{ product.url }}{{ product.image }}{{ variant.title }}{{ discount_code }}(if generated in workflow)
Use Cases:
Reminder email 24-48 hours after initial notification
Urgency email ("Low stock remaining!")
Last chance email before attribution window closes
Re-engagement for non-openers
Send Internal Email
Description: Notify store team/admin about workflow events or high-demand products
Configuration Options:
Recipient Email(s): Comma-separated list or role-based (store owner, inventory manager)
Email Template: Internal notification format
Trigger Condition: When to send (e.g., 100+ subscribers, low stock)
Content: Summary data about the event
Available Data in Email:
Product/variant information
Number of subscribers waiting
Current inventory level
Campaign performance metrics
Subscriber list (optional, with privacy controls)
Use Cases:
Alert inventory team when 100+ customers waiting
Notify manager of high-demand products
Daily digest of restock activity
Low inventory warnings with waitlist data
Business Value:
Data-driven inventory planning
Demand forecasting
Proactive restocking decisions
Create Draft Order
Description: Generate a pre-filled Shopify draft order with checkout link for easy purchase
Configuration Options:
Product/Variant: Auto-populate from subscription
Quantity: Default 1, customizable
Applied Discount: Optional discount code or percentage
Line Item Properties: Custom data (e.g., "From Waitlist")
Note: Internal note on draft order
Checkout Link: Generate and include in email
Use Cases:
One-click purchase for VIP customers
Pre-applied discount for waitlist subscribers
Reduced friction checkout experience
Priority access to limited inventory
Customer Experience:
Click link → Pre-filled cart → One-click checkout
Discount automatically applied
Faster conversion
Business Value:
Higher conversion rates (reduce steps to purchase)
Track waitlist revenue separately
VIP customer experience
Create Discount Code
Description: Generate a unique or shared discount code for the customer
Configuration Options:
Discount Type:
Percentage off (e.g., 10%)
Fixed amount off (e.g., $5)
Free shipping
Discount Value: Amount or percentage
Code Type:
Unique per customer (one-time use)
Shared code (multiple uses)
Usage Limits:
Uses per customer: 1 (default)
Total uses: Unlimited or limited
Minimum Requirements:
Minimum purchase amount (e.g., $50)
Minimum quantity (e.g., 2 items)
Eligible Products:
Specific product (the restocked item)
Collection
Entire store
Expiry Date:
Days from creation (e.g., 7 days)
Specific date
Use Cases:
Incentivize immediate purchase ("10% off if you buy today")
VIP exclusive discounts
Loyalty reward for patient waitlist customers
Limited-time urgency ("Code expires in 48 hours")
Integration with Email:
Discount code automatically inserted into email template
Variable:
{{ discount_code }}Clearly displayed with expiry date
Business Value:
Increase conversion rates
Create urgency (time-limited offers)
Measure discount effectiveness per campaign
Add Customer Tags
Description: Add tags to customer profile in Shopify for segmentation and future marketing
Configuration Options:
Tag List: Comma-separated list
Use Cases:
Segmentation: "High-Intent-Customers", "VIP-Waitlist"
Product interest tracking: "Interested-Blue-Tshirt"
Engagement level: "Email-Engaged", "Never-Opened"
Lifecycle stage: "Waitlist-Converted", "Waitlist-Non-Converter"
Future targeting: Use tags in future campaigns
Business Value:
Build targeted customer segments
Personalize future marketing
Track customer interests
Measure campaign effectiveness
CRM integration (sync tags to external systems)
Related articles
Create a workflowManage workflowsCampaigns📩 Need help?
We’re here to make your XFlow experience smooth and successful. Our support team is always ready to assist you—no matter how big or small your question is.
Last updated