SENDING · Published 2026-10-06 · Updated 2026-10-06 · SecureSMTP
Deliverability
What we check before an email leaves, and what you can do to reach the inbox.
Whether an email lands in the inbox is decided by the receiving mailbox provider, based on your domain’s reputation, the content and how recipients react to your mail. No sending service can promise inbox placement. This page explains what we check before an email leaves, and what you can do yourself.
What we check before sending
Every email sent with POST /mail/send goes through these checks, in this order. That includes mail sent over SMTP, by the WordPress plugin and by the MCP server. Refused and held emails are in the email log with status flagged and the reason.
| Check | What it does | Result |
|---|---|---|
| Rate limit | More than 120 sends from one site in 60 seconds. | 200 rate_limited |
| Content check | Scores the subject and body from 0 to 100. | 60 or more: 400 content_flagged. 30–59: sent, with a warning in the log. |
| Contact-form spam hold | Checks contact-form notifications for spam typed into the form. | 90% sure or more: held, not sent. 200 with held: true. |
| AI check | An AI model reads a sample of emails. | 85% sure it is spam or more: 400 ai_flagged. |
| Monthly limit | Relay-mode emails this month for your account. | 200 over_quota |
| Suppressions | Addresses that do not exist or complained. | Removed from to. |
| Unsubscribes | Addresses that unsubscribed from this site. | Removed from to. |
Content check
The score rises for things common in spam: three or more links (more for six or more), words often used in spam, links to domains on top-level domains that spam often uses, and long text in capital letters. Normal transactional and newsletter mail scores well below the limits.
Contact-form spam hold
Contact forms get a lot of sales pitches and junk typed in by people and bots. An email counts as a contact-form notification when source_plugin is a known form plugin (for example contact-form-7, wpforms, gravityforms, elementor-pro) or the subject looks like one (“New message from…”, “Contact form”, “Enquiry from…”). Auto-replies to the visitor (“Thank you…”, “We received…”) are not checked.
A held email is not sent and the response is {"ok": true, "sent": true, "held": true, "reason": "held_as_spam"}, so the WordPress plugin does not send it another way. Over SMTP the reply is 250 Accepted. If the check itself fails, the email is sent. For your own forms, see also Spam protection.
AI check
For a site with fewer than 100 emails in its log, every email is checked. After that about 1 in 20 is checked, chosen by the subject, so the same subject always gets the same decision. Contact-form notifications are not checked here because the spam hold already checked them. If the check fails or times out, the email is sent.
What you can do
Authenticate your mail
- Verify your own domain, so mail is signed with DKIM as your domain and builds your own reputation. See Domains and DNS.
- Publish a DMARC record for your domain. Gmail and Yahoo expect one from bulk senders.
- Use one From address per kind of mail and keep it stable.
Send only to people who asked
- Do not send to bought, rented or scraped lists. They are full of addresses that do not exist and spam traps.
- Remove people who have not opened or clicked for a long time from marketing mail.
- Addresses that do not exist and people who complain are suppressed for you — do not remove them from the suppression list unless you know the problem is fixed.
Keep complaints low
- Google asks bulk senders to keep the spam rate shown in Postmaster Tools below 0.1% and never reach 0.3%. Watch
email.complainedevents and your complaint numbers. - Make unsubscribing easy. Send marketing mail one recipient per request so the one-click unsubscribe header is added, and add a visible unsubscribe link to the body.
- Send what people signed up for, as often as they expect it.
Write plain, honest email
- Send both an HTML and a plain-text part.
- Use a subject that matches the content.
- Keep links to a few, and link to your own domain.
- Avoid long text in capital letters and attachments people did not expect.
Watch the results
Email analytics (/app/forms/email-analytics) shows delivered, bounced, complained, opened and clicked emails over time. A sudden rise in bounces or complaints usually means a list or content problem. Webhooks let you act on each event in your own system.