Cold email playbook
Why your ecommerce email campaigns land in spam (and why your ROI keeps dropping)
Most Shopify and Klaviyo newsletters never see the inbox. Here's the real reason your open rates are falling, your campaign ROI is shrinking, and what the platforms won't tell you about fixing it.
1. Why your campaign ROI keeps falling, the real problem
You built the store. You set up the flows. You tweaked the subject lines. And still, half your emails vanish.
Here's what nobody tells you: the problem isn't your copy. It's not your offers. It's not even your segmentation. The problem is that your emails never reach the inbox in the first place.
Open rates on ecommerce emails have been sliding for years. Not because customers stopped opening, because the emails stopped arriving. Gmail's Promotions tab is packed. Outlook's spam folder is fuller than ever. And if you're running Shopify email campaigns through Klaviyo, Mailchimp, or Omnisend, you're probably losing 20% to 40% of your sends to spam and you don't even know it.
The math is ugly. Spend $500 on a campaign, send 10,000 emails, and if 3,000 land in spam, you just burned $150. Scale that across a year of campaigns. That's where your ROI went.
Every ecommerce operator I talk to asks the same question: "Why did my email campaign ROI suddenly drop?" The answer, almost every time, is deliverability. Let's walk through exactly why.
2. You only send. You never receive.
Think about a real email address. Your personal Gmail, the one you've had for ten years. It sends emails. It also receives emails. Replies, forwards, calendar invites, people CC'ing you on threads. It looks like a real conversation.
Now think about your store's sending email. hello@yourstore.com. It fires out thousands of newsletters, abandoned cart reminders, and promo blasts. But does anyone ever reply to it? Does it ever receive an email from a customer? Almost never.
This is the first thing ESPs notice. An address that only sends and never receives looks like a broadcast machine, not a real mailbox. Gmail and Outlook have been tracking send-to-receive ratios for years. When your ratio is wildly one-sided, 10,000 sent, zero received, they flag you.
It's not malicious. The algorithm just sees a pattern: here's an address that talks but doesn't listen. That's what spammers look like. That's what your Shopify email campaigns look like too.
The fix starts with making your sending domain look like it belongs to a real person or business that has two-way communication. More on that in section 6.
3. Image-heavy, link-stuffed emails are a spam magnet
Open any ecommerce newsletter from a typical Shopify store. What do you see? A massive hero banner. Six product images with prices. Three "Shop Now" buttons. A footer with twelve social media links. Maybe two lines of actual text total.
To an ESP's spam filter, that email is a red flag factory.
Here's why:
- Image-to-text ratio. Spam filters expect a healthy balance of text and images. An email that's 95% images and 5% text looks exactly like the promotional spam filters are trained to catch. Alt text doesn't compensate for this, the algorithm is looking at the ratio of actual written content to image bytes.
- Tracking links everywhere. Every product link in your email is a tracking URL. yourstore.com/track?utm_source=klaviyo&utm_medium=email&.... When a single email contains 40 unique tracking links, spam filters see link-stuffing, one of the oldest spam signals in the book.
- Domain mismatch. Your images are hosted on Shopify's CDN. Your links go through Klaviyo's click tracking. Your unsubscribe points to a Mailchimp page. Three different domains, none of them the one you're sending from. Filters notice when the email claims to be from one place but points everywhere else.
- No real conversation. There's no actual text content. No paragraphs. No sentences. Just images and buttons. A real person's email has words in it. Spam filters know this.
I'm not saying stop using images. Ecommerce runs on visuals. But if every campaign you send is a billboard with zero text, you're training the spam filter with every send.
4. The feast-or-famine volume pattern that destroys reputation
Here's what the sending volume of a typical ecommerce store looks like over a year:
- January: Quiet. Maybe 200 emails for returns and order confirmations.
- February to April: A few hundred here and there. Spring sale in March, 2,000 emails in one day, then silence for two weeks.
- May to August: Slow season. Almost nothing going out except the occasional abandoned cart.
- September: Ramping up. A few campaigns. 1,000 emails, then a week of nothing.
- October to November: Black Friday hits. You blast 40,000 emails in three days.
- December: Holiday push. Another 30,000 in two weeks.
- January again: Dead silent.
To an ESP, this pattern screams "not a real sender." Legitimate mail servers send consistently. They don't go from zero to fifty thousand overnight and back to zero next month. That spike pattern is one of the strongest spam signals an algorithm can detect.
The brutal irony: Black Friday and holiday season are when you need deliverability the most. But the spike itself is what tanks your reputation. By the time your third campaign of the weekend goes out, you're already in the spam folder, and you won't know until the revenue report comes in.
Volume inconsistency doesn't just hurt individual campaigns. It trains the ESP's model to treat your domain as unpredictable. And unpredictable senders get filtered harder, even during the quiet months when volumes are low. The damage is permanent, it stacks.
5. How to actually stop landing in spam
By now the pattern should be clear: ecommerce email deliverability fails because the sending behavior looks nothing like a real person's email behavior. The fix is to make it look real again.
Here's what works, in order of importance:
- Own your sending domain. Stop sending exclusively from your platform's shared infrastructure. Get a secondary domain you control and build reputation under your own name.
- Warm up constantly. No gaps. No spikes. A steady, low-volume baseline of sending activity that runs year-round, even when you're not running campaigns.
- Warm up in the right language. If your customers speak German, your warm-up emails need to be in German. Warming up in English when you sell in Munich makes deliverability worse, not better.
- Add text to your campaigns. Every promotional email should include at least a paragraph or two of real written content alongside the images. Think of it like a letter, not a flyer.
- Monitor your DNS records. SPF, DKIM, and DMARC need to be set up and passing on your sending domain. One broken record and everything fails silently.
The next three sections go deeper on the domain, warm-up, and language pieces. These are the parts most stores get wrong.
6. Use a secondary domain you own, not the platform's
Most Shopify stores send from their main domain, hello@yourstore.com, through Klaviyo or Mailchimp's shared sending infrastructure. The problem is, your main domain is also your website. If your email reputation tanks, it doesn't just hurt campaigns. It can affect everything connected to that domain.
Here's what you should do instead:
- Buy a secondary domain. Something like yourstore-mail.com or hello-yourstore.com. Keep it separate from your main site domain. This isolates your email reputation from your web presence.
- Set up proper authentication on it. SPF, DKIM, and DMARC, all three. This is not optional. Every secondary domain you send from needs its own authentication records. If you skip this, you're starting with one hand tied behind your back.
- Send from this domain exclusively. All your campaigns, flows, and transactional emails go through the secondary domain. Your main domain stays clean for your website and business email.
This isn't complicated or expensive. A domain costs $10 a year. The DNS setup takes 30 minutes. The return is that your email reputation lives in its own sandbox, if something goes wrong, it doesn't spill into everything else.
No, your platform won't suggest this. Their default setup uses their shared pools because it's easier for onboarding. Easier for them, more expensive for you.
7. Warm up consistently, no gaps, no spikes
Warming up an email domain means sending a small, steady stream of emails that get opened, replied to, and marked as "not spam." It teaches the ESP's algorithm that your domain is a legitimate sender with normal human behavior patterns.
Here's what most ecommerce stores do wrong: they warm up for two weeks before Black Friday, then stop. That's like going to the gym for two weeks before a marathon and wondering why you collapsed at mile three.
Warm-up needs to be continuous. Here's what that looks like:
- Start low, go slow. Day one, you send maybe 5 warm-up emails. Day thirty, you're at 50. The ramp is gradual. The ESP sees a domain that's been consistently active for weeks, not one that just showed up yesterday.
- Keep a baseline forever. Even during your quiet months, January, July, maintain a low but steady sending volume. Ten warm-up emails a day is enough to keep the reputation alive. It shows the algorithm that your domain hasn't gone dormant.
- Positive engagement matters more than volume. Warm-up emails that get opened and replied to are worth a hundred sends that get ignored. The goal isn't high volume. It's positive signals: opens, clicks, replies, "this is not spam" marks.
- Don't spike over your warm-up ceiling. If your warm-up has built you to 100 emails a day and you suddenly blast 10,000, the algorithm sees a ten-thousand-percent spike. That's not a campaign. That's a red alert. Your warm-up volume sets the ceiling for how much you can safely send.
Think of warm-up as reputation insurance. It costs almost nothing to run, and it pays for itself the first time a campaign actually lands in inboxes instead of spam folders during peak season.
8. Warm up in your customers' language, not yours
This is the mistake almost every international ecommerce store makes, and it's the one that quietly kills deliverability in foreign markets.
Here's the scenario: you run a Shopify store that sells to Germany. Your website is in German. Your product descriptions are in German. Your email campaigns are in German. But when you set up your email warm-up tool, it defaults to English. So for weeks, your domain is building reputation by sending and receiving English-language emails. Then Black Friday arrives, you switch to German campaigns, and half of them land in spam.
What happened? Gmail and Outlook don't just track sending volume and engagement. They track language patterns at the domain level. A domain that has exclusively sent English emails for two months and suddenly switches to German is an anomaly. Anomalies get filtered.
The fix is simple but easy to overlook:
- Warm up in the language your customers speak. If you sell in Germany, your warm-up emails need to be in German. If you sell in France, they need to be in French. If you sell in multiple countries, your warm-up pool should reflect that mix.
- Don't mix languages on the same domain. If your German customers get German campaigns, warm up that domain exclusively in German. If you need English campaigns for a different market, use a different secondary domain and warm it up in English. One domain, one language, one clean reputation signal.
- Time zone matters too. If your customers are in Berlin, your warm-up sends should follow Berlin business hours. Sending at 3am local time doesn't get opened, and unopened emails don't build reputation.
Warming up in the wrong language doesn't just waste time. It confuses the algorithm. The ESP builds a profile of your domain based on the language patterns it observes. When that profile doesn't match the actual campaigns you send later, the mismatch itself becomes a spam signal. And it lingers, the algorithm doesn't forget the switch overnight.
9. FAQ
Do I really need a secondary domain if I only send a few campaigns a month?
Yes. Low volume doesn't protect you from spam filters. In fact, low-volume senders with no warm-up history are often treated more suspiciously, the ESP has less data to judge you on, so it defaults to stricter filtering. A $10 secondary domain with consistent warm-up fixes this.
Won't Klaviyo and Shopify handle deliverability for me?
They handle the sending infrastructure, not your reputation. Their shared IPs and domains send millions of emails a day from thousands of stores. If one store on that shared pool gets flagged for spam, it affects everyone. Your own domain, properly warmed up, isolates you from other people's bad behavior.
How long does it take to see a difference in deliverability?
A new secondary domain with consistent warm-up starts showing deliverability improvements in about two to three weeks. Full reputation, where the ESP treats you as a trusted sender, takes 4 to 8 weeks. Start now, before your next big campaign.
Can I just add more text to my campaigns instead of changing my whole setup?
Adding text helps. It improves your image-to-text ratio and makes individual emails look less like spam. But it doesn't fix the underlying problems: the send-only pattern, the volume spikes, and the lack of domain warm-up. Text is a band-aid. The other fixes are the cure.
What if I sell in multiple countries?
Use one secondary domain per language market. Warm up each domain in its target language. A German-speaking audience gets emails from your German-warmed domain. An English-speaking audience gets emails from your English-warmed domain. This keeps the language signal clean for each domain.
Do I need to warm up if I only send transactional emails?
Transactional emails, order confirmations, shipping updates, have an easier time landing in inboxes because they're expected. But they still benefit from a properly configured and warmed domain. And realistically, if you're running a store, you're sending more than just transactional emails eventually. Set it up right from the start.
Is this really why my email campaign ROI dropped?
If your open rates have been declining month over month despite no changes to your content or list, deliverability is the most likely culprit. ESPs have been tightening spam filters aggressively since 2024. What worked two years ago, blasting image-heavy newsletters from a shared platform domain, doesn't work today. The rules changed. Your setup needs to change with them.
Warm up your ecommerce sending domain the right way
InboxGym handles warm-up in your customers' language and time zone, keeps your sending volume steady year-round, and monitors SPF, DKIM, and DMARC across every domain you connect. Unlimited domains, free forever.
No credit card. Unlimited domains.