Back to Playbooks

Stop Letting Pricing-Page Tourists Slip Away: A Browse-Abandonment Playbook for Shopify Apps

Free

A detailed browse-abandonment journey for Shopify and SaaS apps using Spreeflo, showing how to turn repeat pricing-page visitors into trials and paying customers with behavioral triggers, targeted emails, smart delays, and tagging that proves revenue impact.

Industry

Niche

Pattern

Loading sequence...

The graph looked great until it didn’t.

Ella, co‑founder of a Shopify analytics app doing around $80k MRR, was walking her marketing contractor through their funnel. Traffic from the Shopify App Store was healthy. Their demo video had a decent watch rate. But a single chart in their dashboard wouldn’t leave her alone: the pricing page.

Same pattern every week: hundreds of merchants hitting pricing two or three times over a few days, then disappearing without starting a trial.

They had a cart‑recovery sequence for people who began checkout. They had a newsletter. They had nothing for this middle zone: merchants clearly curious, clearly evaluating, but not yet ready to click “Install app.”

When they finally wired up a browse‑abandonment journey, that gap turned into a revenue line. One similar flow at “Craft Company” (a fictional example based on real numbers) drove a 9.3% click‑through rate and a 4.5% browse‑to‑purchase conversion from people who previously just… vanished.

The sequence at the top of this page is the whole journey, end to end. This article walks through why it’s built that way, and how to adapt it for your own SaaS or Shopify app.

Why browse abandonment is a different beast from cart recovery

Most e‑commerce apps already think about abandoned carts. Someone starts a checkout, you remind them. Clear intent, clear money on the table.

Browse abandonment is earlier and softer:

  • They’ve hit your pricing or key feature pages multiple times.

  • They haven’t started a trial, clicked “Install,” or kicked off checkout.

  • They’re curious, but something is still in the way: timing, risk, internal politics, or just too many tabs.

For a typical SaaS or Shopify app, this group is large. It’s also where most lifetime value quietly leaks away, because:

  • They never hit your cart‑recovery triggers.

  • They’re too early for a hard‑sell sales email.

  • Your weekly blast is too generic to feel related to what they were just doing.

A good browse‑abandonment journey fixes that by:

  1. Capturing specific behaviour (which pages, how often, what they haven’t done yet).

  2. Sending a one‑to‑one email that acknowledges that behaviour and lowers the perceived risk of moving forward.

Spreeflo is built for exactly this move: take detailed behavioural data and turn it into timely, targeted messages. Let’s walk straight through the journey.

Step 0: Capture the right signals, not just traffic

Before the first node in the journey, you need the right events coming into Spreeflo.

For a browse‑abandonment pattern, that usually means:

  • A "page_view" or equivalent custom event with properties like url or page_type.

  • A high‑intent conversion event such as "trial_started", "app_installed", or "checkout_completed".

You can send these in from your marketing site or in‑app screens using the Spreeflo SDK (with automatic page views) or directly from your backend via the Spreeflo API. Either way, those events show up as first‑class data in the web tracking and analytics dashboard and inside the journey builder.

Two principles here:

  • Name events around intent, not implementation. pricing_page_view, billing_page_view, trial_started are all clearer than page_view_v2.

  • Attach enough properties to segment meaningfully later. For example: page_type = "pricing" or plan_shown = "pro" on key views.

This is brand message #1 in practice: capture enough detail on each prospect that you can speak to their situation, not “Dear user.”

Once those events are flowing, you can wire the actual journey.

The trigger: Criteria Match watching for “repeated views, no trial”

In the sequence at the top of this page, the journey starts with a Criteria Match trigger rather than a plain Custom Event trigger.

Reason: you care about a pattern (“at least two pricing views in a short window with no trial”), not a single event.

Inside the Criteria Match trigger, you define a condition using Spreeflo’s segment builder. A solid starting point for a Shopify app might be:

  • Custom Events
    - Event pricing_page_view triggered at least 2 times in the last 3 days.

  • AND Custom Events
    - Event trial_started has not triggered in the last 7 days.

  • AND Email Subscription Status
    - is Subscribed.

Now turn Re-enrollment on for this trigger. You want someone to be able to enter again in the future if they stop matching for a while (no pricing views), then come back and match again (new evaluation cycle). The segment builder’s “in the last X days” windows handle the “cooldown” for you.

Why this trigger setup matters:

  • You’re reaching people who have signalled intent more than once.

  • You’re not burning re‑engagement capital on a one‑off visitor.

  • You’re automatically excluding recent trials so they don’t get weird pre‑trial nudges.

From this trigger, every matched contact moves to the first action node.

Node 1: Time Delay to avoid feeling creepy

Immediately hitting someone with an email the moment they revisit pricing can feel like surveillance.

So the first node after the trigger is a Time Delay:

  • Delay: 2 hours

  • Unit: Hours

Two hours is long enough that your message feels like a considerate follow‑up rather than “we saw you on our pricing page five seconds ago.”

It also gives them some space to act on their own. A certain percentage will start a trial in that window; you don’t want to email those people about “thinking it over.”

Node 2: Wait Condition for “do they sort themselves out?”

Next, the journey uses a Wait Condition:

  • Condition:
    - Custom event trial_started triggered at least 1 time in the last 24 hours.

  • Timeout: 1 day

Here’s what this does:

  • If they start a trial in the next 24 hours, the condition is met early and they proceed immediately.

  • If they don’t, they wait the full day and then continue.

Right after this Wait Condition, the sequence branches with an If/Else:

  • Condition: same as above — “has trial_started in the last 24 hours?”

Two paths emerge:

  1. “Yes, they started.” These people go straight to an exit or to your onboarding journey.

  2. “No, still browsing.” This is your true browse‑abandonment audience. They move on to the first email.

This pair (Wait Condition + If/Else) is how you keep from nagging people who did exactly what you wanted between page view and follow‑up.

Node 3: The first browse‑abandonment email

For everyone who still hasn’t started a trial, the journey sends a Send Email.

Content‑wise, this email should feel like a helpful guide, not a discount bomb. Think:

  • A short acknowledgment that evaluating tools takes time.

  • A concise explanation of how merchants like them use your app.

  • One strong primary call‑to‑action: “Start a 14‑day trial” or “Install free on your store.”

You build this in Spreeflo’s email builder. Because you’re sending based on behaviour, you can make this email specific:

  • Reference the plan they were looking at if you’ve stored plan_interest as a contact attribute via the API.

  • Use AI‑assisted copy with personalize with AI variables so examples and language reflect their vertical or store size.

Leave Send only once turned on for this node. Even with re‑enrollment allowed at the trigger, nobody should receive the same introductory browse‑abandonment email twice.

Node 4: Time Delay before judging engagement

After this first email, add another Time Delay:

  • Delay: 2 days

  • Unit: Days

Two days is enough time for a busy merchant or ops lead to:

  • Open your email on desktop or mobile.

  • Forward it internally.

  • Click through when they have headspace.

Only then do you ask, “Did they engage with the email itself?”

Node 5: Check Email Activity to sort hot vs warm vs cold

The next node is Check Email Activity pointing at that first browse‑abandonment email.

Configure three branches:

  • Branch A: Link Clicked

  • Branch B: Opened

  • Branch C: Not Opened (via the negative condition)

Everyone falls into exactly one branch, with an automatic else branch catching anything unexpected.

Why this split:

  • People who clicked are very warm. They’re probably just missing one last reassurance or feature confirmation.

  • People who opened but didn’t click are interested enough to read but not yet sold.

  • People who didn’t open might have inbox overload or an unappealing subject line. Hitting them repeatedly can quickly feel like spam.

From here, each branch gets its own micro‑journey.

Branch A (Clicked): Nudge the almost‑there evaluators

For contacts who clicked the first email:

  1. Wait Condition
    Condition: trial_started at least 1 time in the last 3 days
    Timeout: 3 days

  2. If/Else on “trial started?”

    - If yes: Tag them with Add Tag — for example browse-abandon-converted — so you can attribute revenue to this journey later. Then exit or send them straight into your onboarding sequence.
    - If no: send a second email.

  3. Send Email (second browse email)

    This is your “still on the fence?” message. Good content here might include:

    - A short case study from a similar merchant.
    - A GIF or short loom‑style video walking through setup.
    - A FAQ block tackling common objections (billing, performance impact, app conflicts).

Again, keep Send only once enabled. And because a Wait Condition sits between Email 1 and Email 2, you’re respecting message spacing.

Branch B (Opened, no click): Lower the perceived effort

For contacts who opened but didn’t click:

  1. Wait Condition
    Same idea as Branch A, but you can shorten the timeout to 2 days if you like. Condition: trial_started at least 1 time in the last 2 days.

  2. If/Else on trial started.

    - If yes: tag and exit as above.
    - If no: send a different style of follow‑up email.

  3. Send Email (friction‑removal email)

    These folks read, so they’re not ignoring you. They may be worried about:

    - Setup complexity.
    - Risk to their existing theme or stack.
    - Time investment for a trial that might not pay off.

    Your second email here can focus on:

    - “Get started in under 10 minutes” steps.
    - Guarantees and safety nets (no theme changes, easy uninstall, etc.).
    - Links to documentation or a sandbox demo.

You’re still within two emails total for this group, which keeps the experience respectful.

Branch C (Didn’t open): Know when to back off

For contacts who never opened the first email, the journey should err on the side of restraint.

In the sequence, this branch simply applies an Add Tag like browse-abandon-unengaged and ends.

Later, you can:

  • Exclude this tag from certain broadcast campaigns.

  • Or run experiments specifically targeted to this segment with different subject‑line styles.

The important thing is you’re not chasing them with a chain of increasingly desperate messages. That restraint is part of how you protect your sender reputation and their perception of your brand.

Tagging and attribution: Proving the journey pays for itself

A pattern like this earns its keep when you can point to revenue, not just clicks.

Two simple practices make that easy:

  1. Tag on entry and on conversion

    - Right after the Criteria Match trigger, add an Add Tag node with something like browse-abandon-entered.
    - In the branches where a contact eventually starts a trial, tag them with browse-abandon-converted.

    These tags let you build segments later (for example, “trial users who came from browse abandonment”) and to compare their LTV against other cohorts.

  2. Track your key metrics explicitly

    For this journey, focus on:

    - Click rate on the first browse‑abandonment email.
    - Browse‑to‑trial: how many tagged browse-abandon-entered later trigger trial_started.
    - Browse‑to‑paid: how many of those trials become paying customers.
    - Recovered revenue: incremental MRR from this journey compared to a similar period before it existed.

    You can create reporting‑oriented segments in Spreeflo’s audiences view or run your own analysis by exporting contacts with these tags.

When “Craft Company” implemented a nearly identical flow, their first browse‑abandonment email settled at a 9.3% click rate. Of those clickers, 4.5% went on to start a trial and then become paying accounts. For an app charging $59/month, that kind of lift adds up quickly.

Optional: Add web push for your highest-intent visitors

Email is still the workhorse here, and it’s the only channel in this pattern by default. But if you already have Spreeflo’s web push set up, you can test a one‑time Send Web Push as an additional nudge for people who:

  • Clicked the first email, and

  • Still haven’t started a trial after a few days.

If you do this, respect pacing: place a Time Delay of at least a day between the previous email and the push notification.

Because web push is more interruptive, reserve it for this high‑intent subset rather than every browse‑abandon contact. That keeps the experience focused instead of noisy.

Adapting the pattern to your app

The structure of the journey is durable. You can tune it to your own context by adjusting:

  • Which pages count as “browse”
    For some apps it’s pricing. For others, a features comparison, ROI calculator, or integration setup docs. Just point your custom event filter at whichever URLs or page types matter.

  • What counts as conversion
    Swap trial_started for app_installed or subscription_upgraded depending on where your funnel leaks.

  • How aggressive you want to be
    You can extend the series to three emails, shorten or lengthen delays, or add in an occasional webinar invite. Just keep the rule that no contact gets back‑to‑back messages in the same channel without at least a one‑hour buffer.

Because this is all built in Spreeflo’s campaigns and journeys interface, you can clone, tweak, and A/B test variants without asking an engineer to rebuild anything.

The bigger picture: plugging a quiet but costly leak

Browse abandonment feels small because there’s no empty cart to point at. It’s just “people who came by a few times.”

For an e‑commerce app or Shopify plugin doing even $20k MRR, that group is often the difference between flat growth and compounding.

This journey is a textbook example of two core beliefs behind Spreeflo:

  • When you capture detailed behavioural data on every contact and act on it, you can talk to each one like a human in a specific moment, not a line in a CSV.

  • Most of your future revenue is already in your funnel. You either nurture that engagement with thoughtful automation, or you let it leak away.

Build this once, let it run, and check your “browse‑abandon converted” cohort in a month. If you’re anything like Ella at that analytics app, you’ll stop thinking of pricing‑page tourists as a frustrating mystery and start seeing them as one of your most reliable new‑MRR channels.