Back to Playbooks

When a “Dead” Lead Clicks Again: Automating the Sales Re‑Touch for Your Shopify App

Free

This playbook walks Shopify and e‑commerce app teams through building a small Spreeflo journey that detects when cold or lost leads re‑engage, retags them as hot, and alerts sales so dormant deals get a fresh, timely follow-up.

Industry

Niche

Pattern

Loading sequence...

Three months after marking the deal “lost,” Lina from CartWizard is in the Shopify Partners Slack, complaining.

The same merchant who ghosted her during a trial just clicked a link in last week’s newsletter. Then they opened a second email about a new feature that solves the exact problem they argued about on the demo.

Nobody on her tiny sales team saw it. No one followed up. That account is still sitting in the CRM as “Closed – Lost.”

For e‑commerce app teams, this happens constantly. Merchants churn out of trials, downgrade, or go quiet. But they do not disappear. They keep reading Shopify newsletters, browsing the app store, and — crucially for you — occasionally opening and clicking your emails again.

The sequence at the top of this page is the whole journey, end to end. Its job is simple: the moment a previously cold contact meaningfully re‑engages with your email, Spreeflo tags them as hot and pings the right person internally to pick the conversation back up.

For a 5‑person Shopify app like CartWizard, that one tiny system is often the difference between “we meant to follow up” and “we actually closed the deal.”

Let’s break down how to build it — and why each node in that journey is there.

Why this tiny journey is worth real MRR

If you sell a Shopify or e‑commerce app, your pipeline has a distinct pattern:

  • A merchant installs the app.

  • There’s a flurry of activity during trial.

  • If activation doesn’t happen, they slip into “cold” while you move on to fresher leads.

But merchants change. Their store grows, new problems appear, budgets open up. Six months later, that same “lost” lead clicks a link in your “What’s new” email about a feature you shipped after they churned.

Without automation, only two things can happen:

  1. Someone notices the click buried in an email report and manually nudges the AE or founder.

  2. Nobody notices, and the second swing at the deal never happens.

That’s why this pattern exists. It’s a behavior‑driven sales handoff: Spreeflo watches for high‑intent behaviors (like a click from a cold contact), updates the contact’s status, and notifies your team.

Two reasons this matters so much for Shopify app developers:

  • It leans on the detail you already collect about every customer — opens, clicks, tags, lifecycle stage — so you can speak to each merchant based on where they actually are now, not where the CRM thinks they are.

  • It’s pure leverage. You design this journey once, and it quietly runs forever while you’re shipping features or fixing webhooks.

Now into the nuts and bolts.

Step 0: Decide what “cold” and “re‑engaged” mean in your world

Before you drop a single node, define two things:

  • What counts as a cold lead?

  • What counts as meaningful re‑engagement?

For a Shopify app, a reasonable starting point:

  • Cold: anyone tagged as a lead or trial whose last marketing email open was more than 30 days ago, or who has a “Closed – Lost” / “Churned” status in your CRM.

  • Re‑engaged: they click a link in a specific reactivation email, or in any marketing email that is clearly about your product, pricing, or a relevant feature.

You can express “cold” in Spreeflo in two ways:

  • With tags: for example, stage:lead + status:cold.

  • With contact attributes: a text attribute like lead_status = "cold" or a timestamp like last_seen_demo_at.

If you’re not already using tags and attributes this way, it’s worth setting them up. The audiences overview and getting-started-with-tags are good primers.

We’ll assume you have some representation of “cold” on the contact — tag or attribute — and that you send the occasional reactivation email to that cohort.

This journey sits beside those campaigns and listens for the moment a “cold” contact shows intent again.

Node 1: Email Action trigger — catching the right click

At the far left of the sequence you’ll see the Email Action trigger. This is your entry point.

Configuration choices:

  • Email type:
    - For tighter control, set this to “Marketing email” and select a specific reactivation template (for example, “Still interested in boosting your average order value?”).
    - That way, only clicks on that email enroll contacts into this journey.

  • Email action: Link Clicked.
    - A click is a much stronger buying signal than a casual open, and it reduces internal noise.

  • Re‑enrollment: On.
    - A merchant might click again months later after going cold a second time. Re‑enrollment lets you process them again once they’ve exited the journey.

Why it’s built this way:

  • Using a specific reactivation template avoids false positives from password resets, invoices, or generic newsletters.

  • Tying the trigger directly to behavior keeps this journey fully automated. Nobody needs to manually mark “interested again” in the CRM.

Could you also have a second Email Action trigger on Opened? Yes, especially if your list is small and every potential deal is meaningful. Just be aware that opens are noisier. If you add that second trigger, keep isReEnrollment=true there as well so both can fire over the lifetime of the contact.

Node 2: If/Else — confirm they’re actually cold

Not every click should wake up sales.

Right after the trigger, the sequence passes through an If/Else process node: “Is this contact currently cold?”

Under the hood, that condition is using the segment builder. Two common options:

  • Check for a tag:
    - Contact Tags → contact is tagged with status:cold.

  • Or check an attribute:
    - Contact Attributes → lead_status is "cold".

Anyone who matches goes down the “Yes — cold” branch. Everyone else exits down the Else branch and the flow stops quietly.

Why this extra check matters:

  • Safety net: sometimes you repurpose reactivation emails for other segments. The tag/attribute check ensures you don’t ping AEs about active opportunities who just happen to click.

  • Future‑proofing: as your lifecycle model evolves, you can adjust the cold criteria in one place (tags/attributes) without editing the journey logic.

If you already maintain a saved segment like “Cold email leads,” you could instead set the If/Else to check “Segment membership is member of Cold email leads.” The effect is the same; choose whatever is easier for your team to keep accurate.

Node 3: Add Tag — promote them back to hot

On the “Yes — cold” branch, the first thing the journey does is rewrite the way you classify this contact.

That’s an Add Tag action node:

  • Tags to add: status:hot and optionally touched:reengaged-email.

Configuration detail:

  • Force tag trigger: keep this Off unless you have other journeys that respond to “status:hot” being applied. You don’t want to accidentally loop contacts through multiple automations unless you’ve planned for it.

Why tag first:

  • Tags are cheap, flexible, and visible. For a small team glancing at a contact record, status:hot tells the story instantly, even if they never look at deeper attributes.

  • They give you a simple way to segment later. For example, you might build a segment of “Re‑engaged cold leads” for a special nurture series.

This is also your first touchpoint with one of Spreeflo’s core advantages: capturing additional detail on every customer so you can speak to them differently. A merchant who came back from the dead should receive different messaging from a brand new install.

Node 4: Update Contact Attribute — write the story into the record

Tags are great for quick visual cues. Attributes are better for control.

The next node on the “Yes — cold” path is an Update Contact Attribute action that keeps your data model in sync with reality.

Typical configuration:

  • Attribute: lead_status (TEXT).

  • Update type: Update.

  • Value: the literal string hot.

A few important nuances from how this node works:

  • The value you set here is static. Every contact who passes through gets exactly "hot". You’re not pulling in anything from the event payload or the previous status.

  • If you also track a timestamp attribute like last_reengaged_at, you can use another Update Contact Attribute node set to “Set to now” on that field. That’s the one exception that writes a dynamic value at runtime.

Why bother with both tag and attribute:

  • Attributes make it easier to integrate with other systems via API or Webhook, because “lead_status = hot” is predictable and machine‑friendly.

  • Tags remain perfect for quick human scanning and ad‑hoc segments.

This combination is what lets Spreeflo’s audiences become your single source of truth: tags for readability, attributes for logic.

Node 5: Send Internal Email — put the lead back in front of a human

So far, everything has reshaped the data. Now we turn behavior into action.

The next node is a Send Internal Email action. This is where the original AE (or, more likely in a small team, a shared sales inbox) gets the nudge they’ll actually see.

Configuration:

  • Template name: something explicit like “Re‑engaged cold lead alert.”

  • From: your standard internal sender identity (for example, notifications@yourapp.com).

  • Send only once: keep this On. You don’t want to spam your team about the same contact if they repeatedly click variations of the same email.

  • Content: use the editor to include:
    - Contact name and email.
    - Their current plan or stage (trial, churned, never installed, etc.).
    - A short summary of which email they just clicked.
    - A reminder of the last meaningful interaction (demo date, support ticket, etc.) if you store that as attributes.

Because this is a system email, point it to a central address your team already lives in — sales@, founders@, or even a helpdesk tool – rather than trying to route dynamically to an individual AE inside Spreeflo. The body of the email gives enough context for whoever owns the relationship to pick it up.

Why internal email instead of another task tool:

  • Every team, regardless of stack, checks email.

  • It’s the fastest path from behavior (“clicked the pricing link again”) to action (“send them a 3‑line personal check‑in”).

As you get more advanced, you can add a Webhook node after this internal email to push the same payload into your CRM or Slack. That’s where the Spreeflo API and Pro‑plan Webhooks shine: they can create a task on the right opportunity or ping a channel your sales pod already watches.

Handling the Else branch: when to do nothing

What about the contacts who don’t match your cold criteria?

On the Else path of the If/Else, the sequence at the top of this page simply ends.

This “do nothing” branch is deliberate:

  • It prevents over‑notification. If a current customer or active trial clicks the same reactivation email (it happens), you don’t want a redundant “re‑engaged” alert.

  • It keeps your AE inbox meaningful. Every internal email from this journey should be actionable: “Here’s a lead we weren’t planning to talk to again, and they just raised their hand.”

If you later find a use case for those non‑cold clickers — for instance, segmenting “highly engaged paid accounts” for upsell — you can always fork a new journey built specifically for them.

How this plugs into your broader lifecycle

On its own, this behavior‑driven sales handoff is tiny. In context, it sits inside a larger system:

  • Your reactivation campaigns (often built as Campaigns in Spreeflo) email the “Cold leads” segment with a strong, specific offer.

  • This Journey listens for behavior on that email and routes the right subset to sales.

  • Downstream, you probably have a separate onboarding or expansion Journey for trial installs, and maybe a churn‑prevention Journey driven by events like feature_used or payment_failed.

All of these can be built with the same visual editor you see in the sequence at the top of this page. If you’re new to that part of the product, the campaign and journey automation guide walks through the basics of triggers, processes, and actions.

The through‑line is always the same: detailed, behavior‑driven contact data, reused across multiple automations so your small team can market and sell like a much bigger one.

What to measure once this is live

You don’t need a separate analytics tool to see if this journey is doing its job.

Three simple metrics:

  1. Cold‑lead reactivation rate
    - Define a segment of contacts with the tag touched:reengaged-email (or however you named it).
    - Divide that by the size of your “Cold leads” segment over the same period. That’s the share of “dead” leads who raised their hand again.

  2. Re‑touch conversion rate
    - Among the same re‑engaged cohort, track how many eventually trigger a meaningful event (app_installed, subscription_upgraded) or move to a “Customer” segment.
    - Even a handful of upgrades can pay for your marketing automation stack many times over.

  3. AE follow‑up responsiveness
    - Internally, you can spot‑check how quickly your team replies after an alert. If you’re sending internal emails to a shared inbox, this is often just a matter of searching for subject lines like “Re‑engaged cold lead alert” and comparing to outbound replies.

Because every status change and tag is written onto the contact record, you can slice these in Spreeflo without duct‑taping spreadsheets.

The broader lesson: detail in, leverage out

For a Shopify or e‑commerce app team, this journey isn’t glamorous. It’s a handful of nodes reacting to a single click.

But it quietly encodes two ideas that, together, change how you grow:

  • When you capture detail on every customer — status tags, lifecycle attributes, behavioral events — you earn the right to speak differently to a merchant who ghosted you three months ago and just clicked your pricing link.

  • When you’re founder‑led and headcount‑light, you win by building small automations like this that keep working while you’re heads‑down on product.

Most teams never bother. They mark leads “cold,” keep sending one‑size‑fits‑all newsletters, and hope the hot ones bubble up on their own.

You can do better with a single journey.

Design it once in the visual editor, wire it to your reactivation emails, and let Spreeflo’s campaigns and journeys turn every unexpected click from a “dead” lead into a concrete next step for a human being on your team.

That’s what good marketing automation looks like for a lean Shopify app business: small, specific systems that quietly add up to meaningful extra ARR.