
Behavior-based email segmentation: a PassReady case study (29% activation lift)
How PassReady, an online exam-prep startup, lifted activation 29% with behavior-based email segmentation built on Spreeflo. A lifecycle marketing case study.
How TripStash moved from 0.4% to 9.8% browser push click-through by climbing from broadcast to behavioral to contextual. A three-tier framework with a worked example.

Spreeflo Team
Author
TripStash, an indie booking site for week-long adventure trips, had 18,000 opted-in browser push subscribers and was getting a 0.4% click-through rate on its weekly Friday drops. Twelve weeks later, the same list was clicking at 9.8%. The subscribers didn't change. What changed was how TripStash thought about the channel.
Most teams running browser push are stuck where TripStash started: treating it like email's twitchier cousin. Same broadcast logic, same once-a-week cadence, lower returns. The fix isn't more notifications. It's a different mental model of what the channel is for, and a clearer view of which tier of practice a team is actually operating at.
This post lays out three tiers of browser push notification psychology, with TripStash threading through as the worked example.
Browser push notification psychology is the study of how visitors perceive, interpret, and react to browser-delivered notifications, and the rules that follow from those perceptions. It differs from mobile push in two important ways. Opt-in friction is higher because the browser asks before allowing any prompt at all, so the pool of subscribers self-selects for stronger intent. Reach is narrower because notifications only fire when the browser is open or running in the background, not from a phone's home screen. The trigger semantics are the same: a notification fires, the recipient decides in under a second whether it's worth their attention.
TripStash's first 90 days running browser push felt like a free win. Eighteen thousand opted-in subscribers in three months, with a Bell-style prompt firing after the third page view. The trouble started in month four, when the click-through rate on weekly trip drops drifted below half a percent and unsubscribe rates began ticking up. The subscribers were still there. They had just stopped reading.
Every team running browser push is operating at one of three tiers of practice. The tier defines the ceiling: how high the click-through rate can climb, how much retention the channel adds, and how much revenue it pulls. Most teams plateau at tier one without realizing the next two tiers exist.
Tier 1's signature is one notification, one list. Everyone subscribed gets the same message at the same time. It's the natural starting point for most teams because it mirrors how they already run email.
The ceiling sits around 0.4% to 1% click-through on average, on a healthy list. TripStash sat at 0.4% for a quarter before anyone treated it as a problem.
The bottleneck is habituation. The brain learns fast that a sender's notifications are predictable, and once it learns that, it stops surfacing them. Three or four broadcasts in a row that don't speak to the recipient's current intent are enough to retrain the visitor's attention. After that, the notification fires, the visitor glances, and dismisses without reading the body. The subscription doesn't churn, but the channel does.
We saw the click-through rate dropping for a month before we admitted what was happening. Our weekly drop was hitting people who'd searched Iceland once, four months ago, alongside people who'd booked two trips last quarter. Same message. Of course it stopped working.
Tier 2's signature is the opposite: each notification fires based on what a specific subscriber did or didn't do. The cadence isn't weekly. It's whenever the behavior demands.
For TripStash this meant rebuilding the channel around four behavioral triggers. A price-watch alert when a saved trip's price dropped below the saved baseline. A re-prompt when a previously rained-out trip window had its weather forecast clear up. A cohort-opening alert when a trip the subscriber had searched in the past 60 days had a new departure date. An abandoned-checkout nudge when a booking was started but not completed within two hours.
This is where Spreeflo's tooling earns its first mention. The Spreeflo SDK identifies visitors on the site, tracks page views automatically, and fires custom events for price drops, cart abandons, and forecast changes via Spreeflo.track. Those events become first-class journey triggers. A journey starts on Custom Event "price_drop", checks segment membership (was the contact watching this trip?), then routes to a Send Web Push action with the trip name and new price interpolated into the body. Setting the same journey up across all four behavioral triggers takes a few hours, not a sprint.
The ceiling at tier 2 is noticeably higher: 5% to 15% click-through on the right notifications, with abandoned-booking flows often clearing 20%. TripStash's weighted average across all four flows landed at 9.8% twelve weeks in.
The bottleneck at tier 2 is that each notification is still treated as independent. If a subscriber gets a price-watch alert, opens it, closes it, then gets the same price-watch alert two days later, the second one feels mechanical. The channel works, but it doesn't yet feel like it's paying attention to the relationship.
The thing that surprised me was how much of the lift came from the abandoned-checkout flow alone. We almost didn't build it, because it felt like overkill for trip bookings. It does more revenue now than the other three triggers combined.
Spreeflo's visual sequence builder lets you wire up custom events, segments, and Send Web Push actions into a single journey without writing code.
Tier 3's signature is coordination. Each notification considers what the subscriber just received elsewhere, where they are in their broader journey, and what state the channel itself is in.
In practice this looks like three things layered on tier 2.
First, frequency intelligence. A subscriber who's just received a notification shouldn't get another one stacked on top a day later. Spreeflo doesn't ship a built-in frequency cap, but the pattern is short to wire up from documented journey components. Each web push journey writes a last_web_push_at timestamp to the contact via Update Contact Attribute after the send. At the top of every non-urgent journey, a Wait Condition holds the next send until that timestamp is older than the cap window (TripStash settled on 48 hours). Time-sensitive flows like abandoned-checkout skip the wait and fire immediately.
Second, cross-channel coordination. Check Email Activity and Check Web Push Activity let a journey branch on whether the subscriber opened the related email or clicked the related notification. TripStash's price-watch flow now sends an email first, waits 90 minutes, and only fires the browser push if the email wasn't opened. The subscriber gets one nudge, not two, on the same intent.
Third, copy that reflects state. Spreeflo's AI personalization rewrites the notification body based on what the subscriber has done in the last 30 days. The same price-drop trigger reads differently for someone who's bought two trips already versus someone who's saved five and bought none. The trigger is the same. The body isn't.
Within ninety days of the rebuild, web push went from accounting for under 2% of TripStash's monthly bookings to roughly 14%. Conversion during peak demand windows, when intent compounds with scarcity, ran as high as 24%.
The ceiling at tier 3 isn't a click-through number. It's retention: subscribers stay opted in longer, and their lifetime engagement with the channel keeps lifting rather than decaying. That's the real prize.
The number I check now isn't click-through. It's how long someone stays subscribed and clicks something at least once a month. Tier 1 lost subscribers slowly through the back door. Tier 3 keeps them in, and that compounds in a way I didn't expect.
The honest answer is that tier one feels fine until it doesn't. Subscriber numbers go up, the team treats the channel as healthy, and nobody runs the click-through trend by quarter. By the time it becomes obvious that the channel is decaying, the architecture to fix it (events, segments, journeys, branching) is a multi-week build, and the team has moved on to other priorities.
Two specific patterns make this worse for founder-led teams.
Pattern one: the channel was set up by whoever was free at the time, not by someone who owns growth. The opt-in prompt is doing its job, the broadcasts go out, the dashboard shows numbers. Nothing is alerting anyone that the trend is wrong.
Pattern two: behavioral push gets bundled with "behavioral email," and the email backlog wins every quarter. Teams that wouldn't put off behavioral email for a year happily put off behavioral push because the absolute revenue numbers look smaller. They look smaller because the channel is undersized. The return compounds once the architecture is in place, and the architecture is the same for both channels in Spreeflo. Build it once, run it across both.
For TripStash, the move from tier 1 to tier 3 took one focused week of building. The team rebuilt the architecture from scratch in that week and spent the rest of the quarter watching the data and tuning. The sequence:
Replaced the weekly drop broadcast with four behavioral triggers (price_drop, weather_clear, cohort_opening, abandoned_booking) fired through the Spreeflo SDK.
Built one journey per trigger, each with a segment gate at the top and a Send Web Push action at the bottom.
Added a last_web_push_at timestamp attribute that each journey updates via Update Contact Attribute, gated at the top of every non-urgent journey by a Wait Condition that held sends until 48 hours had passed since the last notification.
Added Check Email Activity branches so the price-watch journey routed through email first and only fired the notification on miss.
Switched the notification body copy to AI-personalized variants based on contact behavior history.
None of it required new tooling beyond Spreeflo. The web push subscriber list, the contact attributes, and the event stream were already in one platform. The work was sequencing, not procurement.
A two-minute self-diagnostic.
If most browser push sends in the past 60 days went to the entire subscriber list, you're at tier 1.
If most sends were triggered by user events but each notification was authored as a standalone send, you're at tier 2 with no coordination.
If sends consider both the user's recent behavior and the channel's recent state (frequency caps, related email opens, prior notification clicks), you're at tier 3.
Tier 1 to tier 2 is the larger lift in absolute terms. Tier 2 to tier 3 is the larger lift in retention terms. Most teams get to tier 2 and stop. Tier 3 is where the channel stops decaying.
Three patterns consistently pull teams from tier 2 back toward tier 1 over time.
Treating the abandoned-checkout flow as the only behavioral notification. The flow works so well that teams default to it and stop building the other behavioral triggers. The list ends up trained to ignore everything that isn't a cart recovery.
Letting the notification body decay. The body copy is set once and never revisited. AI personalization stays off because nobody owns the experiment. The trigger keeps firing, but the message stops mattering.
Forgetting the frequency cap. As more behavioral triggers get added, the cap drifts up and the per-subscriber notification volume climbs. The visitor habituates to the new normal, and the click-through rate starts decaying back toward tier 1 levels.
The fix for all three is the same: one named owner for the channel, a quarterly audit of which triggers are firing how often, and a willingness to retire flows that aren't pulling weight.
The teams that get the most out of browser push aren't the ones that send the most. They're the ones that learn to think about the channel as an attention market: tier 1 spends attention, tier 2 spends it more carefully, tier 3 starts earning it back.
The teams climbing fastest tend to be small. Not because they have more time, but because the work is sequencing, not headcount, and a single growth lead can wire up four behavioral journeys in an afternoon if the tooling is right. Spreeflo's web push, journey, and segmentation stack is built for that case: skip tier 1 entirely and start at tier 2 from day one, with the architecture for tier 3 already in place when you need it.
Spreeflo gives founder-led teams the web push, journey builder, web tracking, and segmentation tools to run browser push at tier 3 from day one. Email and web push share one contact record, one segment library, and one journey canvas, so cross-channel coordination is the default, not a project. All of it at 2-3x more affordable than the platforms most teams outgrow.
Two main differences. Browser push only reaches subscribers when the browser is open or running in the background, so the moment-of-attention window is narrower than for mobile. Browser opt-in friction is also higher, because the prompt is gated behind a separate browser-level permission, which means the subscriber pool self-selects for stronger intent. The behavioral framework (timing, frequency, messaging) is the same, but the absolute volume of notifications a subscriber will tolerate is lower.
Around 2,000 opted-in browser push subscribers is the rough floor where behavioral triggers start producing reliable signal. Below that, the volume of price-drop or abandoned-checkout events per week is too low to learn from. Above 2,000 subscribers, every behavioral trigger except the rare ones is worth building.
About four to six weeks. The architecture went in during a one-week build, with the tier 2 triggers and the tier 3 refinements (frequency gating, cross-channel coordination, AI body copy) put in place together. The first three weeks of running were noisy as the broadcast list got weaned off and the triggers got tuned. Click-through rates by trigger settled into stable ranges between weeks four and six. Ines's team didn't add new flows during that window. They watched, tuned copy, and adjusted the frequency cap.
Two reasons. Email gives the subscriber more context in the body (trip photos, similar trips, change history), which converts higher when the subscriber is in a planning mood. The browser push is faster but shorter. Routing email first and using the push as a miss-handler means the subscriber gets the higher-context message when they're ready, and a quick nudge when they're not. Check Email Activity is the branching logic that makes this work.
Discover more insights on similar topics

How PassReady, an online exam-prep startup, lifted activation 29% with behavior-based email segmentation built on Spreeflo. A lifecycle marketing case study.

How CodeMosaic, a global developer community, runs event-triggered email at scale on Spreeflo, hitting a 13% CTR across multi-language lifecycle journeys.

Most small teams say they do event-driven marketing. Few actually do. Four timing failures that masquerade as automation, and how to fix them.