E-commerce7 min read

Abandoned Cart Emails: Are They Even Reaching Inbox?

Klaviyo, Shopify Email, Omnisend — they all show you a beautiful open-rate chart on the cart recovery flow. The chart does not tell you that 40% of those messages landed in Promotions, where nobody looks.

Cart recovery is the single highest-ROI email automation in e-commerce, which is why every agency deck quotes the same 10-15% recovery number. That number assumes the email reaches the customer in a place they will actually see it.

In practice, abandoned-cart email is designed as marketing: hero image of the product, big discount code, prominent CTA button, big footer. It lives in the marketing ESP. It ships from the marketing subdomain. Gmail classifies it as promotional and routes accordingly. The "recovery rate" you see in your reports is real, but it is a fraction of what would be possible if the mail actually landed in the primary inbox.

The Promotions-tab trap

  • Gmail Promotions is the default destination. If your subdomain is mail.yourshop.com, with no per-recipient engagement history, and the template has a hero image plus discount code, Gmail files it in Promotions by design.
  • Open rate hides the problem. Promotions-tab messages still get opened — by users who actively click the Promotions tab. Your overall open rate reads as 28%, but your primary-inbox open rate may be 45%.
  • Conversion rate suffers disproportionately. A user who opens mail from Promotions is in a different mental mode than one who sees it in primary inbox. Recovery conversion drops even faster than open rate.
The real baseline

Before you optimise subject lines, test the structural placement of the email first. Moving the same message from Promotions to primary inbox typically lifts conversion by 50-80% without touching copy.

Measuring cart-recovery placement

Trigger an actual abandoned-cart flow against seed mailboxes. Shopify and most ESPs let you fire the flow for a specific customer without placing a real order:

# In Klaviyo, add seeds to a profile and trigger the flow:
klaviyo:trigger_flow \
  --flow-id abandoned-cart-v3 \
  --profile-emails \
    "seed-gmail-01@check.live-direct-marketing.online,\
     seed-outlook-01@check.live-direct-marketing.online,\
     seed-yahoo-01@check.live-direct-marketing.online"

# Then check placement across providers:
curl "https://check.live-direct-marketing.online/api/check/status/$TEST_ID"

# Look at:
# - inbox vs promotions vs spam per provider
# - which step in the sequence drops (step 1 may inbox, step 3 may spam)

Fixes by mechanism

  1. Move to Updates / primary inbox, not Promotions. Classification signals Gmail uses: plain-text-heavy body, transactional tone, no discount code in subject, low image-to-text ratio. Cart recovery can read more like a receipt ("You left these items in your cart") than a promo.
  2. Separate cart flow from marketing on subdomain. cart.yourshop.com. Warm it separately. Its reputation is per-recipient high because cart-abandoners have recent brand engagement — leverage that by isolating from general promo IPs.
  3. Fix the trigger timing. Day-1 cart recovery has highest engagement and best placement. Day-4 message from the same sender may trip frequency heuristics. Stagger sends per recipient.
  4. Personalise the body with item names. Emails that include product names customers just viewed have much higher engagement, which feeds back into improved placement over time.

Template that fights Promotions tab

Reference template that has consistently shipped to primary inbox on Gmail when sent from a warmed transactional subdomain:

Subject: The {{product_name}} you looked at is still in your cart

Hi {{first_name}},

Just a reminder that you left this in your cart yesterday:

  - {{product_name}} ({{variant}})
  - Quantity: {{qty}}
  - Price: {{price}}

If you still want it, here's the link to pick up where you left off:
  {{checkout_url}}

We hold carts for 7 days, so there's no rush.

If you had a question or ran into a problem at checkout, reply to
this email — it goes straight to our support team.

--
{{founder_name}}
{{shop_name}}
{{physical_address}}

No discount in the first message. No hero image. One link. Founder signature. Reads like a human nudge. Gmail classifies this as an update more often than a promotion.

Discount escalation belongs later

If you want to offer 10% off, do it in message 2 or 3, not in message 1. Discount codes in the first cart-recovery email both train customers to abandon (to get the code) and shift the classification firmly into Promotions.

Reading the data that matters

Your ESP's "open rate" for the flow is meaningless in isolation. Break it down by:

  • Placement per provider (Gmail, Outlook, Yahoo, Apple).
  • Conversion rate per placement (inbox vs promotions vs spam).
  • Sequence step (step 1 may land well, step 3 may not).
  • Time-of-day send (weekend sends from a marketing subdomain usually land worse).

The pair you care about is primary_inbox_pct * conversion_given_inbox. Both numbers matter, and both are hidden in default ESP dashboards.

Measure before any copy test

Before you A/B test subject lines or discount amounts, A/B test placement. A 20-point lift in primary inbox placement dominates any copy tweak you can run.

→ Run the free Inbox Placement Test

FAQ

Isn't Promotions fine for cart recovery since users expect promos?

Users in buying intent state (abandoned a cart 15 minutes ago) convert 3-5x better in primary inbox than in Promotions. Promotions is fine for general announcements; cart recovery is too time-sensitive.

Should I send cart recovery from the shop owner's personal email?

It works for very small shops, but doesn't scale past a few hundred recoveries per week. Use a dedicated cart subdomain with a founder-style template instead.

Does Klaviyo / Omnisend deliverability differ?

The sending infrastructure is solid at both. The differentiator is how you configure your subdomain, DMARC alignment, and template. Both can land in Promotions or primary inbox depending on setup.

How often can I send cart recovery mails?

Three messages over 7 days is the upper bound that most filters will tolerate without triggering frequency heuristics. Past that, your domain reputation starts to erode for the recipient even if individual emails are technically opt-in.
Related reading

Check your deliverability across 20+ providers

Gmail, Outlook, Yahoo, Mail.ru, Yandex, GMX, ProtonMail and more. Real inbox screenshots, SPF/DKIM/DMARC, spam engine verdicts. Free, no signup.

Run Free Test →

Unlimited tests · 20+ seed mailboxes · Live results · No account required