Warm Up Every New Contact: The Deliverability-Safe Welcome Sequence For Shopify Apps
Step-by-step walkthrough of a deliverability-safe warm-up journey for new Shopify app contacts in Spreeflo, showing how to pace emails, branch on engagement, and protect your sender reputation while turning installs into nurtured, revenue-generating customers.
Industry
Niche
Pattern
Loading sequence...
The first time you mail a big chunk of “new to you” contacts, the result can go one of two ways.
Path one: inboxes. Gmail and Outlook see a modest, steady stream of messages, people open and click at healthy rates, and within a week or two your domain has a solid reputation. Every future launch, upsell, and retention campaign benefits.
Path two: spam. You come in hot on a fresh domain or a cold segment, engagement is mixed, a handful of people hit “this is spam,” and mailbox providers quietly decide you’re a risk. From then on, even your best content struggles to land.
For e‑commerce app developers, this shows up when you migrate to a new sender like Spreeflo, start emailing in-app signups for the first time, or reactivate older free-trial cohorts. You’ve done the hard work of getting those installs — but if your first big send trips the filters, you’re leaking lifetime value before your lifecycle emails ever get a chance.
The sequence at the top of this page is the whole journey, end to end. It’s a “new-contact warm-up” that slows the ramp for every brand-new contact so your domain reputation grows steadily instead of spiking and crashing.
In this article we’ll walk through that journey node by node, explain why each piece is there, and show how a team like the CartWizard crew (a Shopify cart recovery app doing ~$100k MRR) would adapt it to protect their sender reputation while still nurturing new merchants from install to paying subscriber.
Why a warm-up journey matters more than a fancy newsletter
Mailbox providers reward consistency and engagement. They punish sudden volume, low opens, and spam complaints.
If you:
Move from Mailchimp or Klaviyo to your own domain on Spreeflo,
Start emailing in-app signups for the first time,
Or decide to “finally email that 10k list” of historical installs,
you’ve just changed the pattern Gmail sees from your domain. A single aggressive blast may get you quick clicks, but the long-term cost in deliverability can be brutal.
A warm-up journey solves for three things at once:
It keeps early cadence gentle: a couple of spaced, highly relevant emails instead of a flood.
It self-selects engaged contacts into higher-volume messaging later.
It gives new contacts a clear, value-first introduction, so you’re nurturing engagement instead of immediately “selling at” them.
That last point ties straight to one of Spreeflo’s core beliefs: most businesses lose lifetime value because they don’t nurture engagement. If your first month of emails never makes it past the Promotions tab — or worse, lands in spam — your onboarding, usage education, and upsell journeys are dead on arrival.
So this pattern earns its keep twice: by protecting your new-sender reputation and by making sure more of your lifecycle automation is actually seen.
Let’s look at how the journey in the visual sequence is built.
Overview: what this warm-up journey does
In plain language, the journey does this for each new contact:
Detects when someone is added to your audience (e.g., a new Shopify install synced in via API or CSV import).
Flags them as “in warm-up,” so other automations can treat them differently.
Checks whether they’re actually subscribed to marketing email.
If they’re subscribed, runs them through a slow, high-signal welcome sequence:
Graduates them into your main marketing list only after this 2–3 touch, 20–30 day window.
A single founder-style welcome after one day.
A pause to see whether they opened or clicked.
A second email whose timing depends on their engagement.
The entire thing runs as a journey that you build visually in Spreeflo’s sequence editor. Once it’s live, every new contact goes through it automatically.
Now we’ll go node by node.
Trigger: Add to Audience (only once per contact)
We start with the Add to Audience trigger.
Configuration:
Trigger: Add to Audience
Re-enrollment: off
Why this trigger?
For a Shopify app or e‑commerce platform product, “added to audience” is usually:
A new merchant who just installed your app.
A lead you imported from a past payment tool or email platform.
Someone created via API when you get an
app_installedor signup event.
You want every brand-new contact to pass through this warm-up exactly once. Turning re-enrollment off ensures that if they uninstall/reinstall or you re-import them later, they won’t get hit with the same warm-up again.
Immediately after the trigger, the journey uses an Add Tag action to label them:
Tag:
warmup-new-contactForce tag trigger: off
That tag is your safety rail. You can use it in other journeys or segments to hold back bulk newsletters until the warm-up is done.
First fork: only warm up people you’re allowed to email
The next node is an If/Else process that checks subscription status.
Condition (using the segment builder inside If/Else):
Email Subscription Status is “Subscribed”
Why?
A lot of app developers mix product emails (transactional) and marketing emails in their head, but mailbox providers don’t. You should only send this warm-up sequence to contacts who have explicitly opted into marketing email.
So the journey splits:
“Subscribed” branch: continue into the warm welcome.
“Not subscribed” branch: skip warm-up.
On the “not subscribed” side, a simple pattern is:
Add Tag:
transactional-only(Optional) Send Internal Email to alert a team inbox if you want to review how someone got into the audience without marketing consent.
End the path.
No marketing emails go to this group. That alone keeps complaint risk down when you’re warming up a new domain.
The first delay: teach Gmail you’re not a spam cannon
In the subscribed branch, we insert a Time Delay:
Time Delay: 1 day
When a new contact hits your list, the instinct is often “email them instantly.” During warm-up, a small pause is healthier. You’re telling mailbox providers:
Volume is tied to natural list growth, not scraped addresses.
You’re not blasting people within seconds of capture.
It also gives your infrastructure a chance to stabilize if you just finished setting up your sending domain.
Email #1: plain-text founder hello
After the delay, we add the first Send Email action.
Configuration:
Email: “Founder welcome / quick win”
From: your main app sender (e.g., support@yourapp.com)
Send only once: on (Spreeflo’s default)
Content-wise, this email should be:
Short.
Mostly plain text (or very light HTML).
Highly specific to what they just did.
For CartWizard, that might look like:
Subject: “Let’s get your first recovered cart”
Body: a 2–3 paragraph note from a founder explaining:
“You installed CartWizard for X.”
“Here’s the one setting to configure today.”
“Hit reply if you’d like me to check your setup.”
Why this style?
Plain, human-sounding emails earn good engagement and replies, both of which are powerful positive signals for inbox placement.
A single, sharp call to action (“set up this one rule”) makes it more likely they’ll click and succeed quickly inside the app.
You’d typically design this in Spreeflo’s email builder, using a minimal template without heavy graphics.
To respect pacing, every path that leaves this node later in the flow includes a Time Delay before sending the next email.
Let the data come in: a three-day listening window
Next, we insert another Time Delay:
Time Delay: 3 days
Why three days?
It gives contacts across time zones and work schedules a fair chance to open.
It allows mailbox providers to see a pattern of stable engagement before you increase per-contact volume.
It keeps your warm-up period in the 2–4 week range when combined with later delays, which is a healthy window for a fresh domain.
After this pause, we want to treat engaged and unengaged contacts differently.
Check Email Activity: branch on how they reacted
Here we add a Check Email Activity process node, targeting Email #1.
Configuration:
Marketing email: the first welcome email template.
Activities to branch on:
“Opened”
“Clicked”
(Else branch will capture everyone else)
So the journey now has three logical paths:
Contacts who clicked the first email.
Contacts who opened but didn’t click.
Contacts who did nothing (no open tracked, no click).
This is where Spreeflo’s automation really starts to pay off. You configure the split once and, from now on, every new install is automatically bucketed based on real engagement instead of “everyone gets the same drip.”
Path A: fast-track the highly engaged
For contacts who clicked the first email, we know two things:
The address is valid.
The person is curious enough to engage quickly.
First, the journey uses Add Tag:
Tag:
warmup-engaged-hot
You can later use this tag to:
Prioritize in-app messaging or support.
Create VIP segments in the segment builder.
Then:
Time Delay: 2 days
Send Email #2 (hot path): “Power feature or case study”
Email #2 on this path can be more assertive:
A short case study of a merchant who recovered $X in 7 days.
A feature spotlight that helps them move from “installed” to “activated power user.”
Again, we space it with a delay before sending to stay within healthy per-contact volume.
You could add a third message later, but during domain warm-up, two touches per contact is often enough. The rest of your lifecycle journeys (onboarding, upsell, product updates) take over once they’re “warmed.”
Path B: nudge the “opened but didn’t click” crowd
For contacts who opened Email #1 but didn’t click:
Add Tag:
warmup-engaged-warmTime Delay: 4 days
Send Email #2 (warm path): “Make your first result inevitable”
This group is reading but hasn’t taken action yet. You want to:
Keep volume conservative.
Make the next step feel smaller and safer.
For a Shopify analytics app like ShopMetrics, Email #2 here might be:
“Reply with your store URL and we’ll send one insight you can act on this week.”
Or “Click to enable our default dashboard; we’ll do the rest.”
The copy is still value-first and personal, but the delay is a bit longer than the hot path. That’s another small signal to mailbox providers that your sending patterns are aligned with engagement.
Path C: handle silent contacts carefully
Everyone who neither opened nor clicked Email #1 falls into the else branch.
Here, the journey:
Adds Tag:
warmup-low-engagementInserts a longer delay:
Time Delay: 7 days
Sends Email #2 (cool path): “Still relevant?” or “Should we keep this short?”
This is your most sensitive group during warm-up. A few design choices help protect reputation:
Keep this second email extremely short and conversational.
Consider explicitly offering an easy way out (“If you’re not the right person for this app, hit reply with ‘wrong person’ and we’ll tidy things up.”).
Focus on verifying interest, not pushing a feature.
You might even start with a smaller list segment in the earliest days and expand gradually as your sender reputation improves. That strategy can be implemented using additional journeys and segments on top of this pattern.
Merge: bring everyone back together
After Email #2 (and the corresponding delays) on each branch, the paths converge into a Merge node.
From the Merge, we run a couple of housekeeping actions:
Update Contact Attribute
- Attribute:warmup_status(a custom text attribute you create)
- Update type: Update
- Value:"warmed"
This writes the static literalwarmedto every contact who completes the journey. From here on, any campaign or journey can checkwarmup_status is warmedto decide whether to include someone.Remove Tag
- Tag:warmup-new-contact
This clears the “in warm-up” flag, so you don’t accidentally gate them forever.Add Tag
- Tag:warmup-complete
Optional, but useful as a simple way to trigger downstream journeys. For example, you might have a separate lifecycle journey triggered by “Added Tag: warmup-complete” that starts your full onboarding series.
By separating “warm-up” from “onboarding,” you avoid the common trap of over-emailing a fresh list in the first month. Reputation protection and product education each get their own, well-defined job.
Adapting the pattern for your own app
The skeleton above is opinionated, but flexible. A few adaptation ideas that fit most Shopify apps and e‑commerce tools:
Adjust delays based on deal size and buying cycle. A $29/mo plugin can move faster than a $499/mo analytics suite. Swap 3-day windows for 2-day windows if your users make decisions faster.
Personalize Email #2 paths by plan or store size. Add a Multi-way Split before the Merge on each engaged path, based on a “store size” attribute or plan ID, and tailor examples for small vs large merchants.
Use web tracking once you’re on the Professional plan. For example, insert a Wait Condition after Email #1: “wait up to 7 days until they visit the pricing page.” You can read more about this in the web tracking and analytics help doc.
Bring AI into subject lines or body copy once the mechanics are stable, using the personalization features documented in the help center.
The key is to preserve the core logic:
Everyone new goes through a controlled, low-volume warm-up.
Cadence and content intensity scale with engagement, not with your desire to “use the list.”
Graduation into high-volume campaigns is explicit and data-driven.
What to watch in the numbers
This journey exists to protect list health and deliverability, so the metrics you care about map closely to the pattern description:
Inbox placement during the first 30 days on a new domain: your sending-domain’s spam rate and where test emails land. Positive trends here signal that your pace and content are working.
Engagement during warm-up: opens, clicks, and replies on Email #1 and Email #2. Expect the hot and warm branches to over-index on replies and clicks; if they don’t, revisit copy.
Complaint and unsubscribe rates: especially on the “cold” path. Any spike is a sign you’re emailing the wrong people or pushing too hard.
Downstream revenue: how many “warmed” contacts later convert from trial to paid, upgrade, or stick longer. This is the real payoff — minimizing the silent churn that happens when people never see your best onboarding content.
Because this is a journey, not a one-off campaign, it keeps running as your app grows. You set it up once, then let it guard your sender reputation and nurture new contacts in the background.
That’s what founder-led teams need: a system that prevents obvious mistakes and quietly compounds results while you’re busy shipping features.
Closing thought: don’t waste installs on preventable deliverability issues
As an e‑commerce app developer, you probably obsess over App Store rankings, install rates, and in-app activation. Email deliverability feels secondary until it suddenly isn’t — until a major launch goes soft and you discover half your list never saw it.
A warm-up journey like the one in the sequence at the top of this page is cheap insurance. It turns each new install into a deliberate, paced conversation instead of an anonymous entry in a blast list. It keeps your sender reputation clean so the rest of your lifecycle strategy can actually do its job.
Most businesses leak lifetime value because they don’t nurture engagement. Letting emails disappear into spam is the quietest, most wasteful version of that leak. Put a warm-up in place once, and every new contact you earn from the Shopify App Store or your landing pages becomes someone you can reach, teach, and retain — on autopilot.