FlowSync’s visual condition builder looks simple — dropdowns and pills — but it’s capable of sophisticated branching logic that rivals custom code. This guide covers everything from basic IF statements to nested conditions and edge cases.
Understanding the Condition Interface
When you add a condition block, you see three elements:
- Field selector — What data to evaluate (user meta, order total, membership level, etc.)
- Operator — How to compare it (equals, not equals, greater than, contains, etc.)
- Value — The target to compare against
These three elements form a single condition. You can chain multiple conditions with AND/OR logic.
Basic Conditions
Single condition:
plain
Copy
IF Membership Level equals "Premium"
Multiple conditions (AND):
plain
Copy
IF Membership Level equals "Premium"
AND Registration Source equals "Organic"
Both must be true for the workflow to proceed.
Multiple conditions (OR):
plain
Copy
IF Membership Level equals "Premium"
OR Membership Level equals "Pro"
Either condition being true triggers the workflow.
Available Field Types
FlowSync exposes data from multiple sources:
WordPress Core
- User ID, Email, Display Name, First Name, Last Name
- User Role, Registration Date, Last Login
- Custom user meta (any meta key)
MemberPress
- Membership Level, Subscription Status, Gateway
- Trial status, Expiration date, Total payments
WooCommerce
- Order Total, Product ID, Product Category
- Order Status, Payment Method, Shipping Country
- Customer lifetime value, Order count
Custom Fields
- Any ACF, Pods, or Toolset field
- Any custom user meta or post meta
Advanced Operators
Table
| Operator | Use Case |
|---|---|
| equals | Exact match (case-sensitive for strings) |
| not equals | Exclude specific values |
| greater than / less than | Numeric comparisons (order totals, dates) |
| contains | Partial string match (tags, categories) |
| starts with | URL sources, coupon codes |
| is empty / is not empty | Check if field has any value |
| in list | Match against multiple values at once |
| between | Date ranges, price ranges |
Nested Logic with Groups
For complex scenarios, group conditions:
plain
Copy
IF (Membership Level equals "Premium" OR "Pro")
AND (Registration Date is within last 30 days)
AND (Country is not empty)
Click + Add group to wrap conditions in parentheses. This prevents logic errors when mixing AND and OR.
Dynamic Values
Instead of static values, use tokens from the trigger event:
plain
Copy
IF Order Total is greater than {{user_meta:lifetime_value}}
This compares the current order against the customer’s historical spending. Tokens update in real-time during workflow execution.
Testing Complex Conditions
Always use Test Run with edge cases:
- A user who meets all conditions
- A user who meets some conditions
- A user who meets no conditions
Check the execution logs to see which conditions evaluated to true/false and why. The logs show the actual values being compared, which makes debugging straightforward.
Common Patterns
New customer welcome:
plain
Copy
IF Order Count equals 1
Re-engagement trigger:
plain
Copy
IF Last Login is before 30 days ago
AND Email Open Rate is less than 10%
Geographic routing:
plain
Copy
IF Country equals "United States"
→ Send to US sales team
ELSE IF Country equals "United Kingdom"
→ Send to UK sales team
ELSE
→ Send to global queue
Performance Notes
Conditions are evaluated server-side before any actions run. This means:
- Failed conditions don’t consume API calls (no wasted HubSpot/Mailchimp requests)
- Complex conditions with many tokens add minimal overhead
- Date-based conditions use WordPress timezone settings automatically