Back to Playbooks

A Sunset Journey That Saves Your SEO SaaS Deliverability (Without Killing Revenue)

Free

An end-to-end Spreeflo automation guide for SEO SaaS teams to build a continuous sunset journey that identifies chronically inactive subscribers, gives them respectful re-engagement chances, and then suppresses ghosts to protect deliverability while preserving customer lifetime value and revenue.

Industry

Niche

Pattern

Loading sequence...

At some point every SEO SaaS list turns into a graveyard: thousands of “subscribers” who haven’t opened a single email since the Core Update three updates ago.

Those ghosts quietly drag down your sender reputation, tank inbox placement for people who do care, and make your “10k subscribers” vanity metric actively misleading. For a rank-tracking or content-brief SaaS that lives on recurring revenue, that’s a real problem.

The sequence at the top of this page is the whole journey, end to end. This article walks through how to build that sunset policy in Spreeflo for an SEO SaaS like RankPulse or BrieflySEO, and how to tweak it so you protect deliverability and lifetime value.

Why SEO SaaS needs a real sunset policy, not a one-off purge

Mailbox providers watch engagement. If a large chunk of your list chronically ignores your send, they start assuming all your mail is low quality:

  • Promotions tab instead of Primary

  • More spam-folder placements

  • Inbox providers rate-limiting or throttling sends

You feel it as:

  • Falling open and click rates

  • Good leads never seeing critical onboarding or feature adoption emails

  • Churn from users who simply stop getting reminded why your product matters

That’s exactly the type of lifecycle leak Spreeflo is built to fix: you’re leaving lifetime value on the table not just by failing to nurture, but by letting uninterested subscribers poison your ability to nurture the customers who could stay.

A good sunset policy does three things:

  1. Detects when someone is chronically inactive.

  2. Gives them a focused chance to re-engage.

  3. Suppresses them cleanly if they still don’t respond, so they stop hurting deliverability.

Let’s turn that into a concrete Spreeflo journey.

Step 1: Define “chronically inactive” for your product

Before you touch the canvas, decide who should enter this sunset journey.

For an SEO SaaS, a reasonable starting point:

  • No opens or clicks on any marketing email in the last 180 days

  • AND they’ve been on your list for at least 180 days

  • AND they’re not tagged as high-touch (enterprise, partner, etc.)

  • AND, optionally, they haven’t logged into the app in the last 60 days

You’ll express all of that in Spreeflo’s segment builder:

  • Use Email Activity rules with “did not open” / “did not click” in the last 180 days.

  • Add Contact Added Date “is before” 180 days ago so you don’t hit new signups.

  • Exclude tags like enterprise, do-not-sunset, or customer-success-managed.

  • If you track logins as a custom event via the Spreeflo SDK in your web app or via the Spreeflo API from your backend, add a Custom Events rule like login has not triggered in the last 60 days.

You can either save that as a reusable “Chronically inactive” segment or embed the criteria directly in the trigger. For this pattern, we keep it inline.

Step 2: Criteria Match trigger — when a subscriber becomes a ghost

This sunset flow is a journey, not a one-off campaign, because you want it running continuously in the background.

On the canvas (under campaigns and journeys), your entry point is:

  • Trigger: Criteria Match

  • Re-enrollment: Off

Configure the Criteria Match with the rules you just defined. The moment someone crosses that threshold (for example, they’ve now hit 180 days of no engagement), they enter the journey.

Re-enrollment stays off because:

  • A given contact should only ever go through this sunset logic once.

  • If you later decide to “resurrect” a subset manually, you don’t want them looping back into the same suppression flow.

The body text can be something like: “Contact has been unengaged for 180 days and is eligible for sunset sequence.”

Step 3: Tag them as a sunset candidate

Immediately after the trigger:

Action: Add Tag

Apply a tag such as sunset-phase-1.

Why this matters:

  • You can quickly build reporting around people in the sunset journey.

  • If your support or success team checks a contact profile, they can see that this user is being phased out of marketing email.

  • You can use that tag later to exclude them from broad campaigns while the journey runs.

Keep “Force tag trigger” off unless you intentionally want to fire any Added Tag triggers connected elsewhere.

Step 4: First re-engagement email — low-friction, value-heavy

Next, you send a single, thoughtful re-engagement email:

  • Action: Send Email

  • Send only once: On

This email is not a guilt trip. It’s a focused reminder of value, tuned for SEO practitioners:

  • Subject examples:

  • “Still want rank insights from [Your Tool]?”

  • “Quick question about your keyword tracking”

  • Body focus:

  • One or two key wins your product helped them achieve (e.g. “You used RankPulse to track 217 keywords. Want to keep getting movement alerts?”).

  • A simple “Keep me subscribed” CTA that clicks through to your app or resources.

  • A visible unsubscribe link for those who truly want out.

Build this quickly using Spreeflo’s email builder. Make it short, scannable, and mobile-friendly — this audience checks mail between client calls and audits.

The “Send only once” setting is important, so a re-run of the journey in the future never accidentally resends the same re-engagement email.

Step 5: Give them a week — Time Delay

You should never send two marketing emails back-to-back.

Insert:

  • Action: Time Delay

  • Delay: 7 days

That week gives disengaged subscribers a fair window to notice and act on the first email. For high-frequency senders (daily SERP digests, for example), you could reduce this to 3–4 days, but a week is a good default.

Step 6: Check Email Activity — did they wake up?

Now, use a branching node to see who engaged with that first nudge:

  • Process: Check Email Activity

  • Marketing email: Select the re-engagement email template you just used.

  • Activities to branch on: Opened, Link Clicked

You’ll end up with three paths:

  1. Branch for “Clicked”

  2. Branch for “Opened” (but didn’t click)

  3. Else branch (no engagement at all)

Why split “clicked” and “opened”? For an SEO SaaS, a click shows actual interest — they bothered to visit your app or content. An open alone is weaker.

Step 7a: Engaged branch — remove from sunset, maybe even upgrade

For subscribers who clicked (and optionally those who only opened), you can treat them as saved:

  1. Action: Remove Tag — Remove sunset-phase-1.

  2. Optional: Action: Add Tag — Add something like sunset-saved or re-engaged.

  3. Optional: Action: Update Contact Attribute — Set a last_reengaged_at timestamp attribute to “Set now” for future reporting.

You might be tempted to immediately send a sales email here. Resist that. They just indicated mild interest after 6 months of silence. Better to re-enter them into your regular onboarding or product-education nurture, not slam them with an offer.

You can route them there by:

  • Ending this path and letting your normal behavior-based journeys take over, or

  • Adding them to a segment that your main lifecycle journey listens for, via a tag or attribute.

Step 7b: Unengaged branch — one last, clearer ask

For subscribers who ignored the first re-engagement email:

  1. Action: Time Delay — Another 7 days, so you don’t hammer them.

  2. Action: Send Email — Second, firmer re-engagement email; “Send only once”: On.

The copy here is more direct and binary:

  • Subject ideas:

  • “Do you still want SEO insights from [Your Tool]?”

  • “We’ll pause your RankPulse emails soon”

  • Body:

  • Explain you only want to email people who get value.

  • Offer two obvious options:

  • A primary button: “Yes, keep me on the list” (clicking indicates engagement).

  • A secondary link: “No thanks — unsubscribe me” that hits your standard unsubscribe flow.

Remember: forms must be in-app, not emailed. So that “Yes” CTA should go to your app or a relevant resource page, not to a survey or form embed inside the email.

Step 8: Wait and watch the second email

Insert another pause:

  • Action: Time Delay

  • Delay: 14 days

Then branch again:

  • Process: Check Email Activity

  • Marketing email: The second re-engagement email

  • Activities: Opened, Link Clicked

Anyone who engages here follows the same “saved” path as before: remove the sunset tag, optionally add sunset-saved, and let them rejoin your normal lifecycle.

We’re now left with the group who ignored both clear re-engagement attempts over ~5 weeks.

These are the people actually hurting your deliverability.

Step 9: Final suppression — change their subscription status

For the “no engagement at all” branch out of the second Check Email Activity:

  1. Action: Add Tag — Add sunset-suppressed. Keep sunset-phase-1 if you want to distinguish “entered journey” vs “fully suppressed”, or replace it with a more final tag.

  2. Action: Update Email Subscription Status — Set to “Email non-subscribed” (or “Email unsubscribed”, depending on your policy).

  3. Optional: Action: Update Contact Attribute — Set a text attribute like sunset_reason to the literal “chronic_inactive_180d”.

  4. Optional: Action: Send Internal Email — Notify a shared team inbox like “Suppressed 142 chronically inactive contacts this week. Suppression was based on no email engagement in 180 days and no logins in 60 days.”

Functionally, both statuses mean they stop receiving marketing email. Using “Non-subscribed” is a clear internal signal that you chose to suppress them based on inactivity, not that they actively opted out.

That’s it. They stay in your audience as non-marketing contacts, visible for reporting and any future transactional messages (billing, security, etc.), but they no longer drag down your marketing deliverability.

Protecting active customers who just hate email

One nuance specific to SEO SaaS: you’ll have paying customers who live in your app but never open your marketing emails. You might not want to suppress all of them, especially if product updates sometimes need to reach them.

You can handle this with an extra decision step before the final suppression:

  • Process: If/Else

  • Condition: Using the segment builder, check if: Custom event login has triggered at least once in the last 30 days, or the contact is tagged as customer or a member of your “Active paying users” segment.

Branches:

  • Then (active in app): Instead of Update Email Subscription Status, move them to a “product-updates-only” segment: Add Tag low-frequency-updates. Optionally, Update Contact Attribute email_pref to a literal like “product_only”. Exclude this segment from all but critical releases.

  • Else (no app activity either): Proceed with the Update Email Subscription Status + sunset-suppressed tag.

This is where Spreeflo’s web tracking and analytics and custom events shine. When your frontend calls Spreeflo.track('login', …) in the browser, or your backend posts a login event into the Spreeflo API, those events become usable in the segment builder and in If/Else conditions.

You end up suppressing the right people: the ones who are disengaged everywhere, not just from email.

What to measure once the journey is live

Three metrics tell you whether this sunset policy is doing its job.

  1. Suppression rate — How many contacts flow through to sunset-suppressed each month? Too high, too fast might mean your inactivity window is too aggressive. Too low could mean you set the threshold so long (e.g., 2+ years) that deliverability is still suffering.

  2. Deliverability and engagement lift — Compare open/click rates and spam complaints in the 60 days before and after launch. You should see higher average open rate, fewer spam complaints, and better placement with Gmail/Outlook over time.

  3. Revenue per active profile — Look at MRR divided by number of marketing contacts (not total contacts). As you suppress ghosts, this number should climb, even if total subscriber count drops. That’s a cleaner signal for how well your automations monetize actual attention.

Because Spreeflo separates marketing from non-marketing contacts (and bills accordingly), you’ll also see cost efficiencies here. The about Spreeflo pricing plans doc breaks down exactly how marketing-contact billing behaves.

Putting it all together in Spreeflo

In summary, here’s the flow you saw in the visual sequence and how each node earns its place:

  • Criteria Match trigger: Defines “chronically inactive” with email and behavior rules.

  • Add Tag: Marks them as in-sunset for visibility.

  • Send Email: First, value-led re-engagement message.

  • Time Delay: Seven days of breathing room.

  • Check Email Activity: Branches on who engaged with that first email.

  • Remove/Add Tag + optional attributes: Pull savable users out, label them as re-engaged.

  • Second Send Email + delays: Clear, respectful “do you still want to hear from us?” follow-up.

  • Second Check Email Activity: Final branch between saved and unsaved.

  • If/Else on app activity (optional but powerful): Protect paying, app-active users who simply prefer silence.

  • Update Email Subscription Status + tags: Suppress remaining ghosts from marketing, while keeping them in the database as non-marketing contacts.

You design this once in the campaign and journey automation guide flow editor, and it quietly protects your sender reputation for years.

The quiet payoff: cleaner lists, stronger relationships

A sunset policy can feel like giving up on potential revenue. But for an SEO SaaS, the bigger risk is clinging to vanity list size while your deliverability and engagement decay.

By automating this journey in Spreeflo:

  • You respect your subscribers’ attention.

  • You stop wasting energy on people who aren’t listening.

  • You create space for more targeted, higher-value communication with the ones who are.

Most businesses leak lifetime value by failing to nurture engagement. Ironically, the first step to fixing that leak is letting some people go — deliberately, cleanly, and with a system you trust.

Set this journey up once, revisit the thresholds quarterly, and let it run. Your open rates, inbox placement, and revenue per active subscriber will tell you if you’ve finally stopped emailing ghosts.