Skip to main content
← Back to projects

Case study · Klaviyo

Channel Affinity

A predictive ML model that tells marketers which channel — Email, SMS, Push, or WhatsApp — each customer is most likely to engage with. I led the UX for profile attributes, segmentation, and flows.

Channel Affinity
Company
Klaviyo
Focus
ML Routing · Segmentation UX · Trust
Impact
+5–10% engagement lift · +42% SMS

Background

Channel selection was guesswork.

About 10% of Klaviyo customers send across more than one channel monthly. When they do, they have no ML signal to tell them where each customer is most likely to engage. SMS is expensive — marketers want to spend it on people who'll actually respond. But without data, it's just intuition.

Customers told us directly in research — from VICI ($36k MRR) to Sakroots ($25k MRR) to Gourmetgiftbaskets ($20k MRR):

Duplicate messaging fatigue
Sending the same message to the same person on email and SMS simultaneously feels like spam.
"People don't want to at the exact same time receive the same message through both channels." — Sakroots
Wasted SMS spend
SMS costs money per message. Sending to disengaged customers burns budget with no return.
"We want to send SMS to people who really need it." — Customer research
Channel silos
When someone unsubscribes from email but stays on SMS, marketers have no way to adapt their strategy to that signal.
"We're operating within a silo — blind to those unsubscribes." — Gourmetgiftbaskets
Manual workarounds
Savvy customers built their own preferred channel properties using flow logic and engagement tracking — a system that doesn't scale.
"Some CSMs create preferred channel preferences manually." — Internal research

Solution

Ranked predictions. Built into your workflow.

Channel Affinity uses historical engagement data — opens, clicks, delivery rates over 7, 30, and 90 days — to predict each profile's likelihood to engage with each channel. The output: two new profile properties available in Segment Builder, Flow Builder, and on the Profile page.

Channel Engagement Preference
Orders channels by expected engagement — First, Second, Third. Used to route to a customer's most responsive channel.
Channel Engagement Tier
Assigns a predicted engagement level — High, Medium, Low — by comparing each profile to others. Available for single-channel accounts too.

Before Channel Affinity — manual, rule-based routing

Current frustrations

With Channel Affinity — automated prediction, built into existing workflows

Future visioning

User testing

11 customers. A lot of confusion.

I ran 1:1 interviews with 11 customers (SMB → Mid-Market) to test whether they understood the mental model and could apply it in their workflows.

Research participants
What we learned
Low conceptual understanding — customers didn't know this was a prediction, not a stored preference
Terminology confusion — "preference" implied a manual field, not a model output
Lack of trust — users wanted transparency into how rankings were decided
Rank labels felt ambiguous — "top engaged" or "rank 1" didn't land clearly
Design decisions made
Renamed "preference" → "engagement" to signal it's predictive, not manual
Launched in Segment Builder first — most familiar surface, clearest mental model
Added Tier (High/Medium/Low) alongside Preference — gives context, not just rank
Used percentile-based thresholds per company — avoids one-size-fits-all cutoffs
Key insight
Customers who have a preferred channel with low predicted engagement could be misled by a simple "preferred channel" label. The two-property system — Preference (rank) + Tier (level) — gives both the direction and the signal strength.

Where it lives

Three surfaces. One data model.

Profile page — channel engagement visible on every customer record

Profile page
Segment Builder — build audiences by channel engagement tier or preference
Segment builder
Flow Builder — conditional splits route messages to the right channel
Flows

The use cases this unlocks: send single-channel to the customer's most engaged channel; follow up with the second channel only if they don't respond; exclude low-engagement profiles from expensive SMS sends; or reach high-intent customers across all channels they're likely to act on.

Impact

Results

+5–10%
Engagement lift in concierge experiments
+7.8%
Email lift in flow experiments (directional)
+42%
SMS lift in flow experiments (directional)
Inconclusive
Aggregate vs. simpler heuristics — informing next-gen work
Reflection
The hardest part wasn't the model — it was making predictions feel trustworthy. Renaming "preference" to "engagement", adding the tier system, and surfacing both rank and signal strength turned a confusing ML output into something marketers could actually act on with confidence.