Sendry Docs
Deliverability

Bulk sender requirements

Gmail, Microsoft and Yahoo classify any domain sending roughly 5,000 messages a day to their users as a bulk sender, permanently. Here is what they require, and what Sendry checks for you before you cross the line.

Bulk sender requirements

Gmail treats any domain that sends roughly 5,000 or more messages a day to personal gmail.com accounts as a bulk sender. Microsoft enforces the same 5,000-a-day threshold for outlook.com, hotmail.com and live.com, and Yahoo runs an equivalent policy.

Two things make this worth planning for rather than discovering:

  1. The classification is permanent. Once a domain has been seen sending at bulk volume, it keeps the bulk sender label even if volume drops afterwards.
  2. Non-compliant bulk mail is rejected, not filtered. Gmail returns an SMTP error such as 550-5.7.26 at the connection, so the message never reaches a spam folder where you might notice it. Your bounce rate spikes instead.

The threshold counts recipients, not messages: one send to 30 gmail.com addresses counts as 30.


What the providers require

RequirementDetail
SPFThe sending domain must publish SPF and the mail must pass it.
DKIMEvery message must carry a valid DKIM signature.
DMARCThe From domain must publish a DMARC record. p=none is the minimum accepted policy.
AlignmentThe From domain must align with either the SPF return path domain or the DKIM d= domain. Passing SPF and DKIM without alignment still fails DMARC.
One-click unsubscribeMarketing and subscribed mail must include RFC 8058 List-Unsubscribe and List-Unsubscribe-Post headers, and the unsubscribe must be honoured within two days.
Visible unsubscribeA clearly visible unsubscribe link in the message body, in addition to the header.
Spam complaint rateMust stay under 0.3% as reported by Gmail Postmaster Tools. Treat 0.08% as the real operating target: above it, throttling starts long before the hard limit.
Valid PTR / forward-confirmed reverse DNSThe sending IP must have matching forward and reverse DNS.
TLSConnections must use TLS for transmission.
RFC 5322 formattingWell-formed headers, no impersonation of Gmail From headers.

Microsoft's requirements mirror Gmail's: SPF, DKIM, DMARC with at least p=none, alignment, functional unsubscribe, and valid reverse DNS. Microsoft began routing non-compliant bulk mail to Junk before moving to outright rejection, so a domain can look "fine" in delivery stats while its inbox placement is already gone.


What Sendry checks for you

Sendry watches your trailing 24-hour volume per verified domain, split by mailbox provider group, and warns you before you cross the line rather than after.

  • Volume by provider. Every recipient of every sent message is bucketed into Google, Microsoft, Yahoo or other, including country variants such as outlook.co.uk, hotmail.fr and yahoo.co.jp.
  • Readiness. A domain counts as ready only when SPF, DKIM and DMARC are all verified on the domain. A domain with no DMARC record at all is flagged as the most severe gap, since that alone gets bulk mail rejected.
  • Status. approaching from 80% of the threshold (4,000 a day by default), at_risk at or above it. A fully authenticated domain is never reported at risk, however much it sends.
  • A warning email. The bulk_sender_threshold notification goes to every org member who has domain issue notifications enabled, at most once per domain per provider per day. An hourly worker does the checking.

The Bulk sender readiness card on the Deliverability page shows each flagged domain, its volume against the threshold per provider, and the specific things left to fix.

API

GET /v1/deliverability/bulk-sender-readiness
Authorization: Bearer re_xxxxxxxxxxxx

Requires read_only scope or higher.

{
  "threshold": 5000,
  "warn_at": 4000,
  "window_hours": 24,
  "measured_from": "2026-09-03T18:00:00.000Z",
  "summary": { "ok": 2, "approaching": 1, "at_risk": 0 },
  "domains": [
    {
      "domain_id": "dom_abc123",
      "domain_name": "mail.acme.com",
      "status": "approaching",
      "ready": false,
      "spf_verified": true,
      "dkim_verified": true,
      "dmarc_verified": false,
      "has_dmarc_record": false,
      "total_volume": 4310,
      "providers": [
        {
          "provider": "google",
          "provider_label": "Gmail",
          "volume": 4102,
          "status": "approaching",
          "threshold": 5000,
          "warn_at": 4000,
          "reasons": [
            "mail.acme.com sent 4,102 messages to Gmail in the last 24 hours, 82% of the 5,000/day bulk sender threshold.",
            "No DMARC record for mail.acme.com. Bulk senders must publish DMARC with at least p=none; without it Gmail and Microsoft reject the mail outright."
          ]
        }
      ]
    }
  ]
}

Pass ?threshold= to preview the assessment against a different line, for example ?threshold=1000 to see which domains would be flagged at a lower volume.


Getting compliant

  1. Verify SPF, DKIM and DMARC on every sending domain. Sendry publishes the exact records on the domain detail page; DMARC starts at v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com.
  2. Keep the From domain aligned. Send from a subdomain you control, for example mail.acme.com, and let Sendry manage the return path so SPF aligns.
  3. Turn on one-click unsubscribe for every marketing and subscribed send. Sendry adds the RFC 8058 headers and processes the unsubscribe immediately, well inside the two-day window.
  4. Watch complaints. Connect Gmail Postmaster Tools so the real Gmail-reported spam rate appears next to your own metrics, and keep it under 0.08%.
  5. Warm up gradually. Do not jump from 500 a day to 6,000. Ramp so the providers see a stable, authenticated pattern before you cross the threshold.

Configuration

BULK_SENDER_THRESHOLD overrides the 5,000-a-day line used by the endpoint, the dashboard card and the hourly worker. It exists so a self-hosted deployment can exercise the warning path without generating thousands of sends; leave it at the default of 5000 in production.

BULK_SENDER_THRESHOLD=5000

On this page