Set Up Conditional CTAs in Marketing Emails
You're sending one CTA to everyone - "Book a Demo" to people who already booked one, "Start Free Trial" to paying customers, "Download Guide" to people who downloaded it last week. It's awkward at best, annoying at worst. Different people need different actions, but creating 15 versions of the same email is madness.
How This Solves It
Build smart CTAs that automatically change based on who's reading the email. Show "Book a Demo" to prospects, "View New Features" to customers, "Upgrade Now" to free users, and "Re-engage" to churned accounts. Same email, right action for each person. No manual segmentation needed.
Instead of sending one generic CTA to everyone, you will:
-
Store customer status in clean contact properties
-
Use workflows to update those properties
-
Insert one CTA module in your email
-
Make it smart using property-based rules
Result:
One email. Multiple CTAs. Automatically personalized per contact.
Requirements
Subscription
-
Marketing Hub Professional or Enterprise
Data Requirements
You must have:
-
Clean lifecycle stages
-
Customer status (or product tier)
-
A property indicating whether a demo is booked (if relevant)
Smart CTAs only work off stored properties or list membership. They cannot directly reference raw behavior like “visited pricing 3 times” unless that data is written to a property.
Step 1: Create the Properties (If Needed)
Go to:
Settings → Properties → Contact properties
Create any missing properties such as:
Example Properties
| Property Name | Type | Example Values |
|---|---|---|
| Customer Status | Dropdown | Prospect, Customer, Churned |
| Product Tier | Dropdown | Free, Basic, Pro, Enterprise |
| Demo Booked | Checkbox | Yes / No |
| Last Login Date | Date | (Used for inactivity logic) |
Keep property names simple and standardized.
Step 2: Use Workflows to Maintain the Data
Go to:
Automation → Workflows → Create contact-based workflow
You must update properties automatically based on behavior.
Example 1: Demo Booked Property
Trigger:
-
Meeting booked
-
Deal stage = Demo Scheduled
Action:
-
Set property: Demo Booked = Yes
Example 2: Inactive Customer Tag
Trigger:
-
Last login date is more than 60 days ago
Action:
-
Set property: Customer Status = Inactive
Architecture Pattern
Behavior → Workflow → Update Property → Smart CTA Rule
Without this property layer, smart CTAs will not work correctly.
Step 3: Create the CTA Variations
Go to:
Marketing → Lead Capture → CTAs
Create each CTA separately.
Example CTA Assets
-
Book a Demo
-
View Pricing
-
Upgrade to Pro
-
Explore New Features
-
Re-Engage
For each CTA:
-
Set correct URL
-
Keep styling consistent
-
Add tracking parameters if needed
-
Use personalization tokens carefully (e.g. Hi,)
Do not create logic inside the CTA tool. Logic happens in the email module.
Step 4: Insert the CTA Into the Email
Open your marketing email.
-
Drag in a CTA module
-
Select a default CTA (this is your fallback)
-
Click Make smart
Step 5: Build the Smart Rules (Correct Order Matters)
Rules evaluate top to bottom.
Place specific conditions above broad ones.
Example Rule Structure
-
IF Customer Status = Inactive → Show “Re-Engage”
-
IF Customer Status = Customer AND Product Tier = Free → Show “Upgrade to Pro”
-
IF Demo Booked = Yes → Show “Prepare for Your Demo”
-
IF Lifecycle Stage = Lead → Show “Book a Demo”
-
Default → Show “Learn More”
If you place “Customer” before “Inactive Customer,” the inactive rule will never trigger.
Step 6: Build Time-Based CTA Swaps (Optional Advanced Layer)
You can drive tenure-based CTAs using calculated properties or workflows.
Example
If Customer Since is less than 30 days:
-
Show “Complete Setup”
If Customer Since more than 6 months:
-
Show “Explore Advanced Features”
This requires:
-
A “Customer Since” date property
-
Workflow enrollment rules using date calculations
Step 7: Testing Process (Mandatory)
Before sending:
-
Click Preview
-
Use “Preview as specific contact”
-
Test contacts representing each segment
-
Send test emails to internal accounts
Create structured test records:
-
test-lead@company.com (Lifecycle = Lead)
-
test-free-user@company.com (Customer + Free tier)
-
test-inactive@company.com (Inactive status)
Confirm each receives the correct CTA.
Step 8: Fallback Strategy
Your default CTA must work for anyone.
Best practice:
-
Use a low-friction action (Learn More, Explore Features)
-
Avoid hard sell as default
If 40% of contacts have missing lifecycle stage, they will all see the default.
Data hygiene directly impacts personalization quality.
Reporting & Optimization
After sending:
Go to:
Marketing → Lead Capture → CTAs
Review:
-
Views
-
Clicks
-
CTR by CTA asset
For deeper insight:
-
Build a custom report
-
Filter CTA clicks by lifecycle stage or product tier
Track downstream conversion (meetings booked, upgrades), not just clicks.
What Not To Do
-
Do not rely on negative conditions like “Lifecycle Stage is NOT Customer”
-
Do not create 10+ smart variations in one email
-
Do not mix drastically different button styling
-
Do not assume behavioral triggers work without property updates
-
Do not skip fallback logic
Recommended Starter Framework (Simple & Effective)
Start with only 3 variations:
-
Leads → Book a Demo
-
Free Users → Upgrade to Paid
-
Customers → View New Features
-
Default → Learn More
Launch.
Measure.
Refine.
Why This Works
Standard emails treat everyone the same.
Smart CTA emails align the ask with lifecycle stage:
-
Leads move forward
-
Customers expand
-
Inactive users re-engage
This improves conversion rates without increasing campaign volume.
