Fix Shopify emails going to spam

Shopify mail fails in a way that is specific to Shopify. If the domain behind your sender address is not authenticated, Shopify rewrites the From address to store+123@shopifyemail.com, and until then inboxes show your address with via shopifyemail.com after it. This guide covers the CNAME records Shopify asks for, the DMARC record its automatic setup does not create, and the split between the notification path and the Shopify Messaging marketing path.

Why Shopify emails land in spam.

01

Your sender domain is not authenticated, so Shopify signs the mail

Until you authenticate, Shopify sends on your behalf from its own infrastructure, and its documentation states that an unauthenticated domain displays in inboxes as your chosen sender address with via shopifyemail.com after it. Since the Gmail and Yahoo requirements took effect on 1 February 2024, an address that cannot meet them is rewritten outright to store+123@shopifyemail.com so the mail can still go out. Your brand leaves the From line, and every reputation signal on the send accrues to Shopify's domain rather than yours. Authenticating the domain is what removes the via label.

02

You added the CNAME records but never published DMARC

Add it yourself as a TXT record on the _dmarc host at whichever DNS provider serves your domain. Shopify's in-admin route (Settings > Domains, select the domain, then DNS settings > Manage > Add custom record > TXT record) exists only for Shopify-managed domains, and domains bought through Shopify already get DKIM, SPF and DMARC configured automatically.

03

Your DMARC record uses strict alignment, or there are two of them

A record containing adkim=s or aspf=s forces strict alignment, and Shopify tells you to remove those tags or change them to adkim=r and aspf=r.

04

Your sender address is on gmail.com or yahoo.com

Shopify is blunt about this case: if your sender email uses a provider such as name@gmail.com or name@yahoo.com, you do not have access to those providers' DNS records, so the domain can never be authenticated. Shopify documents that such an address may display as youremailaddress@gmail.com via shopifyemail.com. No setting inside the admin fixes it. Use a domain you control, create an address on it, and set that as the sender email in Settings > Notifications.

05

You authenticated for your marketing app and forgot the receipts

Moving campaigns to Klaviyo, Omnisend or Mailchimp does not move your order confirmations, shipping updates or refund notices. Shopify keeps sending those, and its documentation notes that most customer notifications cannot be deactivated. They use the sender email in Settings > Notifications and need Shopify's own CNAME records, which are entirely separate from your marketing app's branded sending domain. Customers then get clean branded campaigns and via shopifyemail.com receipts from the same store.

06

A preselected checkout checkbox filled your list with non-subscribers

Shopify lets you preselect the email marketing consent checkbox at checkout for regions you choose, under Settings > Checkout > Marketing opt-in. Buyers who never intended to subscribe land in the Email subscribers segment and later mark campaigns as spam. Shopify's own delivery guidance cites the Gmail and Yahoo ceiling of 0.3% spam complaints and recommends staying below 0.1% to avoid filtering. Turn preselection off or narrow the regions, and lean on the newsletter form and double opt-in instead.

How Shopify authenticates your mail.

Shopify never asks you to add its IP addresses to an SPF record. Everything hangs on CNAME records published on the domain of your sender address, plus a DMARC record you have to add yourself. Both pieces are required: the CNAMEs alone still leave you rewritten.

record default the problem the fix
Sender email The address in Settings > Notifications is what customers see on notifications, order confirmations and marketing mail. Its domain is unauthenticated unless you bought the domain through Shopify, in which case authentication is configured for you. An unauthenticated domain means Shopify rewrites the From address to store+123@shopifyemail.com, and before that point the inbox shows via shopifyemail.com beside your store name. Set the address in Settings > Notifications, then click authenticate your domain and publish every record shown. The records belong to the domain of the sender address: for info@johns-apparel.com they go on johns-apparel.com.
DKIM Shopify signs with its own domain until you publish the CNAME records it generates, so the DKIM d= domain is Shopify's rather than yours. The signing domain never matches your From domain, so DMARC alignment cannot pass on your domain and the send carries Shopify's reputation instead of the one you are trying to build. In Settings > Notifications, click authenticate your domain and copy every CNAME into your DNS host. Shopify says the number of records may vary and that you must add all records displayed in the modal, so add all of them. Changes can take up to 48 hours.
SPF There is nothing separate to add. Shopify states that the CNAME records you publish during domain authentication handle SPF automatically for your sender address. Merchants who paste a Shopify include into their root SPF TXT record gain nothing, and every extra include spends part of the 10 DNS lookup budget that SPF allows before it fails permanently for all of your senders. Leave the SPF TXT record for your mailbox provider alone and do not add a Shopify include. If you already added one, remove it and confirm the record still resolves within 10 lookups.
DMARC Not created for you. Automatic authentication sets up the CNAME records for DKIM and SPF but does not configure a DMARC record, so most stores have none. With no DMARC record, or a broken one, Shopify rewrites your sender address even when the CNAMEs are correct. Strict alignment via adkim=s or aspf=s and duplicate DMARC TXT records both count as broken. Publish exactly one TXT record at _dmarc with at least v=DMARC1; p=none, and either drop the alignment tags or set them to adkim=r and aspf=r. On a third-party domain you add this at your own DNS host. On a Shopify-managed domain you can do it in the admin: Settings > Domains, select the domain, then DNS settings > Manage > Add custom record > TXT record.

Once you have updated these records, confirm they pass with Unspam's free SPF checker, DKIM checker, and DMARC checker.

How to test a Shopify campaign with Unspam.

Shopify has two mail paths with two different test buttons, and one of them cannot reach a seed address at all. Shopify's documentation says the Send test email button on a notification template sends to the account you used to log in to the Shopify admin. So the notification path has to be tested with a real order.

  1. 01

    Get your Unspam seed address and Test ID

    Start a free spam test or an inbox placement test in Unspam and copy the seed address it generates. A placement test delivers to seed mailboxes at Gmail, Outlook, Yahoo and five other providers and reports where each copy landed. An inbox placement test also issues a Test ID. Paste it into the subject line or the body before you send, or the message reaches the seed mailboxes and is never matched to your test.

  2. 02

    Decide which Shopify path you are testing

    Order confirmations, shipping updates and refunds come from the notification templates in Settings > Notifications. Campaigns and automations come from Shopify Messaging, the product previously called Shopify Email. Shopify's own pages label the entry point two ways, Apps > Messaging on the campaign documentation and Apps > Shopify Messaging on the app setup page, so expect either in your admin. Both paths use the same sender email, but the templates, the audience filters and the test tooling are different, so test the path your customers are actually complaining about.

  3. 03

    Marketing: send a campaign test to the seed address

    Put the Test ID in the campaign subject line, then go to Apps > Messaging, open the campaign and click Send test. The Email addresses field accepts up to five addresses entered one at a time, so add the Unspam seed address there and send. Use the campaign you are worried about rather than a fresh draft, so the real template and links are what gets scored.

  4. 04

    Notifications: place a real order to the seed address

    Because Send test email only reaches your own admin login address, place a real test order using the Unspam seed address as the customer email instead, and let the Order confirmation fire on its own. To carry the Test ID, temporarily paste it into the Email subject under Settings > Notifications > Customer notifications > Order confirmation > Edit code, then revert the template once the test is matched.

  5. 05

    Read the results in Unspam

    Check the spam score and the SPF, DKIM and DMARC results on the live send. The DKIM domain should be your own domain, not shopifyemail.com, and the From address should be your sender email rather than store+123@shopifyemail.com. Then read placement per provider, the client previews and the heatmap. If the rewrite is still on the From line, either DNS has not finished propagating or a DMARC problem is unresolved.

The same test renders your campaign in 50+ real email clients, Gmail, Outlook, Apple Mail, iPhone, and Android among them, each in light and dark mode, via email client previews, so you confirm placement and rendering in one pass.

Shopify features that quietly affect delivery.

The notification test email only reaches your own admin address

Shopify's documentation states that the test email is sent to the account you used to log in to the Shopify admin, so you cannot point it at a seed mailbox. Whatever it tells you is a fact about your own mailbox, usually one that already trusts the store, not about how a stranger's Gmail treats the message. Use a real order to a seed address for anything you plan to act on.

Deleting the CNAME records silently reverts your From address

If the records are removed, or a DNS host drops them during a registrar migration, Shopify resets your sender address to store+123@shopifyemail.com so that mail keeps flowing until the records are restored. Shopify also warns that removing the CNAME records you added during authentication can cause deliverability issues, including bounces. The rewrite itself is silent, so the first sign is often a customer asking who shopifyemail.com is. Re-check Settings > Notifications after any DNS, registrar or theme migration.

Smart delivery quietly trims who actually receives the campaign

Under Apps > Messaging > Settings > Delivery, Smart delivery filters the campaign audience down to engaged subscribers once a send list passes 1,000 subscribers; at 1,000 or fewer it does nothing even when enabled. Bot filtering and List health run on every send and cannot be turned off, removing bot signups and anyone who bounced, unsubscribed or complained. Your sent count will be lower than your segment size by design.

A DMARC protected sender can surface as no-reply@shopifyemail.com

Shopify documents that if your sender email address is DMARC protected, your address may display in inboxes as no-reply@shopifyemail.com, with customer replies forwarded on to your chosen sender address. Customers see a Shopify address on a store that otherwise looks fully branded, and replies drop off. Completing domain authentication on the sender domain is what stops it.

What real Shopify senders run into.

The deliverability problems Shopify senders hit most often, each with the fix that resolves it.

Customers keep telling me my order confirmations look fake. The From line says store+66295627989@shopifyemail.com and a few of them reported it as phishing.

That address is Shopify's fallback. When the domain behind your sender address cannot meet the Gmail and Yahoo authentication requirements, Shopify rewrites the From address to store+123@shopifyemail.com so the notification still gets delivered. It is not a compromise or a bug, it is the documented degraded mode, and it looks exactly like the kind of mismatch customers are trained to report.

The fix Go to Settings > Notifications, click authenticate your domain, and publish every CNAME record in the modal. Then add a single TXT record at _dmarc with v=DMARC1; p=none. Allow up to 48 hours, then re-check the sender email section and send a real test order to confirm the From line.

I added all the CNAME records three days ago and Shopify still says my domain isn't authenticated.

Two things usually explain it. Shopify's documentation warns that the number of records may vary and that you must add every record displayed in the modal, so a partial set never validates. Separately, many DNS hosts append your domain to whatever you type in the host field, which turns a pasted full hostname into something like shopifyemail.mystore.com.mystore.com and silently breaks the lookup.

The fix Re-open the authenticate your domain modal and compare it record for record against your DNS zone. Check whether your host wants the bare label or the full hostname, and resolve each CNAME to confirm it answers. If your domain is on Cloudflare, GoDaddy or IONOS, delete the manual records and use Shopify's automatic option instead.

We moved marketing to Klaviyo and authenticated a sending subdomain there, but our Shopify receipts still say via shopifyemail.com.

Those are two independent sending systems that happen to serve one brand. Klaviyo's branded sending domain authenticates Klaviyo's campaigns only. Shopify's order confirmations, shipping updates and refund notices never touch Klaviyo, and most of them cannot be turned off, so they keep going out under the sender email in Settings > Notifications with whatever authentication that domain has.

The fix Authenticate the Shopify path as well: Settings > Notifications, authenticate your domain, publish the CNAMEs, and make sure one DMARC record covers the domain. Then test both paths separately, a Klaviyo campaign send and a real Shopify order, because a pass on one says nothing about the other.

I set up DMARC properly with strict alignment like the hardening guide said, and Shopify immediately stopped using my sender address.

Strict alignment demands an exact match between the From domain and the authenticated domain, with no subdomain tolerance. Shopify's documentation specifically says not to include adkim=s or aspf=s and to use adkim=r and aspf=r instead, because its sending path cannot satisfy strict alignment. When validation fails, the sender rewrite kicks in.

The fix Edit the _dmarc TXT record to adkim=r and aspf=r, or drop both tags, since relaxed is the default when they are absent. Confirm you have exactly one DMARC TXT record, because duplicates fail validation on their own. Then re-check the sender email in Settings > Notifications.

My campaign reports say it sent to about 4,000 people but the segment I picked has 9,000. Where did the rest go?

Three filters run between your segment and the send. Smart delivery narrows the audience to engaged subscribers once a send list passes 1,000 subscribers. Bot filtering removes bot-generated signups, and List health removes anyone who bounced, unsubscribed or filed a spam complaint. The last two run on every send and cannot be turned off.

The fix Open Apps > Messaging > Settings > Delivery to see which filters are active and toggle Smart delivery if you deliberately want the wider audience. Treat the gap as list quality data rather than a reporting error: a 9,000 person segment that resolves to 4,000 deliverable, engaged addresses is telling you where your complaint risk lives.

Shopify deliverability, answered.

Why does Gmail show via shopifyemail.com next to my store name?

The domain behind your sender address has not been authenticated, so Shopify is sending and signing on your behalf and Gmail labels the mismatch. Shopify's documentation says authenticating your domain removes the via shopifyemail.com. Go to Settings > Notifications, click authenticate your domain, publish every CNAME record shown, and add a DMARC record separately.

Do I need to add Shopify to my domain's SPF record?

No. Shopify states that the CNAME records added during domain authentication handle SPF automatically for your sender address, and that no separate SPF TXT record is required for this purpose. Adding an include changes nothing and consumes part of the 10 DNS lookup budget SPF allows. Leave the SPF record your mailbox provider needs exactly as it is.

I published the CNAME records but my From address is still store+123@shopifyemail.com.

Three causes account for most of these. DNS changes can take up to 48 hours, so it may simply be early. The record set may be incomplete, since Shopify warns the number of records varies and you must add every one shown in the modal. Or DMARC is the blocker: no record at all, more than one DMARC TXT record, or strict alignment set with adkim=s or aspf=s.

Is it Shopify Email or Shopify Messaging?

Shopify's email marketing product is now documented as Shopify Messaging, and the help center pages for Shopify Email now resolve under the Shopify Messaging section. The admin path is Apps > Messaging. The sender email and its domain authentication still live in Settings > Notifications and are shared with your customer notifications, so authenticating once covers both.

Can Unspam connect to my Shopify store and test notifications automatically?

No. Unspam does not integrate with Shopify's API and never connects to your store account. The only integration points are a seed address you send to and, for automated tests, SMTP credentials you supply. For Shopify that means adding the seed address to a campaign test or placing a real order to it, then reading the report.

I send marketing through Klaviyo, so do I still need Shopify's CNAME records?

Yes. Your marketing app authenticates only its own sends. Shopify still issues order confirmations, shipping updates and refund notices, and most customer notifications cannot be deactivated. Those go out under the sender email in Settings > Notifications and need Shopify's own CNAME records plus a DMARC record, or they keep showing the shopifyemail.com rewrite.

Shopify platform details were verified against publicly available documentation in August 2026 and may have changed since. Shopify is a trademark of its respective owner. Unspam is not affiliated with or endorsed by Shopify.

Test your next Shopify campaign before your subscribers do.