One Onboarding Flow, Dozens of Industries: How Shopify Apps Can Personalize at Scale
Detailed playbook for Shopify and e‑commerce app teams to build one Spreeflo-powered onboarding journey that splits by industry, sends tailored emails, measures activation, and rescues stalled users without maintaining separate flows for every vertical.
Industry
Niche
Pattern
Loading sequence...
When a merchant installs your app, you usually get one real shot at changing their behavior.
Picture this: a fashion boutique, a supplements brand, and a B2B wholesaler all install your Shopify app on the same day. They hit the same welcome email, the same “getting started” checklist, the same generic case study about some random electronics store.
By day 7, the electronics merchant is live and loving you. The fashion brand is confused. The wholesaler never finished setup and quietly uninstalls.
CartWizard, a fictional cart recovery app doing ~$90k MRR, was in exactly this spot. Their install rate was healthy, but activation hung around 17–18% across the board. When they finally segmented by industry, they discovered something brutal: fashion and beauty stores that did activate had 40–50% higher recovered revenue… but were far less likely to get through onboarding.
They didn’t need more installs. They needed onboarding that spoke to who the merchant was.
The sequence at the top of this page is the whole journey, end to end. It takes one welcome flow and fans it out by industry, so every new store gets the use cases, screenshots, and case studies that match their world.
In this playbook, we’ll walk through that journey node by node, explain why it’s designed that way, and show how you can adapt it for your own Shopify or e‑commerce app.
Why generic onboarding quietly kills activation
If you’re building for e‑commerce, your “ideal customer” is actually a dozen different business types:
Fashion and apparel
Health and beauty
Electronics and gadgets
Home & decor
Digital products
B2B/wholesale
Each of those segments installs your app for different reasons.
A fashion store might care about “average order value” and bundling outfits. A supplement brand obsesses over subscription retention and reorder rates. A B2B wholesaler just wants clean invoices and predictable order flows.
Send them all the same onboarding path and three things happen:
Your examples feel off (“Why are you showing me headphones when I sell skincare?”).
Your “aha” moment is buried inside irrelevant steps.
Churn looks like “product fit” when it’s really a messaging problem.
The fix is simple conceptually: capture an industry attribute at signup, then run everyone through a single welcome journey that forks by that attribute.
This is exactly the kind of pattern Spreeflo exists for. You use one journey, powered by campaigns and journeys, and turn that industry attribute into branching logic and tailored content.
Let’s walk through how the sequence does this.
The high-level shape of the journey
Before we get into nodes, here’s the big picture of the flow you see at the top of the page:
Trigger: Add to Audience
Every new install or signup is added as a contact and immediately enters the journey.Industry split A Multi-way Split checks the contact’s
industryattribute and routes them into one of several lanes: e.g. Fashion, Beauty, B2B, Other. An “else” lane catches unknown or uncategorized industries.Lane structure (repeated per industry)
Inside each industry lane, the structure is identical:
- Immediate Send Email: a welcome and first-step email framed with that industry’s main outcome.
- Time Delay: usually 1 day.
- Second Send Email: deeper tutorial + one industry-specific case study.
- Wait Condition: wait up to X days for an activation event (e.g. first campaign created) to happen.
- If/Else:
- If activated: send a “You’re live” email that shows what to look at next.
- If not activated: send an industry-specific “nudge” email with a short, focused checklist.Merge back to a single path
All lanes converge through a Merge node into a shared final step:
- Add Tag to mark they’ve finished industry onboarding, which helps with later segmentation.
- Optionally, hand them off to a more general product education series.
Every part of this exists to do one thing: use a single data point—industry—to speak to that customer as if you built the app just for them.
Now let’s walk it node by node.
Step 1: Add to Audience — the cleanest way to catch every new install
We start with an Add to Audience trigger.
Configuration:
Trigger type:
Added to AudienceRe-enrollment:
off(we want each store to go through this onboarding once)
This fires the moment a contact is added to your workspace’s audience, whether they came from an API call, a form, or an import.
For a Shopify app, that usually means:
On install, your app backend gets the merchant’s email and metadata.
You call the Spreeflo API or the
Spreeflo.identifySDK method with:email
store name
key attributes, especially
industry
Once that contact exists, the trigger pulls them straight into the journey. No extra “criteria” logic, no risk of forgetting to keep your segment definitions in sync.
Why this instead of a Criteria Match trigger? Because here, the important thing isn’t that they match a condition; it’s that they are new. Add to Audience is the most dependable “new user just arrived” signal in the system.
Step 2: Multi-way Split — routing by industry inside one journey
Immediately after the trigger, the flow hits a Multi-way Split process node.
Here’s how you configure it:
Branches (examples):
-fashion: Contact attributeindustryisFashion & Apparel
-beauty: Contact attributeindustryisHealth & Beauty
-b2b: Contact attributeindustryisB2B / Wholesale
-digital: Contact attributeindustryisDigital productsElse branch:
-other: catches anything that doesn’t match the above
Each branch condition uses the Contact Attributes category in the segment builder. You set the industry attribute, operator is, and the literal value you store from your app.
Why Multi-way Split instead of chaining a bunch of If/Else nodes?
It keeps the canvas readable. One node, many clear branches.
You only define the “else” bucket once.
When you add a new industry later, you just add a branch—no re-wiring.
The design choice here is also a time constraint decision. You don’t want to maintain 12 entirely separate onboarding journeys. By using Multi-way Split inside a single journey, you centralize logic and only fan out where content must diverge.
Step 3: The first industry-specific welcome email
Each industry branch starts with a Send Email action.
Configuration (conceptually identical across branches):
Template: “Welcome – [Industry]”
From: your main sender identity (e.g.
support@yourapp.com)Send only once: keep default
on
The email content is where the pattern earns its keep:
The subject line names the job that industry cares about.
“Recover more fashion carts this week (3-minute setup)”
“Make wholesale reorders less painful for your team”The hero section uses screenshots or examples from that vertical.
The CTA isn’t “explore the app.” It’s “do the one thing that gets you to value,” translated for that industry.
This is where Spreeflo’s email builder helps: you can keep layout, brand, and structure the same while swapping copy and examples. You’re not designing 5 emails from scratch; you’re creating one template variation per branch.
Why send immediately and not wait?
Because the merchant just installed your app or signed up. Their intent is at its peak. A timely, relevant email anchored in their world dramatically increases the chance they’ll complete your first-step setup.
Step 4: Time Delay — giving them room to act
After the first email, each branch flows into a Time Delay.
Configuration:
Delay:
1 dayUnit:
Day(s)
This respects two constraints:
You avoid back-to-back emails, which read as spammy and train merchants to ignore you.
You give them space to follow the CTA, click around the app, and try to get something done.
Could you make this 2 or 3 days? Sure. The right number depends on how much effort your “activation step” requires. CartWizard, for example, stuck with 1 day because configuring a basic recovery flow took less than 10 minutes.
The key is consistency: use the same structure across industries so your analytics are apples-to-apples.
Step 5: Second email — deepening with use cases and a case study
After the delay, each lane hits a second Send Email action.
Conceptually, this email does three jobs:
Re-frame the main benefit in that industry’s language.
Show a “happy path” setup flow, step-by-step.
Include one clear, industry-relevant case study or testimonial.
Examples:
Fashion branch: “How Boutique Noir added $12k/mo in recovered revenue with 2 flows”
Beauty branch: “Why GlowLab treats post-purchase flows as retention, not ‘marketing’”
B2B branch: “3 ways wholesalers use automation to stop chasing invoices”
You don’t have to overcomplicate dynamic content here. Each email can be a separate template, referenced by its own templateId. The personalisation is in the narrative: examples, screenshots, and language the reader recognizes.
From a measurement standpoint, this email is where you watch industry-relevant case-study CTR. Those links are standard email clicks, so Spreeflo tracks them automatically, and you can use segments or reports to compare “case study clicked” across branches.
Step 6: Wait Condition — giving activation a fair shot
At this point, the merchant has:
Installed the app
Seen a high-intent, industry-specific welcome email
Received a deeper setup + case study email
Some portion of them will finish activation on their own.
Instead of blasting everyone with reminders, the journey drops into a Wait Condition action.
Configuration (per branch, but logically the same):
Condition: a Custom Event rule like
custom_event "first_campaign_launched" AT_LEAST 1 time over all timeTimeout:
7 days, unitDay(s)
Under the hood, your app fires that custom event (via the Spreeflo API or SDK) when the merchant completes whatever you define as “activated”:
Creates their first recovery flow
Sends their first broadcast
Connects a sales channel
Turns on a key automation
The Wait Condition will pause the journey until either:
The condition is met (they activate), or
7 days pass without activation
Why this pattern?
Because it respects both sides:
Highly motivated stores aren’t nagged unnecessarily.
Slower stores still get follow-up help without you writing criss-crossing date logic.
Step 7: If/Else — branching on who activated vs who stalled
Immediately after the Wait Condition, each industry lane hits an If/Else process node.
Configuration:
Condition: same “activated” Custom Event rule as above, but without a time window (over all time).
Then branch (“activated”): contacts who have at least one activation event.
Else branch (“not_activated”): everyone else.
This branching is what turns your onboarding from a flat series into real lifecycle nurturing:
Activated contacts get a small celebration and clear “what now?” direction.
Stalled contacts get one last, focused push to cross the line.
Again, you replicate this structure across industries while varying content.
Step 8: Post-activation email vs rescue email
On the “activated” branch, each industry lane uses a Send Email node with a short, positive message:
Subject: “You’re live — here’s how to get the most from [App] in [Industry]”
Body:
- Acknowledge they’ve turned things on.
- Show them where to see results.
- Offer one “power tip” that fits their vertical.On the “not_activated” branch, the Send Email is different in tone:
On the “not_activated” branch, the Send Email is different in tone:
Subject: “Still planning to try [App]? A 5-minute setup for [Industry]”
Body:
- A 3–5 step checklist, tailored to that industry.
- A single CTA to return to the app and complete step one.
- Optionally, a link to book help if you do any high-touch onboarding.This last email is not the place to sell more features. It’s a rescue mission designed to get them to a first win, nothing else.
This last email is not the place to sell more features. It’s a rescue mission designed to get them to a first win, nothing else.
After either email, you do not send additional messages in this journey. You’ve respected pacing: every path still has at least a one-day gap between emails, and you’ve capped total touches.
Step 9: Merge and tag — closing the loop for later segmentation
All industry branches (both activated and not) then converge into a Merge node, which feeds into an Add Tag action.
Configuration:
Tag(s):
-onboarded-by-industry(everyone who completed this journey)
- Optionally, more specific tags likeonboarded-fashion,onboarded-b2b
You can also use a separate Add Tag action earlier in each industry lane if you want industry tags purely for analytics. But closing with a shared “finished onboarding” tag gives you a re-usable segment later: “all contacts who’ve done the industry-specific onboarding.”
From here, you might:
Drop them into a long-term education or feature discovery journey.
Trigger internal alerts for “activated high-ARPU stores.”
Build dashboards that compare churn or expansion across industries.
The important part is that your onboarding journey isn’t a dead end. It leaves behind structured data that lets you keep speaking to each customer in a way that matches how they run their business.
Measuring if this is worth the effort
You’re not doing this as a craft project. You’re trying to move numbers.
There are two metrics to watch:
Industry-specific activation rate
Define “activated” clearly (a custom event). Use the segment builder to create, for each industry:
- Segment A:industry = X AND activated_event AT_LEAST 1
- Segment B:industry = X(all installs)
Activation rate for that industry isA / B. Compare before/after turning on this journey.Industry-relevant case-study CTR
For each second email template, track click rate on the main case-study link. Inside Spreeflo’s campaign and journey automation guide, you’ll see how to inspect email performance per template. The goal isn’t just higher clicks; it’s validation that the story you’re telling actually resonates for that vertical.
For CartWizard, the first pass at this pattern looked like:
+9 percentage points activation for fashion stores
+6 points for health & beauty
Almost no change for “Other” — which was a useful signal they needed better categorization and niche examples
The implementation took them a day: wiring events, adding the industry attribute, and cloning templates. The net lift in MRR from better activation made the time investment a rounding error.
Adapting this pattern to your app
A few practical tweaks for your context:
Start with 3–4 industries that cover 70–80% of your base. “Other” can share a more generic path until you see a dominant subgroup emerge.
Decide on one activation event per app, and keep it stable. Changing your definition every quarter makes it impossible to read trend lines.
If you already collect industry in your own database, sync it to Spreeflo via
Spreeflo.identifyor the API as a simple text attribute. Don’t over-engineer custom schemas if you don’t need them.If you don’t yet collect industry, add a field to your install or onboarding flow before you do anything else. The de-anonymization this gives you is one of the highest-ROI changes you can make.
And if you want to push this pattern further, you can tie it into web tracking and analytics: use page visits or pricing-page behavior as additional conditions in your Wait Condition or If/Else nodes.
The bigger principle: onboarding is where “speak to each customer uniquely” starts
The pattern you’ve just walked through isn’t complicated. It’s one journey, one attribute, a few splits, and a handful of emails.
But it embodies a core idea: when you capture even a small piece of detail about a customer and feed it into your automation, you earn the right to be specific.
For e‑commerce apps and Shopify developers, that specificity is the difference between “yet another plugin they tried” and “the tool they talk about in their mastermind group.”
You don’t need a growth team to do this. With Spreeflo, a founder or a single marketer can build this industry-specific onboarding in an afternoon, then let it run quietly behind the scenes while you go back to shipping features.
That’s the game: capture detail on every customer so you can speak to each uniquely. Do it at onboarding, and the lift in activation and lifetime value compounds long after the sequence has faded into the background.