Transactional emails going to spam: seven causes, in the order to check them.
A receipt or a password reset landing in spam is rarely a mystery once you know where to look. The causes below are ordered from the one most likely to be wrong to the one most likely to be slow, and each names the place in Notix where it shows up and the change that fixes it.
The seven causes.
Check them top to bottom. The first five are settings and can be fixed today; the last two are reputation and are fixed by sending better mail for long enough that the provider’s record changes.
| Cause | Why it sends you to spam | Where you see it in Notix | What to change |
|---|---|---|---|
| 1. No authentication, or DMARC that does not align | Without SPF and DKIM the receiver cannot tell your mail from a forgery, and Gmail and Yahoo now require both from every sender. A DMARC record whose policy the message fails is worse than none. | The domain page: each record has its own status and the domain is rechecked every six hours until every record resolves. The pre-send check blocks with domain_unverified when the from-domain is not verified. | Publish the DKIM and SPF records the domain page shows, add the suggested DMARC record at p=none, and send only from verified domains. |
| 2. A new domain with no history | Reputation is per domain. A domain that sent nothing last month is judged on authentication, content and the shared IPs it borrows, and a sudden burst from it looks like an attacker's. | The reputation card on the overview is empty or near zero for a new domain; bounces and complaints on the first sends move it fast. | Warm the domain: start with recipients who will open, grow volume over two weeks, keep transactional mail flowing throughout. |
| 3. Marketing and transactional mail from one domain | A campaign that draws complaints drags every password reset from the same domain down with it, because the provider scores the domain, not the message kind. | Complaints on the reputation card after a campaign, then bounces or spam placement on transactional mail from the same domain. | Verify a subdomain for marketing and keep receipts, codes and resets on another. Each verified domain gets its own DKIM key and its own history. |
| 4. Content and link signals | Links to a raw IP address, shortened links, a message that is one large image, spam-filter symbols in the subject, or a marketing message with no unsubscribe link are the signals filters weigh first. | The pre-send deliverability check: a raw-IP link and a missing unsubscribe link on marketing content block; a spam score of 10 or more blocks; the rest are warnings with a fix each. | Run the check on every template, fix the blocks, and treat the warnings as a review list before the send. |
| 5. A from-address on a free mailbox domain | Mail claiming to be from gmail.com or yahoo.com that did not come from those providers fails their DMARC policy outright. It is the fastest route to the spam folder there is. | The from-domain cannot be verified in Notix, so the send is refused before it leaves. | Send from a domain you own and have verified. A subdomain such as mail.yourcompany.com is enough. |
| 6. A complaint rate above Google's lines | Google's guidelines say to keep the spam rate below 0.10% and never to reach 0.30%. Between the two you are being watched; at three complaints in a thousand Gmail starts filtering, and it takes weeks of clean sending to recover. | The complaint rate on the reputation card, drawn against the limit, with a warning at 70% of it. Complained addresses appear on the suppression list with the reason COMPLAINT. | Send less, to people who asked, with an unsubscribe that is easier to find than the spam button. One-click unsubscribe headers go on every marketing and journey send for you. |
| 7. Mailing addresses that already bounced | A high hard-bounce rate tells the provider the list was bought, scraped or never verified. Each repeat bounce costs more than the first. | The suppression list: every hard bounce is added with the reason and the message that caused it, and a later send to it is recorded as SUPPRESSED rather than attempted. | Keep the list. Verify an imported list before the first send, and import your previous provider's suppressions so an old address is never tried again. |
The records behind cause 1 are on SPF, DKIM and DMARC. The thresholds behind cause 6, and what reputation is made of, are on email deliverability. The headers behind the unsubscribe half of cause 4 are on the List-Unsubscribe header.
Start from the symptom.
The pattern of where mail lands narrows the cause faster than checking everything.
| Symptom | Start with |
|---|---|
| Everything goes to spam, every provider | Cause 1 or 5. Check the domain page first; if the from-domain is not verified or is a free mailbox domain, nothing else matters yet. |
| Spam at Gmail only, fine elsewhere | Cause 6, then 2. Open Postmaster Tools for the domain and read the spam rate and reputation panels for the last 30 days. |
| Started after a campaign or an import | Cause 3 and 7. Look at complaints and bounces on the reputation card for that week, and at what the suppression list added. |
| One template goes to spam, the others do not | Cause 4. Run the pre-send check on that template and compare its findings with a template that lands. |
| Auth emails from Supabase or Firebase go to spam | Cause 1 and 5: the default sender is on the platform's own domain with your name on it. Point the platform's SMTP settings at Notix and a domain you verified. |
For auth mail from a platform, the settings are on the Supabase integration and its Firebase counterpart. For anything else, the pre-send check returns the findings with a fix each, and is the quickest first move when one template is the problem.
What Notix already does about each.
- Authentication. Verifying a domain generates its DKIM key and SPF record and rechecks them every six hours until they resolve; a send from an unverified domain is refused.
- Content. Campaigns and journeys cannot go out past a blocking finding of the deliverability check; the same check is an API call for transactional templates.
- Complaints and bounces. Both put the address on the suppression list on receipt, with the reason, and a later send to it is recorded as suppressed rather than sent. One list covers transactional and marketing mail.
- Unsubscribe. Every campaign and journey send carries the one-click
List-Unsubscribeheaders; an unsubscribed contact is refused at send time for marketing mail while receipts and codes still go out.
What stays yours is who you send to, how often, from which domain, and what the message says. That is also where most spam placement is decided.
Questions, answered.
Why are my transactional emails going to spam?
How do I stop my transactional emails going to spam?
Does Notix check my email before it sends?
Will a new domain always go to spam at first?
Is a spam complaint the same as an unsubscribe?
My Supabase or Firebase auth emails land in spam. Why?
Keep reading.
Email deliverability and sender reputation
What mailbox providers score, the complaint threshold that matters, warming a new domain, and the honest position on shared IPs.
LearnSet up SPF, DKIM and DMARC
The three DNS records a sending domain needs, what each one proves, and the one-click path when your DNS provider supports Domain Connect.
LearnCheck an email's deliverability before you send it
What a pre-send deliverability check looks at, the verdict and score it returns, and the four findings that block a send.
LearnThe List-Unsubscribe header
What one-click unsubscribe is, what Gmail and Yahoo require of bulk senders, and where Notix sets the headers for you.
IntegrationsSupabase
Auth emails through the relay or the Send Email Hook, app emails from an Edge Function, and why they land in spam.
NotixPricing
A free plan with no card, and Pro at $15 a month for 50,000 emails. Only sent volume is metered.
Run the pre-send check on the template that is landing in spam.
Verdict, score and findings with a fix each, from the API or the console.