E-commerce7 min read

Shipping Notifications in Spam: "Where's My Order?"

The tracking email never arrives. The customer never sees the carrier handoff. Two days later they email support, call you, chargeback, or leave a one-star review. All preventable.

Shipping notifications are the single most-opened email category in e-commerce. Customers actively look for them. And yet they land in spam surprisingly often — more often than order confirmations, because the from-address frequently changes (carrier, 3PL, fulfilment vendor), the subject line contains tracking numbers that look template-generated, and the sending IPs are shared across thousands of small shops.

The result is a support call that follows a predictable script: "I ordered three days ago and haven't heard anything. Where is my package?" The order went out. The carrier picked it up. The tracking email fired. The customer never saw it.

Why shipping mail is filtered more than confirmations

  • Third-party sending identity. Many shops send confirmations from their own domain but let Shopify Shipping, ShipStation, or a 3PL send the tracking email from a different sender. Filters see this as an unrelated burst from a new party referencing the customer's recent purchase — high phishing prior.
  • Tracking URLs look suspicious. carrier-delivery.click?t=xZ8k2 is a textbook phishing pattern. Legitimate carriers use these URLs too, but filters cannot tell the difference.
  • Volume spikes. When you ship 500 orders on a Monday, the provider sees 500 nearly-identical emails from the same IP within minutes. Rate-based heuristics trigger.
The 2-day silent gap

If your tracking email lands in spam on Day 1 and the customer only checks order status on Day 3 when they call support, you have manufactured a negative experience out of a perfectly successful fulfilment. Placement is a customer-experience metric, not just a marketing concern.

Measuring actual placement for shipping mail

The test has to use the actual carrier handoff. Many shops test the confirmation email but never test the tracking email, because it is triggered asynchronously by the carrier system. Two ways to instrument it:

  1. Seed orders. Place real test orders with seed addresses at Gmail, Outlook, Yahoo, iCloud. Let them ship. Check where tracking mail lands.
  2. Forward carrier webhooks. Most carriers support shipping webhooks. Add a seed BCC at the tracking-email trigger step in your ESP so each tracking mail is mirrored to seed boxes without placing a full order.

Example webhook trigger

# Shopify "orders/fulfilled" webhook hits your backend:
POST /webhooks/shopify/fulfilled
{
  "order_id": 1234,
  "tracking_number": "1Z999AA10123456784",
  "tracking_url": "https://www.ups.com/track?t=..."
}

# Your handler sends the customer email AND a seed copy:
for seed in seeds.list(group='shipping-tracking'):
  email.send(
    to=seed.address,
    subject=f"Your order is on the way (tracking {tracking_number})",
    body=tracking_template(order_id, tracking_url)
  )

DNS fixes specific to shipping mail

If you let a 3PL or Shopify Shipping send on your behalf, authenticate them explicitly. Most shops never do this, which is the single biggest preventable reason tracking mail lands in spam.

  • Add the carrier to SPF. v=spf1 include:shops.shopify.com include:mail.yourshop.com ~all. Check the 10-lookup limit after adding.
  • Publish the carrier's DKIM selector. shopify1._domainkey.yourshop.com CNAME shopify1.dkim.shops.shopify.com. ShipStation, EasyPost, ShipBob all have equivalents.
  • Confirm DMARC alignment. If the carrier sends from noreply@shop.yourdomain.com and DKIM is signed by the carrier, you need adkim=r (relaxed) in DMARC or set up a dedicated signer.
Before you change anything

Run a placement test on the current tracking email. Screenshot results. Ship DNS fixes. Re-test in 24-48 hours. Compare. The provider reputation lag means DNS changes may take a few days to fully reflect.

→ Run the free Inbox Placement Test

Template hygiene

Tracking emails tend to be designed by the carrier, not by you. Override the template where possible:

  • Subject line. "Your order #1234 shipped — arriving Thu" reads human. "Tracking: 1Z999AA10123456784 — your shipment is in transit" reads robotic.
  • Preview text. Customise it; default carrier text is often generic enough to trigger filters.
  • Text version. Include the tracking link in plain text too, not just embedded in a button image.
  • From name. "Acme Shop Shipping" beats "notifications-prod-2" every time.

Close the loop with support

Tag support tickets with a "tracking not received" label. Cross-reference with weekly placement tests. If a placement drop on Gmail correlates with a ticket spike 48 hours later, you have a live signal to act on. Most e-commerce teams never wire this up because the data sits in three systems.

FAQ

Do customers actually check spam for shipping mail?

Power users do. Average consumers call or chargeback. The Nielsen Norman numbers show roughly 60% of consumers never check spam after a confirmed purchase.

Should I send tracking mail from my domain or the carrier's?

Your domain, with the carrier authenticated in SPF/DKIM. This keeps reputation on one identity and makes the customer see a familiar sender name.

What about proactive SMS for tracking?

Great fallback. But international SMS is expensive and has its own regulatory friction. Start by fixing the email placement first, then layer SMS for high-value orders.

How does this interact with delayed shipments and backorders?

If a tracking mail goes out for an item that is actually backordered, spam placement plus delay compounds. Instrument both placement and shipping SLA, and correlate.
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