Blog · 05 Oct 2026

Why your shop's emails go to spam

Order confirmations that land in junk are the most common silent failure in self-hosted ecommerce. Here is the plumbing behind it, in plain language.

A shopper places an order, the money arrives, and the confirmation email goes nowhere they will ever look. No error, no bounce - it just lands in spam, or is dropped before it gets that far. The shop owner finds out weeks later, when someone asks where their receipt is.

This is probably the most common silent failure in self-hosted ecommerce, and it has a specific, fixable cause.

Mail servers do not trust you by default

Twenty years ago, any server could send email claiming to be anyone. The result was so much fraud that the large inbox providers now demand proof, and the proof has three parts, all published as DNS records on the sending domain:

A default WordPress install sends order emails through the web server's own mail() function with none of this in place. To Gmail, that message is indistinguishable from the forgeries it blocks millions of a day. Some of it lands in junk. A lot of it simply vanishes.

The usual fix, and its cost

The standard WooCommerce answer is a chain of extras: an SMTP plugin, an account with a transactional email provider, and an afternoon publishing DNS records you will never think about again until one breaks. It works, and tens of thousands of shops run exactly this - it is just one more piece of plumbing you own, and nobody tells you that you need it until mail has already gone missing.

How a hosted shop sidesteps it

Shops on Taberno send through a domain we maintain, with SPF, DKIM and DMARC published and monitored, from the moment they open. Each shop gets its own sending address, and replies go straight to the shop owner. There is nothing to sign up for and no DNS to publish.

When you want mail coming from your own domain instead - orders@yourshop.com on the emails your customers see - you add it in settings, publish the records we show you, and the switch happens when they verify. Until then, mail keeps sending from the working default, because the worst option is a gap.

If you run your own shop, test it the honest way

Do not send a test to your own address - you trust yourself, so it proves nothing. Instead:

  1. Order from your shop using a fresh Gmail address, and see where the confirmation lands.
  2. Put your domain into a free DMARC checker and see whether the three records exist at all.
  3. If you fix something, test again from a different fresh address - inbox providers remember earlier verdicts for a while.

An email that arrives is one of those features nobody praises and everybody assumes. It is worth an hour of anyone's time to be sure of it.