Back to Playbooks

One Feature Launch, Three Stories: Plan‑Tier Email Routing for SEO SaaS

Free

Shows how an SEO SaaS can use a single plan_tier attribute in Spreeflo to route one feature launch into distinct Free, Pro, and Enterprise email paths, driving upgrades, adoption, and enterprise rollouts without maintaining three separate campaigns.

Industry

Niche

Pattern

Loading sequence...

You ship a big feature. You open your email tool. And you either burn an afternoon cloning the same campaign three times, or you blast one generic announcement to every customer and hope it lands.

For a rank tracker or technical SEO platform, that gap is expensive: Free users need a reason to upgrade, Pro users need a reason to log back in, Enterprise teams need a reason to roll the feature out across clients.

The sequence at the top of this page is the whole journey, end to end. It shows how a single feature announcement can automatically fork into Free, Pro, and Enterprise paths without three separate campaigns.

We’ll walk through that sequence node by node, using a fictional SEO SaaS called RankRiver: a 4‑person team offering rank tracking and technical audits, sitting at ~$40k MRR. Their stack: Stripe, a custom Node backend, and Spreeflo for email and automation.

RankRiver’s problem was simple: the same product update meant totally different things by plan tier, but their email tool treated everybody the same.

This pattern fixes that.

Why plan-tier routing is low-hanging fruit for SEO SaaS

Plan tier is the most obvious way your customers differ, and yet it’s also the one most teams underuse in automation.

For an SEO SaaS, those tiers usually map to radically different jobs:

  • Free: solo marketers trialing you alongside three other tools. Goal: prove value fast and move them to paid.

  • Pro: in‑house marketers or small agencies. Goal: deepen feature adoption and retention.

  • Enterprise/Agency: multi‑seat teams and big retainers. Goal: expansion and “we can’t live without this” status.

When you send the same “New Technical Audit Engine is Live!” email to all three:

  • Free users see features they can’t access yet and quietly churn.

  • Pro users don’t realise it’s already in their plan and never try it.

  • Enterprise teams don’t see how it fits their workflows or client reporting.

Spreeflo’s whole point is to let you capture detail on every customer so you can speak to each of them uniquely. In this pattern, that “detail” is a single contact attribute: plan tier.

You’ll use that one attribute to drive a Multi-way Split so every contact gets a different mini-journey from the same campaign.

Campaign or journey: which version are we building?

You can use plan-tier routing in both:

  • As a Campaign for one-off product updates or launch announcements.

  • As a Journey for evergreen flows like onboarding, expansion nudges, or renewal sequences.

The sequence at the top of this page is set up as a campaign, because that’s the most common use case for “same feature, different stories by plan.” The pattern itself is identical in a journey: only the entry point changes.

If you want a refresher on the difference, the campaigns and journeys overview covers when to use which.

Let’s build the campaign version step by step.

Step 1: Make “plan” a first-class contact attribute

Before you touch the sequence, your account needs a reliable way to know who is Free, who is Pro, and who is Enterprise.

In Spreeflo, that’s a contact attribute:

  • Create a custom attribute named something like plan_tier.

  • Use a TEXT or SELECT type with values like free, pro, enterprise.

Then keep it up to date:

  • When someone signs up or upgrades in your app, your frontend calls Spreeflo.identify('email@domain.com', { plan_tier: 'pro' }) so the SDK updates their record in the browser.

  • Your backend billing logic can also POST to the Spreeflo API when Stripe webhooks fire (e.g. customer.subscription.updated), setting plan_tier server-side.

Once plan_tier is reliably set, it becomes usable everywhere: segments, If/Else logic, and the Multi-way Split we’re about to add.

Step 2: Create a product-update campaign with the right audience

In RankRiver’s case, they’re announcing a new “Automated Technical Audit” engine.

Inside Spreeflo:

  1. Create a new Campaign.

  2. Choose an audience that includes everyone who should hear about the feature. Typically:

  3. You can build that audience as a reusable segment in the segment builder, or define it inline.

  • Email Subscription Status is “Subscribed”.

  • Tag contains customer (to exclude pure newsletter leads).

This defines who enters the campaign. From here on, the sequence decides what they see.

Step 3: Add a Multi-way Split on plan tier

From the campaign start, your very first node is a Multi-way Split.

Configuration:

  • Create three named branches:

  • For each branch, use the Segment Builder:

  • Set the else branch name to something like “Unknown/Trial”.

Branch A: “Free”

Branch B: “Pro”

Branch C: “Enterprise”

Free branch condition

  • Filter category: Contact Attributes

  • Field: plan_tier

  • Operator: is

  • Value: free

Pro branch condition

  • Same, but value: pro

Enterprise branch condition

  • Same, but value: enterprise

Because each condition is mutually exclusive, order doesn’t matter here. Every contact will drop into exactly one branch.

This node is the heart of the pattern: instead of one generic path, you’ve now created three plan-specific paths (plus a catch-all) that you can treat as mini-campaigns sharing a common start.

Step 4: Design the Free plan branch – upgrade story

Free users can’t use the full Automated Audit engine yet. Their story is about what they’re missing and why upgrading is worth it.

Branch: Free → first node: Send Email

  • Subject: “See what your competitors already fixed overnight”

  • Body: show before/after issues the audit would catch, but make it clear it’s a Pro feature.

  • CTA: “Start a 14‑day Pro trial” or “Compare plans”.

Configuration:

  • Node: Send Email

  • Use your normal sending identity.

  • Keep “Send only once” on (default) so nobody gets dupes if they re-enter later in a journey version.

Next node: Wait Condition

You want to give them time to upgrade, but move fast if they do. A plain Time Delay can’t react to mid-wait changes; Wait Condition can.

Configuration:

  • Condition (via Segment Builder):

  • Contact attribute plan_tier is pro OR plan_tier is enterprise.

  • Timeout:

  • 7 days, unit: Day(s).

Effect:

  • If they upgrade within 7 days, the campaign moves them forward as soon as plan_tier changes.

  • If they don’t, they move forward after 7 days anyway.

Next node: If/Else

This checks where they ended up after the wait.

  • Condition:

  • Same as above: plan_tier is pro OR enterprise.

  • “Yes” branch: Upgraded.

  • “Else” branch: Still Free.

Upgraded path:

  1. Node: Send Email – “You just unlocked Automated Audits”

  2. Optional Node: Add Tag

  • Focus on helping them use what they just bought, not patting yourself on the back for the sale.

  • Walk through “Run your first audit in 3 minutes” with a simple checklist.

  • Tag: upgraded_from_free_auto_audit_campaign

  • Useful for later cohort analysis.

Because the Wait Condition guarantees at least some delay from the first email, you don’t need another Time Delay before this second email. There’s never a point where two Send Email nodes are back to back.

Not-upgraded path:

  1. Node: Send Email – “What Automated Audits would have found for you”

  2. Node: Add Tag

  • Keep it low-pressure but concrete:

  • “Here are the exact issues customers like you fixed in week one.”

  • CTA: a softer upgrade prompt or an educational webinar.

  • Tag: did_not_upgrade_auto_audit_campaign.

Then both branches end.

You’ve just turned “blast Free users about a Pro feature” into a tight, reactive mini-journey driven by plan tier.

Step 5: Design the Pro branch – adoption story

Pro customers already pay you. The job here is adoption and stickiness, not upgrade.

Branch: Pro → first node: Send Email

  • Angle: “Automated Technical Audits are now in your Pro plan.”

  • Make it explicit: “This is live in your account today. No extra charge.”

Next node: Wait Condition

Instead of watching the plan, you watch for usage. RankRiver tracks a custom event auto_audit_run whenever someone runs the new engine, sent from their app via Spreeflo.track('auto_audit_run', {...}) in the frontend or the events API on the backend.

Configuration:

  • Condition:

  • Custom Events → auto_audit_run

  • Operator: triggered at least 1 time

  • Time window: in the last 7 days.

  • Timeout:

  • 7 days, unit: Day(s).

Next node: If/Else – Used vs. not used

Yes branch (event triggered):

  1. Send Email – “Power‑user tips for Automated Audits”

  2. Add Tagauto_audit_adopted_pro.

  • Highlight 2–3 lesser‑known settings, report exports, or alerting combos that only make sense once they’ve run at least one audit.

Else branch (event not triggered):

  1. Send Email – “Set up your first Automated Audit in 5 minutes”

  2. Optional: Add Tagauto_audit_not_adopted_pro.

  • Short video or GIF walkthrough, link straight into the feature.

  • Maybe a “Done for you” template for common use cases.

Again, every Send Email is separated by a Wait Condition or If/Else, so pacing stays healthy.

Step 6: Design the Enterprise branch – rollout story

Enterprise or large-agency accounts care about workflows, teams, and outcomes across many projects.

Branch: Enterprise → first node: Send Email

  • Story: “Standardise technical audits across every client in one place.”

  • Anchor on predictable deliverables and saved analyst hours, not just shiny features.

Next node: Wait Condition

You might track adoption at the account level in a few ways:

  • Custom event auto_audit_run with a property account_scope: 'enterprise'.

  • Or a tag auto_audit_rollout_done added by a CSM via Spreeflo when rollout is complete.

Configuration example (event-based):

  • Condition:

  • Custom Events → auto_audit_run

  • Operator: triggered at least 10 times (you decide the threshold for “rolled out”)

  • Time window: in the last 14 days.

  • Timeout:

  • 21 days, unit: Day(s).

Next node: If/Else – Rolled out vs. stalled

Rolled‑out branch:

  1. Send Email – “Case study: how teams like yours cut audit time in half”

  2. Send Internal Email

  • Share aggregate patterns or anonymised examples.

  • CTA: “Book a strategy review” or “Enable audits for more workspaces.”

  • Alert your success team: “Enterprise account has rolled out Automated Audits. Time to talk expansion?”

  • Include key contact context with personalization variables.

Stalled branch:

  1. Send Email – “Need help rolling Automated Audits out to your team?”

  2. Send Internal Email

  • Offer a migration or training session.

  • To CSM/Founder: “Enterprise account hasn’t adopted Automated Audits after 3 weeks.”

  • So a human can follow up.

Internal emails don’t go to the customer, so you don’t need extra spacing between those and customer-facing messages on the same path.

Step 7: Handle the “Unknown/Trial” branch – fix your data

The else branch from your Multi-way Split catches anyone whose plan_tier attribute is missing or unexpected.

This path is short but important.

Nodes:

  1. Send Internal Email

  2. Add Tag

  • Subject: “Contact with missing plan_tier in feature campaign.”

  • Body: include the contact’s email and current Stripe/customer ID if you store it.

  • Goal: flag data issues before they spread.

  • Tag: missing_plan_tier.

  • Helpful for later clean‑up via a segment.

These contacts don’t receive marketing email in this campaign until you trust the data. Better to skip them than send a misaligned message.

Step 8: Close the loop with tags and segments

At the tail of each path, you’ve already started tagging outcomes (upgraded_from_free_auto_audit_campaign, auto_audit_adopted_pro, etc.).

Those tags have three jobs:

  1. Reporting inside this campaign.

  2. Building new segments later.

  3. Excluding people from future, redundant nudges.

For example, you can later build segments like:

  • “Free users who upgraded within 14 days of the campaign and have tag upgraded_from_free_auto_audit_campaign.”

  • “Pro users who received the ‘Set up your first Automated Audit’ email but still have no auto_audit_run event in 30 days.”

Using the segment builder with Tag, Custom Events, and Time Window filters, you can track plan‑specific feature adoption and tie real numbers to this pattern:

  • Free → Pro upgrade rate from this feature announcement.

  • Pro/Enterprise → feature activation and retention impact.

Because everything happens on one canvas, you get per‑tier performance without juggling three different tools or campaigns.

Adapting the pattern into evergreen journeys

The campaign we just walked through is “one feature, one shot.” But the exact same structure works as a Journey:

  • Trigger: Custom Eventstarted_trial or plan_changed.

  • First node: Multi-way Split on plan_tier.

  • Downstream: plan‑specific onboarding or upgrade sequences.

The mechanics stay the same, only now every new contact who meets the trigger condition automatically flows down the right path as long as the journey is active. The campaigns and journeys help doc shows how to translate a one‑time flow into a continuous one.

For a lean SEO SaaS team, that’s the difference between “we should really remember to segment next time we launch something” and a system that quietly does it for every launch, every time.

The bigger win: one attribute, three conversations

You didn’t add any shiny AI or heavy personalization logic here. You took one simple piece of data – plan tier – and let it steer your messaging.

That’s the core idea behind Spreeflo’s approach: capture detail on every customer so you can speak to each of them uniquely. Plan tier is often the easiest starting point, because you already have it in Stripe or your user table. Once it lives on the contact, Multi-way Split and the rest of the sequence editor do the hard work.

The result:

  • Free users see aspirational, upgrade‑driven stories.

  • Pro users see “this is live in your account, here’s how to win with it.”

  • Enterprise users see rollout narratives tied to their team and clients.

  • Your team maintains one reusable pattern instead of three separate campaigns.

If you’re already tracking who is Free, Pro, and Enterprise, you have everything you need to build this sequence. Open your next feature launch in Spreeflo, drop a Multi-way Split right after the start, and let a single campaign talk to three very different customers like you actually know who they are.