Before You Torch That Old List: A Re‑Permission Journey for SEO SaaS
This playbook walks an SEO SaaS through building a Spreeflo re-permission journey for old or inherited lists, protecting deliverability while confirming engaged subscribers and confidently unsubscribing non-responders so future campaigns sit on a cleaner, higher-LTV foundation.
Industry
Niche
Pattern
Loading sequence...
An inherited email list can be a gift or a grenade.
If you’ve just migrated to a new ESP, bought a small tool, or merged brands, there’s a real temptation to dump that aged list into your main audience and hit send. For an SEO SaaS, that blast can tank your sender reputation, spike spam complaints, and quietly throttle the emails that actually matter (trial onboarding, rank alerts, feature launches).
A re‑permission journey is how you keep the upside of that list without carrying its risk.
The sequence at the top of this page is the whole journey, end to end. Below, we’ll walk through how an SEO SaaS like “RankPulse” (a fictional rank tracking + content brief tool doing ~$40k MRR) uses it in Spreeflo to re‑confirm an old list, protect deliverability, and save only the subscribers who still care.
Why re‑permission is worth the effort
For SEO SaaS, the list you don’t mail can be as important as the one you do.
Three problems tend to show up when you drop an old or inherited list straight into your main sends:
Low engagement: open and click rates plunge when half the list barely remembers you.
Complaint risk: cold contacts hit spam or unsubscribe aggressively.
Hidden LTV leak: the few genuinely interested contacts get lost in the noise, and you never give them a focused invitation back in.
This journey does something different:
It asks explicitly: “Do you still want these emails?”
It gives people a simple, one‑click way to say yes.
It automatically retires everyone who doesn’t answer.
You end up with a smaller list, but a cleaner one. That means higher engagement, fewer complaints, and more room to nurture the people who actually have a shot at buying or expanding.
The overall shape of the journey
At a high level, here’s what the Spreeflo journey does for RankPulse:
Identify “cold but subscribed” contacts with a Criteria Match trigger.
Tag them into a specific re‑permission batch.
Send a clear “still want SEO insights from us?” email.
Wait a week, then use Check Email Activity to see who clicked.
For clickers, tag and timestamp them as confirmed.
For non‑clickers, send one gentle reminder.
After a second wait, unsubscribe anyone who still hasn’t clicked.
Everything is email‑only, no forms involved. The only “yes” we care about is a tracked click on the call‑to‑action link.
Let’s go node by node.
Step 1: Criteria Match on “cold but subscribed” contacts
This is a journey, not a one‑off campaign, so it starts with a Criteria Match trigger.
For RankPulse, “cold but subscribed” looks like:
Email Subscription Status is “Subscribed”.
Contact was added more than 6–12 months ago.
They haven’t opened or clicked anything in the last 90 days.
Optionally: tagged as “imported_from_old_tool” or came from a legacy webinar list.
You define that right inside the Criteria Match trigger using Spreeflo’s segment builder. The key is that this is profile‑based, not tied to a specific event. It’s about the state of the contact: old, quiet, but technically still subscribed.
Configuration details worth calling out:
Trigger type: Criteria Match
Criteria: the rules above (subscription status, age, no recent engagement, any “legacy” tags)
Re‑enrollment: off
You turn re‑enrollment off because re‑permission should be a one‑time event per contact for this batch. Once they’ve run through this journey and you either confirm or retire them, you don’t want them re‑entering because a criterion flickered for a day.
Immediately after this trigger, the journey:
Uses an Add Tag action: apply something like
repermission_2026_batch_1. This gives you a permanent record of who went through this process.Flows into the first Send Email node.
You could achieve something similar with a Join Segment trigger on a saved segment, but keeping the conditions inline in Criteria Match makes this journey self‑contained and easier to maintain.
Step 2: First “still want this?” email (Send Email)
Next is the first Send Email action: your primary opt‑in ask.
For RankPulse, the email does one job: help the reader make a binary choice. Keep it extremely simple:
Subject: “Still want SEO insights for {their site or role}?”
Body:
Remind them who you are.
Tell them what they’d get if they stay (e.g. rank change digests, content brief templates, technical SEO playbooks).
Give a single, primary button: “Yes, keep me on the list”.
That button’s URL can be any meaningful destination where a click makes sense: your blog, a new feature announcement, even your homepage. The important part is that the email has a clear, trackable click that signals “I still want to hear from you.”
Inside Spreeflo:
Node: Send Email
Use an existing or new template in the email builder.
Keep Send only once on, so a re‑enrolled contact (if you ever turn that on in a future version) doesn’t get duplicates.
You’re not asking them to update preferences or fill out a form here. Just a simple yes via click. Spreeflo tracks that click for you and feeds it straight into the decision logic later.
Step 3: Give them time (Time Delay)
After that first email, drop in a Time Delay:
Node: Time Delay
Configuration: 7 days, unit “Days”
Why not 24 hours? Because this is an aged list. Many of these contacts aren’t checking this inbox daily, and you don’t want a second touch to feel like nagging. A week gives reasonable time for a response while keeping your list‑cleanup timeline tight.
This delay is also what keeps your messaging cadence sane. Every path through the journey has at least a one‑day gap between any two Send Email nodes, which protects you from spammy back‑to‑back sends.
Step 4: Check who clicked (Check Email Activity)
Once that week is up, it’s time to ask: who actually raised their hand?
Drop a Check Email Activity process node and select the re‑permission email template you just sent.
Configuration:
Node: Check Email Activity
Marketing email: the template from Step 2
Activities to branch on:
Else branch: can exist as a fallthrough, but practically everything will land in either clicked or unclicked
Branch A:
clickedBranch B:
unclicked
This gives you two clean groups:
Contacts who clicked the “Yes, keep me” CTA. These are your confirmed keepers.
Everyone else (didn’t click, didn’t open, or the email bounced).
From here:
The clicked branch flows into a Merge node we’ll use as a single “confirmed” entry point.
The unclicked branch goes to a second, final reminder email.
That Merge node might feel overkill now, but it becomes important when we add a second chance to confirm via the reminder path. It ensures there is only one fan‑in point for “confirmed” before downstream actions run.
Step 5: Gentle reminder for non‑clickers (Send Email + Time Delay + Check Email Activity)
On the unclicked branch, we send one and only one reminder.
Send Email – Reminder. Subject along the lines of “Last call: keep getting SEO insights from RankPulse?” Shorter body, reiterating the value and the deadline: “If we don’t hear from you, we’ll stop emailing you.”
Time Delay – another 7 days. Same configuration as before. Give them space. You want a clear signal, not rushed clicks.
Check Email Activity – on the reminder email. Branch C:
clicked. Branch D:unclicked.
Now you have a second group of confirmations: people who didn’t react to the first email but clicked on the reminder.
We send the clicked branch from this second check into the same Merge node we used for the first clickers. Because Merge is explicitly designed to accept multiple incoming paths, this keeps the graph valid and your downstream logic simple.
The unclicked branch is your final group: two chances, no response. These are the contacts we’re going to retire.
Step 6: Stamp the confirmed subscribers (Merge + Add Tag + Update Contact Attribute)
Let’s follow the positive path first.
Every contact who clicked either the first or second email flows into the Merge node and then into two actions:
Add Tag. Apply a tag like
repermission_confirmed_2026. This tag becomes a simple filter you can use in future campaigns and segments: “only mail people who have explicitly reconfirmed in the last re‑permission cycle.”Update Contact Attribute. Create a custom timestamp attribute such as
last_repermission_at. In the Update Contact Attribute node: Attribute:last_repermission_at. Delete value: off. Update type:SET_NOW.
This uses the one dynamic option available: “Set to now” writes the current timestamp when the node runs. Every confirmed contact gets a reliable record of when they last reconfirmed.
You end the confirmed path here or optionally flow them into a welcome‑back nurture later. Even if you do, resist the urge to send another email immediately. You’ve just asked a favor; let a future, value‑heavy sequence pick up that thread.
Step 7: Unsubscribe or downgrade the rest (Update Email Subscription Status)
On the final unclicked branch from the reminder’s Check Email Activity, we assume silence is a no.
This is the list that threatens your sender reputation and bloats your “marketing contacts” count without contributing any revenue. For RankPulse, that’s where we act decisively.
Drop in an Update Email Subscription Status node:
Status:
Email unsubscribed
You might also:
Add a tag like
repermission_no_response_2026for historical analysis.Optionally use Update Contact Attribute to set a
marketing_statuscustom attribute to something like "Non-marketing" if you maintain that distinction.
From this point onwards, those contacts are out of your marketing email audience. Spreeflo treats them accordingly, and because billing is based on marketing contacts, cleaning out dead weight will keep your costs in line too. If you want to understand how that plays with your plan, the detailed breakdown in Spreeflo’s pricing plans is worth a look.
The journey ends here for the non‑responders; they no longer receive promotional flows.
Deliverability details that make this work
A re‑permission journey won’t save you if the fundamentals are broken. Before you activate it, make sure:
Your sending domain is correctly authenticated (SPF, DKIM, DMARC). Spreeflo’s guide on how to set up your domain walks through this.
You’re sending from a consistent, recognizable “from” name and address.
Your re‑permission email is light on images and heavy on plain explanation.
There’s a visible, working unsubscribe link (Spreeflo inserts this automatically for marketing emails).
Think of the journey as a scalpel. It’s precise, but it still operates inside the broader health of your sending setup.
Adapting this pattern for your SEO SaaS reality
The skeleton above works for most SEO SaaS, but you can tune it easily:
Tighten or loosen the criteria window. If your typical buying cycle is fast (e.g. small site owners on monthly plans), 90 days of no engagement might be enough to start re‑permission. If you sell to agencies with long project cycles, you may want 180 days.
Exclude paying customers explicitly. Add an extra rule in the Criteria Match trigger: “Plan is not Active Customer” based on a
plan_typeoris_customerattribute you sync in from Stripe or your backend through the Spreeflo API. Those users might be quiet on email but active in‑app; re‑permission them separately if at all.Segment by persona. If you store attributes like
customer_type(agency / in‑house / solo creator), you can split the journey after the Merge node with an If/Else based on that attribute and flow confirmed contacts into slightly different win‑back sequences tailored to each segment.
Whatever you change, keep the core structure: clear criteria, explicit ask, one reminder, then decisive retirement.
Watching the right metrics once it’s live
For this pattern, three numbers matter:
Re‑confirm rate. Of everyone who entered the journey, what percentage clicked one of the “keep me” CTAs? If it’s extremely low (under 3–5%), your list was colder than you thought. That’s fine; cleaning it was still the right move.
List health. Track the size and engagement of the confirmed segment over time. You should see open and click rates climb on future sends to this group, and spam complaints fall.
Complaint rate during the campaign. Monitor spam complaints, bounces, and unsubscribes while the re‑permission journey runs. If complaints edge up, consider softening the reminder copy or stretching delays.
Because this is a journey, not a blast, you can tweak nodes in place: change the Time Delay from 7 to 10 days, update the email templates, or refine Criteria Match conditions without rebuilding from scratch. The campaign and journey builder is built for exactly this kind of small, compounding optimization.
Why this is an LTV play, not just a cleanup task
On paper, a re‑permission campaign shrinks your list. That can feel wrong when you’re chasing growth.
But for a founder of an SEO SaaS, the bigger risk isn’t losing a few thousand disinterested emails. It’s letting a disengaged list slowly poison the channel that onboards trials, educates customers, and nudges upgrades.
Most businesses leak lifetime value because they don’t nurture engagement. They send the same broad updates to everyone, watch metrics slide, then quietly stop emailing the people who most need reminders of the product’s value.
This journey flips that dynamic:
You protect deliverability so critical lifecycle emails actually land.
You surface the subset of old contacts who still care enough to click.
You create a clean foundation for future, behavior‑driven journeys that speak to what each user actually does in your app.
Once you’ve run this pattern once, it’s no longer a chore. It’s just another reusable system in your stack — one that quietly keeps your email channel healthy while you focus on features, content, and the kind of marketing work only you can do.
And because Spreeflo is built around rich contact data, targeted actions, and automation rather than one‑off blasts, journeys like this are the default, not the exception. Clean list, higher engagement, more headroom to grow the SEO SaaS you actually care about.