A Shopify store owner ships a test order on Monday, watches the confirmation land in Gmail Primary, and ticks the box. Three weeks later a real customer messages support: "I never got the confirmation". You check the logs — Shopify says "Sent". The customer checks Gmail — nothing in Primary, nothing in Promotions, nothing in Spam. It is gone.
Shopify order confirmations are transactional by any reasonable definition, but mailbox providers do not just look at intent. They look at how the mail was sent, who signed it, and what the template looks like. Get any of those wrong and a confirmation gets treated like a bulk newsletter — or worse, like a phishing attempt.
Shopify sends by default from no-reply@shopifyemail.com with your store name in the From display. That is fine for authentication, but it breaks brand trust and often triggers Promotions. The fix is a custom sender domain with SPF, DKIM and a DMARC policy that you actually own.
Why Shopify orders land in Promotions
Gmail's Promotions tab is not a punishment — it is a category. But a missed confirmation there feels as bad as spam, because customers never think to look. Three signals push Shopify's default template into Promotions:
- Heavy image template: the stock Shopify order template is built like a marketing email (logo band, product thumb, big CTA, footer with shop links). Gmail's classifier treats that as promotional structure, regardless of intent.
- Shared sender domain: when many stores send from the same
shopifyemail.comenvelope, mailbox providers treat the domain reputation as an average — and the average includes every low-trust shop using the platform. - Mixed content: upsell blocks, "you may also like" product grids, and subscribe-to-newsletter footers are classic Promotions triggers. Even one of them in a confirmation tells Gmail this is marketing.
Sender domain alignment
The single highest-impact change is moving away from shopifyemail.com as the sending domain. Shopify supports this through the Sender email setting in Settings → Notifications, but there is a catch: simply changing the address does not change the envelope. You have to authenticate.
Shopify publishes the DNS records you need — SPF include, two DKIM CNAMEs, and an optional DMARC record. Until all three verify green in the admin, Gmail will still display the "via shopifyemail.com" disclaimer and Outlook will continue to apply low-trust filtering.
DNS checklist
- Add the Shopify SPF include to your domain's SPF record. Shopify's admin gives you the exact value, usually something like
include:shops.shopify.com. Do not create a second SPF record — merge into the existing one. - Add the two DKIM CNAMEs Shopify provides. They look like
shopify1._domainkeyandshopify2._domainkey. Both must resolve. - Publish a DMARC record at
_dmarc.yourstore.com. Start withp=noneand aruaaddress so you can watch alignment without blocking mail. - In Shopify admin, click Authenticate. Wait for all three rows to turn green. If one stays yellow, the DNS has not propagated — give it an hour.
Stores already using Mailchimp, Klaviyo or Google Workspace often have an SPF record at the 10-lookup limit. Adding Shopify's include pushes it over and SPF silently fails. Use an SPF flattener, or drop an unused include before adding Shopify.
Transactional template redesign
Once authentication is green, the template itself becomes the next ceiling. A truly transactional email looks nothing like a Shopify default theme. Aim for the following shape:
- Plain-text-first layout: one-column, under 600px, mostly text. Order number, items, total, shipping address, ETA. That is it.
- One image maximum: a small logo at the top is fine. Product thumbnails inflate image-to-text ratio and push into Promotions.
- No promotional blocks: remove the "you may also like", newsletter signup, discount-for-next-order elements. Put those in a separate post-purchase flow through Klaviyo or Shopify Email if you want them.
- Reply-to is a real mailbox: a support@ address that a human actually reads. Gmail treats reply-to
no-reply@as a weak trust signal.
Custom domain sending
If your Shopify plan and region allow it, moving transactional mail to a dedicated relay (Postmark, SES, SendGrid Transactional) with your own domain gives the best outcome. The pattern:
Shopify notification → Flow / app webhook → Postmark
From: orders@yourstore.com
DKIM: aligned with yourstore.com
SPF: include:spf.mtasv.net
DMARC: p=quarantine; rua=mailto:dmarc@yourstore.comThis path is obviously heavier than toggling a setting, but for stores doing serious volume it is the only way to get both deliverability and a branded experience. Postmark in particular has a reputation for keeping transactional streams separate from marketing, which is exactly what Gmail wants to see.
Seed test before every template change
Do not push a new order template on a Friday and hope. Every time the template or sender domain changes, run a seed test across Gmail, Outlook, Yahoo and a few mailbox providers your customers actually use. A seed test shows you the real inbox placement — not what the ESP dashboard says, not what your own test order looks like.
In our tool you place an order against the seed addresses, and within 90 seconds you see which providers put it in Inbox, which in Promotions, and which in Spam. You also see the SPF, DKIM and DMARC verdict per provider, so if Outlook is the one rejecting, you know to look at the DMARC alignment rather than the template.
A native Shopify app is in private beta — schedule placement tests from your admin and alert on drops.