Deliverability
Find out whether your emails would reach the inbox, before your users do.
Every test email gets checked as an inbox would see it. A spam score out of 10 shows what adds to it, attachments inboxes block are flagged, and mail turned away before it arrived is explained. Reports and your CI runs count it all.
Free plan · Spam score and attachment checks in Labs · An estimate, not a promise
What it checks
What an inbox weighs, on every test email.
A spam score out of 10
Added up from the markers spam filters weigh, each with its points. 5 or more means likely rejected or sent to spam; 1.5 or more may go to spam. In Labs.
Attachments inboxes block
A program Gmail blocks, or one named to look like a document, fails. Office files with macros, HTML pages and archives get a warning. The check names the file type, never the file. In Labs.
Mail turned away
When Cloudflare's mail servers refuse an email before it reaches us, for failing DMARC, say, or an address they can't read, the inbox and Troubleshoot say what happened and why.
SPF, DKIM and DMARC
Whether the sending server may send for the domain, the email is signed, and it passes the From domain's DMARC policy. A failure names the domain to fix.
Built to be read
A plain-text version, a size under the 102 KB where Gmail cuts emails off, more than just images, and a layout that fits a phone.
Counted where you look
Reports count likely spam, possible spam, harmful attachments and turned-away mail for each project. A run report's first line says how many emails would likely land in spam.
How it works
From "it sent" to "it would land".
Switch it on
The spam score and attachment checks are in Labs for now. Switch on Spam score and attachment checks in Account settings → Labs.
Send a test email
Sign up, reset a password or trigger an offer with a test address, by hand, from a test or with your agent.
See the score and why
The inbox shows the email's spam score, the markers that add to it, any risky attachment and Cloudflare's own spam verdict.
Catch it in CI
A failed spam_risk or harmful_attachment check comes back in failed, so a template change that would land in spam fails your test and the build.
In your tests
Fail the build when an email would land in spam.
checkEmail (Python check_email, check_email for agents) returns verdicts, never the email's text. With Spam score and attachment checks switched on in Labs, its answer includes spam_risk with the score and markers. Full details are in the developer docs.
Playwright with the npm package
const submitted = new Date();
await page.getByRole('button', { name: 'Create account' }).click();
await qa.waitForLink(address, { since: submitted });
const result = await qa.checkEmail(address, { since: submitted, expectHost: 'staging.acme.dev' });
const spam = result.checks.find((c) => c.check === 'spam_risk');
// Say what to fix: each marker with its points.
expect(result.failed, JSON.stringify(spam?.markers)).not.toContain('spam_risk');
expect(result.failed).not.toContain('harmful_attachment');pytest with the Python helper
from proxymail_qa import check_email, create_address, now, wait_for_link
def test_welcome_email_reaches_the_inbox(page):
address = create_address()["address"]
submitted = now()
page.goto("/sign-up")
page.get_by_label("Email").fill(address)
page.get_by_role("button", name="Create account").click()
wait_for_link(address, since=submitted)
result = check_email(address, since=submitted)
assert "spam_risk" not in result["failed"], result["checks"]
assert "dmarc" not in result["failed"]Honest about limits
A careful estimate, and it says so.
-
An estimate from the email
The score comes from what the email shows. Inboxes also weigh the sender's reputation and history, which only they can see.
-
Every marker named
You see each thing that adds to the score and its points, such as no DKIM, a link shortener or a subject in capitals, so you know what to fix.
-
Verdicts for agents
Tests and agents get the checks, the score and the markers. Never the email's text.
-
Nothing extra sent
Proxy Mail QA checks the email your app already sent to the test address. It never forwards it or sends it anywhere else to test it.
-
Your choice to switch on
The spam score and attachment checks are in Labs, so they only judge your emails, and your CI, once you switch them on.
-
Test sites only
For development, staging, QA, preview and local versions of apps you build or may test.
FAQ
Questions
Will this tell me if my email lands in spam at Gmail or Outlook?
It estimates it. The score adds up the markers spam filters weigh, such as failing DMARC, no DKIM, an attachment Gmail blocks or marketing without a List-Unsubscribe header. 5 or more out of 10 means likely rejected or sent to spam. Real inboxes also weigh the sender's reputation, which only they can see, so treat it as a check before release, not a promise.
Why is the spam score in Labs?
It's new, and it can fail checks that passed before. Labs lets you choose when it starts judging your emails and your CI. Switch on Spam score and attachment checks in Account settings → Labs; it applies to your API keys and agents too.
What does "turned away" mean?
Cloudflare's mail servers, which receive mail for our domains, refused the email before it reached Proxy Mail QA, for example because it failed the sending domain's DMARC policy or was sent to an address in a form they can't read. The inbox, Troubleshoot and check_delivery say which, and Reports count them. This isn't in Labs.
Does it check the attachment's content?
No. It looks at each attachment's name and type, and only names the file type in the result. The file itself is never kept.
More features
- Inbox dashboardEvery test account and its code or link, live
- Projects and teamsOne per client or app, with its own keys and people
- Tests and CInpm, Python and a report on every pull request
- AI agentsAgents sign up and get the code themselves
- Marketing and offersIn Labs · coupons, unsubscribes and consent rules
- Chrome extensionFill sign-up forms and see the code in the page
- MCP server and pluginsClaude, Cursor, Copilot, Codex, ChatGPT and more
Know before your users' inboxes decide.
Create a free account, switch on Spam score and attachment checks in Labs, and send your next test email.
Create a free accountOpen the app