The 10% Silent Group That Proves Your SaaS Emails Are Worth Sending
This playbook shows SEO SaaS founders how to wrap their trial onboarding emails in a 10% holdout experiment using Spreeflo, so they can measure true incremental revenue lift instead of relying on opens and click rates.
Industry
Niche
Pattern
Loading sequence...
The most dangerous sequence in your product is the one you “know” is working but have never actually measured.
RankPulse, a fictional three-person SEO rank tracker doing $40k MRR, had a seven‑email trial onboarding cadence. Open rates looked fine. Click rates looked fine. But churn stayed stubborn, and the founder had no idea if that onboarding flow was driving revenue or just keeping their ESP bills paid.
The sequence at the top of this page is the fix: a holdout‑based experiment where 10% of users get no journey at all, and the other 90% get your best onboarding. It’s a simple way to measure the true, incremental lift from your automation.
For a small SEO SaaS team, this is where email stops being “nice to have” and becomes something you can model, predict, and justify.
The experiment: 90% nurtured, 10% silent
Most SaaS teams judge journeys by engagement: opens, CTR, maybe reply rate.
Those numbers lie.
If your trial users would have converted anyway, a 45% open rate doesn’t mean anything. The only honest question is:
“Compared to doing nothing, how much more revenue did this journey create?”
That’s what a holdout group answers. The pattern is:
A behavioural trigger: something like
started_trialorinactive_for_14_days.A Random Split: 10% to a “control” branch that receives nothing, 90% to a “treatment” branch that gets your emails.
Clear labels for both branches so you can analyse results later.
A small set of emails on the treatment path, paced with Time Delays.
Segments that compare conversion and revenue between control and treatment.
Spreeflo’s journey builder makes this a single automation you configure once and then let run. You don’t have to juggle multiple tools, exports, or manual spreadsheets beyond the basic analysis.
Let’s walk through the sequence node by node.
Step 1: Pick the behavioural trigger that matters
You can bolt this pattern onto almost any high‑value behaviour. For SEO SaaS, three common choices are:
Trial start (
started_trial)Activation (
added_first_keyword,connected_search_console,generated_content_brief)Reactivation (
inactive_for_14_days→ user logs back in)
We’ll use trial onboarding, because that’s where most SEO SaaS founders leak the most revenue.
In Spreeflo, create a journey and add a Custom Event trigger as your entry point:
Trigger type: Custom Event
Event name:
"started_trial"(or whatever you track in your app)Re-enrollment: off (you usually only want someone in this trial experiment once)
How the event gets into Spreeflo:
If you track it from the front-end, call
Spreeflo.track('started_trial', {...})from the browser when the user hits “Start trial”.If the event originates on your backend (for example from a Stripe webhook), POST it to the Spreeflo API as an event. That’s the right option for any server-side code.
Once that trigger is in place, every new trialist becomes an experiment subject as soon as the event fires.
Step 2: Wire the Random Split and label your cohorts
Immediately after the trigger, drop a Random Split process node. This is the heart of the holdout pattern.
Configure it like this:
Path A: Control (holdout)
Path B: Treatment (nurtured)
Percentage: 10% → Control, 90% → Treatment
Spreeflo will randomly route each new trial into one of these two arms at the moment they start. You don’t need separate campaigns or manual sampling.
Now you need permanent labels so you can analyse later. On each branch, add an Add Tag action as the first step:
Control branch: Add Tag →
experiment_trial_nurture_v1_controlTreatment branch: Add Tag →
experiment_trial_nurture_v1_treatment
You can also use Update Contact Attribute to set a static text attribute like trial_nurture_experiment_group = "control" vs "treatment". Because Update Contact Attribute always writes the same literal value to everyone who passes, attributes like this are ideal for experiment IDs and group labels.
Those tags and attributes are what you’ll query later through the segment builder.
At this point your skeleton looks like:
Trigger → Random Split → Tag control or treatment → diverging paths.
Now you build the actual journey on the treatment side.
Step 3: Build the treatment branch (your real journey)
The treatment branch is your best attempt at an effective onboarding sequence. With Spreeflo’s email builder, you can ship a solid version fast without getting stuck in HTML.
A simple three‑email flow works well to start.
Welcome + first outcome
- Node: Send Email
- Timing: Immediately after the Add Tag
- Content:
- Subject: “Welcome to RankPulse – track your first keyword in 5 minutes”
- Body: One clear outcome (“see where you rank today”), one CTA (“add your first keyword set”), one screenshot or GIF.
Turn on “Send only once” in the node so this email never accidentally repeats for the same contact, even if they re‑enter later when you change re-enrollment rules.Nudge to real usage
- Node: Time Delay
- Config: Wait 1 day
Then:
- Node: Send Email
- Content: Focus on a behaviour strongly correlated with retention:
- For rank trackers: setting up daily/weekly alerts or tracking competitor domains.
- For content brief tools: creating a brief from a seed keyword.
Again, keep it single-purpose. One job per email.Support + upgrade focus
- Node: Time Delay
- Config: Wait 2 days
Then:
- Node: Send Email
- Content:
- Short list of 2–3 “power features” (e.g. cannibalization reports, keyword grouping, branded PDF exports).
- Invite to upgrade before trial ends or schedule a quick call for agencies.
This respects the pacing rule: every Send Email node is separated by a Time Delay, so no one gets back‑to‑back messages.
Optionally, you can close the treatment branch with a small marker:
Node: Add Tag →
experiment_trial_nurture_v1_completed
Now you know who actually received the full intended sequence.
All of this lives on one side of the Random Split. The other side stays quiet.
Step 4: Keep the holdout truly cold
The power of this experiment comes from comparing your nurturing against what happens when you do nothing.
That means:
No onboarding emails on the control branch
No web push nudges tied to trial activation on that branch
No other journeys that accidentally pick them up based on “joined trial segment” or similar logic
You can still add non-user-visible actions on the control path:
Add Tag (already in place) so you can segment them later
Update Contact Attribute for experiment metadata
Optional: Time Delay approximating trial length (say 14 or 30 days), then Add Tag
experiment_trial_nurture_v1_window_endedto mark that their “observation window” is over
But don’t send them anything in the primary channel you’re testing (here, email). If you also use Spreeflo’s web push for other campaigns, keep that consistent across groups so email is the only changed variable.
Step 5: Measure lift with segments, not vibes
After a few weeks, you’ll have enough data to compare control vs treatment. This is where Spreeflo’s campaigns and journeys connect with its audiences and segments.
You need two ingredients:
A clear definition of “converted”
A way to count how many converted in each group
Define “converted” as a trackable signal
For trial-to-paid, good options are:
A backend event, e.g.
subscription_activatedA contact attribute like
planset to"Pro"or"Agency"
If you wire Stripe or your billing system into Spreeflo using the Spreeflo API, send a subscription_activated event whenever someone becomes a paying customer. That gives you an unambiguous, time-stamped conversion signal.
Build the comparison segments
In Audience → Segments, create:
1. “Trial nurture v1 – Treatment group”
Contact tags contains
experiment_trial_nurture_v1_treatmentContact added date is within the experiment period (optional but helpful)
2. “Trial nurture v1 – Control group”
Contact tags contains
experiment_trial_nurture_v1_controlSame date window
Now layer conversion on top.
3. “Treatment – Converted”
Member of segment “Trial nurture v1 – Treatment group”
Custom events:
subscription_activatedtriggered at least 1 time in the last X days
(or Contact attributeplan isPro/Agency/etc.)
4. “Control – Converted”
Member of segment “Trial nurture v1 – Control group”
Same conversion rule
The segment builder makes all of this expression-level: you pick tags, events, and attributes from dropdowns, not from SQL.
Do the simple math
Let’s say after a month you see:
Treatment group size: 900 trialists
- Treatment – Converted size: 270 → 30% convertControl group size: 100 trialists
- Control – Converted size: 20 → 20% convert
Now:
Absolute lift: 30% – 20% = 10 percentage points
Relative lift: 10 ÷ 20 = 50% more conversions driven by the journey
If your average first month revenue per new customer is $79:
Incremental conversions: 270 – (0.20 × 900) = 90 extra customers
Incremental revenue in that period: 90 × $79 = $7,110
To approximate “lift per send,” count how many people actually received your key onboarding email:
Create a segment with:
- Tagexperiment_trial_nurture_v1_treatment
- Email Activity: that specific onboarding email was “sent” at least 1 time in the last 30 days
If that segment has 850 contacts, then:
Lift per send ≈ $7,110 ÷ 850 ≈ $8.37 incremental revenue for every trial welcome email Spreeflo sends.
That is the kind of number you can make decisions on.
Avoiding common experiment traps
A few design choices matter if you want your holdout test to actually tell the truth.
1. Don’t overlap conflicting experiments
If you’re also testing, say, a reactivation journey for dormant accounts, make sure your triggers don’t double‑enroll the same contact into incompatible experiments.
Spreeflo’s re-enrollment rules are journey‑scoped. With the started_trial Custom Event trigger set to no re-enrollment, the same user won’t re-enter this experiment via another trigger later. For other journeys (like reactivation), you can safely turn re-enrollment on if it makes sense for that behaviour.
A simple rule of thumb: one experiment per lifecycle stage per contact.
2. Keep the content stable while the test runs
If you wildly change the onboarding emails halfway through, then compare the whole period, your numbers are muddied.
When you ship a materially different version of the journey, change the experiment tags:
experiment_trial_nurture_v2_controlexperiment_trial_nurture_v2_treatment
Clone the journey in Spreeflo, adjust the content, and start a fresh run.
3. Run it long enough to matter
If you only start 30 trials a month, a 10% holdout gives you 3 control users per month. That’s not enough.
Two options:
Increase the control share (e.g. 20% control, 80% treatment) until you have at least a few dozen users in each arm before calling a result.
Run the experiment over a longer time window before you judge it.
For tools in the $29–$99/mo range with hundreds of monthly trials, the 90/10 split is usually fine.
4. Remember channel scope
This pattern is anchored on email. If you also use SMS, in-app messages, or another email provider for other touches, keep those consistent between groups during the test window. Otherwise you’re no longer asking “do these emails help?” but “do this whole tangle of communications help?”, which is harder to reason about.
Why this pattern is founder leverage, not extra work
As a founder of a small SEO SaaS, your constraint isn’t ideas. It’s time.
Every hour you spend writing onboarding copy, wiring events, or building journeys has an opportunity cost: shipping product, fixing a broken report, talking to a big prospect.
The point of this holdout pattern is to turn marketing automation into a compounding asset instead of a faith-based habit. You build one journey, add a Random Split, tag the branches, and let the system run. The analysis you do once per quarter tells you whether to:
Invest more into that flow (because it adds real revenue), or
Tear it down and try a different approach (because the control performs just as well)
That is the logic behind the belief that founder-led businesses win on leverage, not headcount. Patterns like this are how you get it.
Spreeflo is built so you don’t need a data team or a marketing ops hire to run these experiments. You define the trigger, drop in a Random Split, compose a few emails in the email builder, and use segments for the comparison. On pricing that won’t punish you as your contact list grows, as you can see in Spreeflo’s pricing.
If you already have a trial onboarding flow running, you don’t need to start from scratch. Wrap it in the holdout pattern from the sequence at the top of this page, let it run, and let the control group tell you what your emails are really worth.