Gmail and Yahoo's bulk sender requirements: what passes, what fails, what nobody told you
If you send more than 5,000 messages per day to Gmail or Yahoo personal addresses, you have to pass a short list of checks. The list is short. The enforcement is uneven. Here is the operational guide your ESP did not give you.
In October 2023, Gmail and Yahoo announced new requirements for bulk senders. The rules took effect February 1, 2024, with a grace period that lasted through the spring. By late 2024, both providers were enforcing.
The threshold is 5,000 messages per 24-hour rolling window to a single mailbox provider's consumer addresses. Cross that line and the rules apply. Stay under it and they do not (although you should still meet them; they are good practice for any sender).
This is the operational view. What each rule means, how to test it, what fails enforcement, and the things the public announcements did not include.
The five rules
1. Authentication: SPF, DKIM, DMARC. SPF and DKIM must pass and align with the From domain. DMARC must be published with at least p=none. (For BIMI you need stronger; for these rules p=none is enough.) 2. One-click unsubscribe. Implement RFC 8058 List-Unsubscribe-Post in the headers. The mailbox provider triggers a POST to your unsubscribe URL when a recipient hits "unsubscribe" in their UI. No login screens. No preference centers. No "are you sure". 3. Spam complaint rate under 0.30%. As measured by the recipient mailbox provider, computed over your last 30 days of sending. 4. Reverse DNS (PTR record) on your sending IPs. Forward and reverse DNS must agree (the IP's PTR resolves to a name; that name's A record resolves back to the IP). 5. TLS at the connection level. Outgoing mail to Gmail and Yahoo must be sent over TLS 1.2 or higher.
That is the list. The rest of this post is what each one actually means in production.
Authentication, the alignment trap
The rule says SPF and DKIM must pass and align. "Align" is the trap.
SPF passes if the connecting IP is in the authorized list for the SMTP envelope sender's domain. DKIM passes if the body and signed headers verify against the public key. Either passing is enough for SPF or DKIM to "succeed" individually. DMARC also requires that whichever passed has a domain that matches the visible From: header.
Common failure pattern: you send through SendGrid. Your envelope sender is bounces.sendgrid.net. SPF passes for sendgrid.net. The From header says you@yourdomain.com. SPF passes, but does not align (sendgrid.net is not yourdomain.com). If DKIM also does not align, DMARC fails, and Gmail's enforcement triggers.
Fix: configure DKIM with your own domain selector at the ESP. Most ESPs support this and call it "branded sending domain" or "authenticated domain" or similar. Done right, your DKIM signature uses d=yourdomain.com and aligns to the From header.
Test: send yourself a message from your sending platform. View the message source. Look at the Authentication-Results header. You want spf=pass, dkim=pass, dmarc=pass. If you see dmarc=fail (policy=none), your alignment is broken and the only reason it is not in spam is your DMARC policy is not enforcing.
One-click unsubscribe: what it is, what people do wrong
The header pair you must include:
List-Unsubscribe: <mailto:unsubscribe@yourdomain.com>, <https://yourdomain.com/u/abc123>
List-Unsubscribe-Post: List-Unsubscribe=One-ClickWhen Gmail or Yahoo see both headers, they show a one-click unsubscribe link in their UI. When the user clicks it, the mailbox provider POSTs to the URL with List-Unsubscribe=One-Click in the body. Your server is expected to immediately remove the recipient from sending lists.
What goes wrong:
- The URL requires login. The mailbox provider's POST is anonymous. If your unsubscribe URL throws a 302 to a login page, it fails.
- The URL leads to a preference center with checkboxes. The user clicked "unsubscribe" once. Do not ask them to click ten more times. If they want preferences, they will find them on their own.
- The endpoint is rate-limited too aggressively. Gmail and Yahoo POST at scale. Your endpoint should accept anonymous POSTs at high concurrency.
- The unsubscribe does not take effect quickly. If the next send goes out before the unsubscribe is processed, the recipient sees they unsubscribed but got mail anyway, and they hit the spam button instead.
Test: send yourself a message. In Gmail, click the gear icon and unsubscribe. Watch your server logs for the POST. Verify the recipient was removed from the next send within minutes.
The 0.30% complaint rate threshold
Spam complaints are tracked per mailbox provider in their feedback loop. Gmail surfaces them in Gmail Postmaster Tools. Yahoo aggregates and surfaces them through Yahoo Sender Hub.
The math: if you send 100,000 emails to Gmail in a day and 300 recipients hit "Mark as spam", that is 0.30%. One more complaint and you are over the line.
The trigger threshold is the 30-day rolling spam rate. A single bad campaign will not tank you immediately, but a string of them will.
What pushes complaint rate up:
- Sending to non-engaged subscribers. People who have not opened in 90 days are far more likely to complain than to unsubscribe. Sunset them or move them to a low-frequency list.
- Misleading subjects. "Your account has been suspended" for a marketing email is a complaint engine.
- Forgotten consent. Anyone who signed up four years ago and got nothing for three years and a flood now: many will not remember signing up. Spam button.
- Too-frequent sends. Daily emails on a list that signed up for a weekly newsletter.
- Buying or scraping lists. Do not.
What helps:
- Active list hygiene. Segment by engagement. Send less to disengaged.
- Clear From name. Recipients should recognize the brand at a glance.
- Sunset old subscribers proactively. A "we will stop emailing you unless you click this" message at six months is cheaper than a deliverability rebuild.
PTR records and TLS
These two are usually handled by your ESP, but worth knowing if you run your own infrastructure.
PTR record: every IP you send from must have a reverse DNS entry. The cleanest pattern: mail-out-1.yourdomain.com resolves to your IP, and the IP's PTR is mail-out-1.yourdomain.com. Tools like mxtoolbox.com show both directions in one query.
TLS: Gmail and Yahoo refuse non-TLS connections from bulk senders in 2024 onward. Your SMTP banner negotiation must support STARTTLS, and your cert must be valid. Most issues here come from expired certs (renewal forgotten) or self-signed certs on a relay.
What happens when you fail
The enforcement is not a binary cliff. The published curve and what people see in practice:
- Below threshold but failing: warnings in Postmaster Tools, occasional bulk-folder delivery.
- Slightly above threshold (e.g., 0.4%): noticeable inbox-vs-spam shift. Open rates drop a few points.
- Well above (>0.5%): bulk routing. The majority of your mail goes to Gmail's spam folder. Recovery takes weeks of clean sending plus aggressive list cleanup.
- Egregious or repeated (>1% complaint rate, sustained): outright rejection at SMTP. Mail bounces with 421 or 550 codes, recipients never see it.
Yahoo's enforcement is more lenient than Google's in practice. Both are far less lenient than the pre-2024 era.
What is not in the announcement but matters
The threshold is per-day, but enforcement watches your trend. Crossing 5,000 once does not trigger anything. Sustained sending above the threshold over multiple days flips you into "bulk sender" status and the rules apply.
Subdomains do not let you split your way out. If you send 4,000/day from mail.yourdomain.com and 4,000/day from news.yourdomain.com, your shared organizational domain in DMARC is what is tracked. Adversarial subdomain segregation is not a workaround.
One-click unsubscribe does not replace a body link. The headers serve mailbox-provider UI. The body link serves human eyeballs. You need both. Removing the body link to "encourage people to use the header version" is silly and hurts.
Gmail Postmaster Tools requires DMARC. The dashboard that shows complaint rate, IP reputation, and domain reputation only populates for domains that have published DMARC. Sign up before you have a problem.
Yahoo's Sender Hub is newer. It launched in 2024 alongside the requirements. The data lags Gmail's by a day or two. Use it; do not rely on it as your only signal.
Microsoft is following but slower. Outlook.com and Microsoft 365 have not yet rolled out the same enforcement bar. Public statements suggest similar requirements are coming. Plan for it.
The pre-flight checklist
Before your next bulk send, walk through:
- DMARC published at
p=quarantineminimum,pct=100. - DKIM signing with your own domain (
d=yourdomain.comin the signature). - SPF includes only the senders you actually use.
- A test message to your own Gmail shows
dmarc=passin headers. - List-Unsubscribe and List-Unsubscribe-Post headers present.
- The unsubscribe URL accepts anonymous POSTs.
- Your sending IPs have valid PTR records.
- Postmaster Tools and Sender Hub are configured and you have read them in the last week.
- Your 30-day complaint rate is under 0.20% (give yourself headroom).
Get all nine right and you are far ahead of where most senders sit in 2026.
TL;DR
- Threshold: 5,000 messages/day to Gmail or Yahoo consumer addresses.
- Authenticate with SPF, DKIM, and DMARC. Alignment is the rule that catches most senders.
- One-click unsubscribe via List-Unsubscribe-Post. The endpoint must accept anonymous POSTs without auth.
- Spam complaint rate under 0.30% over 30 days, per provider.
- PTR records and TLS, both at connection-level.
- Sign up for Gmail Postmaster Tools and Yahoo Sender Hub before you need them.
- The threshold is per organizational domain, not per subdomain.