Customer.io Behavioral Email: Triggering Messages Based on What Users Actually Do
Most ESPs treat email marketing as a scheduling problem. You pick a list, write a message, choose a send time, and hope the right people are reading at the right moment. That approach works reasonably well for newsletters and promotional blasts — but it fundamentally misunderstands how people actually engage with your product.
Customer.io was built on a different premise: the most relevant email you can send is the one triggered by something a person just did, or conspicuously failed to do. That’s the foundation of behavioural email, and it’s why Customer.io has become the go-to platform for SaaS companies, mobile apps, and data-driven e-commerce brands that want their messaging to mirror real user behaviour.
This guide covers the full picture — how Customer.io’s event architecture works, how to instrument your product correctly, and which behavioural campaigns consistently drive the strongest results.
What Makes Customer.io Different
Traditional ESPs store a contact record with static attributes: name, email address, subscription date, maybe a few custom fields. Campaigns fire based on those attributes or a scheduled time.
Customer.io adds a third dimension: events. An event is any action a user takes that you choose to record. It can be a page view, a button click, a feature activation, a purchase, a failed payment, or a period of inactivity. Each event can carry properties — metadata about that specific action — which Customer.io stores and makes queryable.
This means your campaigns can react to what users do in near real time. When someone completes a specific action, Customer.io can immediately evaluate whether that person meets the entry criteria for a campaign and, if so, enrol them automatically.
The result is email that feels less like marketing and more like a helpful assistant who’s been paying attention.
Instrumenting Your Product to Send Events
Behavioural email is only as good as the data feeding it. Before you build a single campaign, you need to send meaningful events to Customer.io.
Choosing What to Track
Start by mapping your user journey. For a SaaS product, this typically looks like:
- Account created
- Email verified
- First login
- Key onboarding steps completed (each step as a separate event)
- Core feature first used
- Integration connected
- Invited a team member
- Upgraded plan
- Last seen (the timestamp updated on each session)
For e-commerce, you’d track: viewed product, added to cart, started checkout, completed purchase, submitted review, used a promo code, returned an item.
The principle is the same: identify the actions that signal intent, progress, or disengagement, and make sure each fires as a distinct event.
Sending Events via the API
Customer.io’s Track API accepts events in this format:
POST https://track.customer.io/api/v1/customers/{customer_id}/events
The body includes the event name and any properties you want to attach. For example, a feature_activated event might carry { "feature_name": "reporting_dashboard", "plan": "pro" }. Those properties become available inside Customer.io for filtering, segmentation, and personalisation.
You can also send events via Segment, Rudderstack, or a direct server-side integration. Customer.io’s JavaScript snippet handles browser-side events for web apps.
Updating People Attributes
Alongside events, Customer.io stores per-person attributes — persistent values like plan_type, trial_ends_at, onboarding_complete, or last_feature_used. Keep these updated via the Identify call whenever relevant state changes in your product. Campaigns can then branch based on both events (what they did) and attributes (what state they’re currently in).
Building Behaviour-Triggered Campaigns
Customer.io offers two main campaign types. Broadcasts are one-time sends to a segment — useful for announcements or newsletters. Triggered campaigns fire for individuals based on events or attribute changes — this is where behavioural email lives.
The Signup and Welcome Campaign
The first behavioural trigger for almost every product is account creation. When a customer_created or signed_up event fires, Customer.io immediately enrols that person in a welcome campaign.
A strong welcome campaign for SaaS does three things:
- Confirms the account and sets expectations (sent within minutes of signup)
- Directs the user to the single most valuable first action in your product
- Provides a helpful “getting started” resource 24–48 hours later if that first action hasn’t been taken
That last point — the conditional branch — is what separates Customer.io welcome campaigns from static welcome sequences. You can check whether the user has completed the first key action and send a different message depending on their state. If they completed it, celebrate the progress. If they haven’t, provide guidance to remove the friction.
Feature-Use Triggered Campaigns
Once a user activates a key feature, that event is your trigger. A feature_activated event with feature_name: "reporting_dashboard" can kick off a short campaign that helps them get the most from that specific feature — a tip, a case study, or a prompt to explore the next logical feature.
This is more relevant than any scheduled drip sequence because it fires in direct response to demonstrated interest. You know they care about reporting — now is the moment to deepen their engagement with it.
Build a separate mini-campaign for each of your two or three core features. Keep them short: two or three emails over a week. Focus on outcomes the user can achieve now that they’ve activated the feature.
Inactivity Campaigns
Inactivity is a behaviour too — specifically, the absence of an expected behaviour. Customer.io handles this through its segment-based campaign entry, combined with attribute checks.
A typical inactivity trigger uses a time-based condition: “No app_login event in the last 7 days AND plan_type is trial.” When a user matches this segment, they enter a re-engagement campaign.
Structure the inactivity campaign to:
- Acknowledge the gap without being accusatory (“We noticed you haven’t logged in this week”)
- Remind them of the value they haven’t yet captured
- Offer a concrete, low-friction reason to return (a new feature, a quick tutorial, a check-in call)
- Escalate to a “we’re here to help” message if they remain inactive after another 5–7 days
For trial users specifically, connect the inactivity campaign to the trial expiry sequence. If they re-engage before the trial ends, suppress the expiry urgency emails. If they don’t, the trial expiry campaign fires with appropriate urgency.
Behavioural Branching Within Campaigns
Customer.io’s campaign canvas lets you place decision nodes at any point in a sequence. A decision is a yes/no check against an event or attribute at the moment a user reaches that node.
For example, after sending a “have you tried our analytics feature?” email, place a decision three days later: “Has feature_activated with feature_name: analytics occurred since entering this campaign?” Users who have go down the “engaged” path and receive a more advanced tip. Users who haven’t receive a simpler “here’s how to get started” email.
This branching is where Customer.io significantly outperforms simpler ESPs. You’re not guessing — you’re responding to what actually happened.
Customer.io vs Traditional ESP Campaigns
The philosophical difference is worth stating clearly.
Traditional ESP campaigns are calendar-driven. You decide in advance that everyone who signs up gets Email 1 on Day 0, Email 2 on Day 3, Email 5 on Day 10. The content is generic enough to be relevant to anyone on that list.
Customer.io campaigns are state-driven. The campaign reacts to what the person has done. A user who completes onboarding in 48 hours has a completely different experience than one who’s been in the product for two weeks and hasn’t completed step one. Both paths are handled automatically.
The result is a significantly higher signal-to-noise ratio for the subscriber. They receive emails when those emails are specifically relevant to where they are in their journey — not because a calendar said it was day seven.
For SaaS companies in particular, this difference shows up in the metrics that matter: trial-to-paid conversion rate, feature adoption, and early churn rate.
High-Performing Behavioural Sequences for SaaS and E-Commerce
Across the most effective Customer.io implementations, a handful of campaign patterns consistently deliver outsized results:
Trial milestone emails — triggered when a user hits 50% and 80% of their trial period with onboarding incomplete, personalised to exactly which steps they’ve missed.
“You just unlocked X” emails — triggered immediately when a user crosses a meaningful threshold (sent their first campaign, connected their first integration, invited their first team member). These celebrate progress and point to the next step.
Predictive churn campaigns — using Customer.io’s attribute conditions to catch users whose last-login date is creeping toward a threshold that your data shows correlates with churn. Intervene before they make the decision to leave.
Post-purchase product education — for e-commerce brands selling products with a learning curve. Trigger a helpful “how to get the most from your new [product]” sequence 24 hours after the order ships.
Cart abandonment with context — e-commerce cart abandonment in Customer.io can be enriched with event data about how many times a user viewed the specific product, whether they’ve purchased from the same category before, and their total LTV. This allows more targeted copy than a generic “you left something behind” message.
Getting the Architecture Right
The biggest mistake teams make with Customer.io is underinvesting in the data layer. You can build beautiful campaign logic in the canvas, but if the events aren’t firing reliably — or aren’t carrying the right properties — the campaigns won’t work.
Invest time upfront in:
- Defining your event schema and naming conventions
- Testing event delivery in Customer.io’s Activity Log before campaigns go live
- Keeping person attributes current via reliable server-side calls
- Documenting every event and property so future team members understand what’s available
Get this foundation right and Customer.io becomes one of the most powerful tools in your marketing stack.
Working With Excelohunt
Setting up Customer.io correctly — from event instrumentation to campaign architecture to behavioural branching — requires both technical precision and strategic thinking. Excelohunt specialises in Customer.io implementations for SaaS and e-commerce brands, helping teams build the full behavioural email stack from scratch or audit and rebuild under-performing existing setups.
Related Excelohunt Services
Looking to implement these strategies with expert support?
- Customer.io — learn how we implement this for clients
- Email Automations — learn how we implement this for clients Get a free audit →
Want Us to Implement This for Your Brand?
Get a free email audit and see exactly where you're losing revenue.
Get Your Free Audit