Why Gmail sends your email to spam
Gmail decides per message, but most of the decision is about the sender. It checks whether the mail is authenticated as coming from the domain in the From address, and it looks at how its users have treated mail from that domain and IP before: opened, replied to, deleted unread, or reported as spam. A new domain has no history at all, which is why the first messages from a fresh setup are the ones most likely to land in spam.
1. Authenticate your domain with SPF, DKIM and DMARC
Since February 2024 Google requires every sender to have SPF or DKIM, and senders of more than 5,000 messages a day to Gmail to have both plus a DMARC record. Without them, Gmail rejects mail or files it as spam. DKIM matters most for transactional mail: sign as your own domain, so the signature aligns with the From address and passes DMARC.
- SPF: a TXT record listing the servers allowed to send for your domain.
- DKIM: a public key in DNS; every message is signed with the matching private key.
- DMARC: a TXT record at
_dmarc.yourdomain.com, starting atv=DMARC1; p=none;while you check reports, then tightened toquarantineorreject.
The SPF vs DKIM vs DMARC guide has the exact records. Check what you have published with the email DNS checker.
2. Send from a consistent address on your own domain
Use the same From domain and address for the same kind of mail every time, and never send from a free mailbox such as gmail.com through an API: the domain's DMARC policy will fail it. Many teams send transactional mail from a subdomain, which keeps its reputation separate from marketing mail - see sending email from a subdomain.
3. Keep the spam-complaint rate under 0.3%
Google asks senders to keep the user-reported spam rate below 0.3%, and recommends staying under 0.1%. Register your domain in Google Postmaster Tools to see the rate, your domain reputation and authentication results for mail sent to Gmail. Complaints come from mail people did not ask for or no longer want, so send only to people who signed up, and make it easy to stop.
4. Add one-click unsubscribe to non-transactional mail
Bulk and marketing messages to Gmail must carry List-Unsubscribe and List-Unsubscribe-Post headers (RFC 8058), so Gmail can show its own Unsubscribe button and honour it within two days. Receipts, password resets and other strictly transactional messages do not need it, but newsletters, digests and product updates do. A visible unsubscribe link is far better than the user reaching for Report spam.
5. Stop sending to addresses that bounce
Repeatedly mailing addresses that do not exist tells Gmail your list is not maintained. Treat a hard bounce as permanent and suppress the address; see how to handle email bounces.
6. Make the message itself look like what it is
- Send a plain-text part alongside the HTML.
- Link to your own domain rather than through URL shorteners.
- Keep the subject line honest and specific - "Your receipt for order #1042", not "Important!!".
- Avoid sending one large image with no text.