Email Spam Tester

App · 9 actions

Test an email before you send it, with Email Spam Tester. Get a one-time address, send your real email to it from Gmail, Outlook or your sending service, and get a score with 42 checks: SPF, DKIM and DMARC, the sending server, SpamAssassin and Rspamd verdicts, content, and Gmail and Yahoo bulk sender rules, plus a fix plan ordered by points gained. An optional inbox placement test shows whether it lands in the inbox or spam at Gmail, Outlook, Yahoo and others. No account or API key required.

Actions

ActionWhat it does
Change a spam test's report languageChange the language the report page and fix plan are written in.
Check a spam test's progressSee whether the email has arrived at a test address and how many checks have run, without reading the whole report.
Create a spam test addressGet a one-time email address to send your email to before it goes out.
Get a spam reportRead the result of a spam test: a score out of 100, a score out of 10, the problems worth fixing (authentication, sending server, spam filter verdicts, content and Gmail and Yahoo bulk sender rules) and a fix plan ordered by how many points each change is worth.
Get inbox placement resultsSee where your email landed in each seed mailbox: the inbox, a Gmail tab such as Promotions, or spam.
Get inbox placement results for a spam testSee where your email landed in each seed mailbox, for a placement test started together with a spam test.
Get the email as it arrivedSee the tested email exactly as the test address received it: every header your sending service added, the text and HTML versions, the attachment list and the full source.
List inbox placement providersSee which mailbox providers, such as Outlook, Yahoo and GMX, an inbox placement test can check right now, besides Gmail.
Start an inbox placement testFind out whether your email reaches the inbox or the spam folder at Gmail, Outlook, Yahoo and other providers.

Change a spam test's report language

Change the language the report page and fix plan are written in. Works only before the email arrives at the test address.

Inputs

Test IDtest_idtextRequired
The Test ID from Create a spam test address. The test address itself or its report link work too.
Report languagelanguagetextRequired
The language to write the report page and fix plan in.One of: en (English), de (German), es (Spanish), fr (French), it (Italian), pt-br (Portuguese (Brazil)), pt (Portuguese (Portugal)), nl (Dutch), pl (Polish), uk (Ukrainian), and 21 more.

Outputs

languagetext
The language code now set.
language_nametext
The language's name.
report_urltext
The report page to share with a person.
test_idtext
The test's ID.
Example output
{
  "language": "fr",
  "language_name": "French",
  "report_url": "https://email-spam-tester.com/t/8a2fc4s7cy2smvu8oqxb",
  "test_id": "8a2fc4s7cy2smvu8oqxb"
}

Check a spam test's progress

See whether the email has arrived at a test address and how many checks have run, without reading the whole report. Useful for deciding whether to wait longer.

Inputs

Test IDtest_idtextRequired
The Test ID from Create a spam test address. The test address itself or its report link work too.

Outputs

addresstext
The test address, while it is still waiting for the email.
checks_donenumber
How many checks have run so far.
checks_totalnumber
How many checks there are in all.
email_receivedtrue/false
True once the email has arrived.
expires_attext
When the address stops accepting email, while it is still waiting.
fix_plantext
Where the written fix plan has got to: not_started, writing, ready or unavailable. It arrives a minute or so after the checks.
languagetext
The report language, while it is still waiting.
readytrue/false
True once every check has run.
report_urltext
The report page to share with a person.
statetext
waiting_for_email, received, analyzing, ready, failed or expired (no email arrived within the hour).
test_idtext
The test's ID.
Example output
{
  "address": null,
  "checks_done": 42,
  "checks_total": 42,
  "email_received": true,
  "expires_at": null,
  "fix_plan": "ready",
  "language": null,
  "ready": true,
  "report_url": "https://email-spam-tester.com/t/c3cp0mjf3my155w2fqjv",
  "state": "ready",
  "test_id": "c3cp0mjf3my155w2fqjv"
}

Create a spam test address

Get a one-time email address to send your email to before it goes out. Send the real email to it within an hour, from the account or service that will send it for real, then use Get a spam report. Each address takes one email.

Inputs

Report languagelanguagetext
The language the report page and the fix plan are written in. The check results in this step's output are always in English.One of: en (English), de (German), es (Spanish), fr (French), it (Italian), pt-br (Portuguese (Brazil)), pt (Portuguese (Portugal)), nl (Dutch), pl (Polish), uk (Ukrainian), and 21 more. Default: en.

Outputs

addresstext
The address to send the email to.
expires_attext
When the address stops accepting email, an hour from now.
languagetext
The report language chosen.
report_urltext
The report page to share with a person.
test_idtext
The test's ID, for the steps that read it.
Example output
{
  "address": "test-c3cp0mjf3my155w2fqjv@t.email-spam-tester.com",
  "expires_at": "2026-10-15T22:32:05.733796Z",
  "language": "en",
  "report_url": "https://email-spam-tester.com/t/c3cp0mjf3my155w2fqjv",
  "test_id": "c3cp0mjf3my155w2fqjv"
}

Get a spam report

Read the result of a spam test: a score out of 100, a score out of 10, the problems worth fixing (authentication, sending server, spam filter verdicts, content and Gmail and Yahoo bulk sender rules) and a fix plan ordered by how many points each change is worth. Waits for the email to arrive and the checks to finish.

Inputs

Test IDtest_idtextRequired
The Test ID from Create a spam test address. The test address itself or its report link work too.
Seconds to waitwait_secondsnumber
How long to wait for the email to arrive and the checks to run, up to 300. The checks take a few seconds once the email lands. With 0 the step reads whatever is there now.From 0 to 300. Default: 120.

Outputs

addresstext
The test address, when the email has not arrived yet.
authentication_scorenumber
0 to 100 for SPF, DKIM and DMARC, the records that prove the email is from you.
bounce_addresstext
Where bounces go, which spam filters also check.
bulk_sender_rules_scorenumber
0 to 100 for Gmail's and Yahoo's rules for bulk senders, such as one-click unsubscribe.
checkslist
Every check, problems first.
completetrue/false
False when a check could not run, so the score may be optimistic.
content_scorenumber
0 to 100 for the subject, text, HTML, images and links.
email_typetext
What kind of email the service took it for, such as a newsletter, a receipt or a confirmation.
expires_attext
When the address expires, if it is still waiting.
failed_countnumber
How many checks failed.
fix_plan_readytrue/false
True once the fix plan has been written. If False, read the report again in a minute for the fixes.
fixeslist
What to change, in order, and what each change is worth.
has_htmltrue/false
Whether the email has an HTML version.
has_plain_texttrue/false
Whether the email has a plain-text version.
passed_countnumber
How many checks passed.
problemslist
The failed and warning checks that affect delivery, worst first.
readytrue/false
True when the report is complete. False means the email has not arrived or the checks are still running.
received_attext
When the email arrived.
report_urltext
The report page to share with a person.
scorenumber
Overall score from 0 to 100. Higher is better.
score_out_of_10number
The same email scored out of 10, the scale other spam testers use. Higher is better.
sendertext
The From address of the email tested.
sending_server_scorenumber
0 to 100 for the sending server and the spam filters' verdict.
size_bytesnumber
Size of the email in bytes.
statetext
waiting_for_email, received, analyzing, ready or failed.
subjecttext
The subject line of the email tested.
test_idtext
The test's ID.
verdicttext
A short summary of what a spam filter would make of it.
warning_countnumber
How many checks gave a warning.
Example output
{
  "address": null,
  "authentication_score": 88.9,
  "bounce_address": "submissions@formsubmit.co",
  "bulk_sender_rules_score": 100.0,
  "checks": [
    {
      "area": "Authentication",
      "check": "auth.dmarc",
      "points_lost": 6.0,
      "reference": "RFC 9989 \u00a75.3.5 \u2014 Determine DMARC \"Pass\" or \"Fail\"",
      "reference_url": "https://www.rfc-editor.org/rfc/rfc9989.html#section-5.3.5",
      "status": "warn",
      "summary": "Your policy is monitor-only, so receivers are told to do nothing about mail that fails. Move to p=quarantine once your reports look clean.",
      "title": "DMARC policy is p=none"
    },
    {
      "area": "Content",
      "check": "content.html_version",
      "points_lost": 5.0,
      "reference": "RFC 2046 \u00a75.1.4 \u2014 Alternative Subtype",
      "reference_url": "https://www.rfc-editor.org/rfc/rfc2046.html#section-5.1.4",
      "status": "warn",
      "summary": "HTML-only mail is a long-standing spam signal. Include a text/plain alternative.",
      "title": "There is no plain-text version of your message"
    },
    {
      "area": "Content",
      "check": "content.preheader",
      "points_lost": 2.0,
      "reference": "Google \u2014 Email sender guidelines",
      "reference_url": "https://support.google.com/mail/answer/81126",
      "status": "warn",
      "summary": "The preheader is the preview line shown next to your subject. Without one, clients show whatever text comes first \u2014 often \"View in browser\".",
      "title": "No preheader text"
    },
    {
      "area": "Advisory",
      "check": "advisory.bimi",
      "points_lost": 0.0,
      "reference": "BIMI \u2014 draft specification, not yet an RFC",
      "reference_url": "https://datatracker.ietf.org/doc/draft-brand-indicators-for-message-identification/",
      "status": "warn",
      "summary": "BIMI puts your logo next to your messages in Gmail and Apple Mail. It needs an enforcing DMARC policy first. This does not affect your score.",
      "title": "No BIMI record"
    },
    {
      "area": "Content",
      "check": "content.broken_links",
      "points_lost": 0.0,
      "reference": "",
      "reference_url": "",
      "status": "error",
      "summary": "1 of 3 links did not answer, so we cannot confirm the rest are fine.",
      "title": "Some links could not be checked"
    },
    {
      "area": "Authentication",
      "check": "auth.spf",
      "points_lost": 0.0,
      "reference": "",
      "reference_url": "",
      "status": "pass",
      "summary": "192.99.70.154 is authorised to send for formsubmit.co.",
      "title": "SPF passes"
    },
    {
      "area": "Spam filters",
      "check": "spam.spamassassin",
      "points_lost": 0.0,
      "reference": "",
      "reference_url": "",
      "status": "pass",
      "summary": "SpamAssassin scored -0.1. A default install treats 5 and above as spam.",
      "title": "SpamAssassin score: -0.1"
    },
    {
      "area": "Bulk sender rules",
      "check": "compliance.list_unsubscribe",
      "points_lost": 0.0,
      "reference": "",
      "reference_url": "",
      "status": "skip",
      "summary": "This letter asks the reader to confirm a subscription or an address. It is sent to one person about their own action, which the bulk-sender rules do not cover, so this check does not apply.",
      "title": "Not a mailing: subscription confirmation"
    }
  ],
  "complete": false,
  "content_score": 89.0,
  "email_type": "confirmation",
  "expires_at": null,
  "failed_count": 0,
  "fix_plan_ready": true,
  "fixes": [
    {
      "dns_records": [
        {
          "name": "_dmarc.formsubmit.co",
          "type": "TXT",
          "value": "v=DMARC1; p=quarantine; sp=quarantine; pct=100; rua=mailto:2fa15244@mxtoolbox.dmarc-report.com; ruf=mailto:2fa15244@forensics.dmarc-report.com; fo=1"
        }
      ],
      "points_gained": 6.0,
      "points_gained_out_of_10": 0.0,
      "severity": "high",
      "steps": [
        "Inventory every legitimate service that sends as formsubmit.co and confirm each passes aligned SPF or DKIM.",
        "Review aggregate reports sent to the configured rua address and correct unidentified legitimate senders.",
        "Publish p=quarantine for the organizational domain and subdomains.",
        "After reports show legitimate traffic remains aligned, change p=quarantine and sp=quarantine to p=reject and sp=reject."
      ],
      "title": "Move DMARC from monitoring to enforcement",
      "why": "The current p=none and sp=none policies collect reports but do not ask receivers to quarantine spoofed messages."
    },
    {
      "dns_records": [],
      "points_gained": 8.0,
      "points_gained_out_of_10": 0.3,
      "severity": "high",
      "steps": [
        "Generate a meaningful plain-text version of the message body.",
        "Send Content-Type: multipart/alternative with text/plain first and text/html second.",
        "Put the core message, sender context, and essential link text in both parts.",
        "Add visible HTML text rather than relying entirely on images, CSS backgrounds, or empty layout markup."
      ],
      "title": "Send a multipart message with real text content",
      "why": "The message contains HTML but no text/plain alternative, and its HTML has a zero text ratio. Image-only or empty HTML is inaccessible and less robust across clients and filters."
    }
  ],
  "has_html": true,
  "has_plain_text": false,
  "passed_count": 2,
  "problems": [
    {
      "area": "Authentication",
      "check": "auth.dmarc",
      "points_lost": 6.0,
      "reference": "RFC 9989 \u00a75.3.5 \u2014 Determine DMARC \"Pass\" or \"Fail\"",
      "reference_url": "https://www.rfc-editor.org/rfc/rfc9989.html#section-5.3.5",
      "status": "warn",
      "summary": "Your policy is monitor-only, so receivers are told to do nothing about mail that fails. Move to p=quarantine once your reports look clean.",
      "title": "DMARC policy is p=none"
    },
    {
      "area": "Content",
      "check": "content.html_version",
      "points_lost": 5.0,
      "reference": "RFC 2046 \u00a75.1.4 \u2014 Alternative Subtype",
      "reference_url": "https://www.rfc-editor.org/rfc/rfc2046.html#section-5.1.4",
      "status": "warn",
      "summary": "HTML-only mail is a long-standing spam signal. Include a text/plain alternative.",
      "title": "There is no plain-text version of your message"
    },
    {
      "area": "Content",
      "check": "content.preheader",
      "points_lost": 2.0,
      "reference": "Google \u2014 Email sender guidelines",
      "reference_url": "https://support.google.com/mail/answer/81126",
      "status": "warn",
      "summary": "The preheader is the preview line shown next to your subject. Without one, clients show whatever text comes first \u2014 often \"View in browser\".",
      "title": "No preheader text"
    }
  ],
  "ready": true,
  "received_at": "2026-10-15T21:33:30.545703Z",
  "report_url": "https://email-spam-tester.com/t/c3cp0mjf3my155w2fqjv",
  "score": 78.5,
  "score_out_of_10": 9.7,
  "sender": "submissions@formsubmit.co",
  "sending_server_score": 95.7,
  "size_bytes": 2925,
  "state": "ready",
  "subject": "Action Required: Activate FormSubmit on https://example.com/contact",
  "test_id": "c3cp0mjf3my155w2fqjv",
  "verdict": "DMARC is monitoring-only, so spoofed use of formsubmit.co is not rejected. The message is HTML-only with no measurable text, which hurts compatibility and accessibility, and its three links did not complete clean validation.",
  "warning_count": 4
}

Get inbox placement results

See where your email landed in each seed mailbox: the inbox, a Gmail tab such as Promotions, or spam. Mailboxes keep looking for 30 minutes after the start, so read it again until it is finished.

Inputs

Placement test IDplacement_test_idtextRequired
The ID from Start an inbox placement test.

Outputs

deadlinetext
When the mailboxes stop looking, 30 minutes after the start.
expires_attext
When the results are deleted, 30 days after the start.
finishedtrue/false
True once every mailbox has been checked.
inbox_countnumber
Mailboxes where the email reached the inbox (Promotions and the other Gmail tabs count).
inbox_ratenumber
Percent of the mailboxes it was found in that were the inbox.
mailboxeslist
Every seed mailbox and where the email landed in it.
not_seen_countnumber
Mailboxes where it was not found. That does not mean spam.
placement_test_idtext
The placement test's ID.
public_results_urltext
GMass's public page for the Gmail results.
service_problemtext
Set when a mailbox provider had an outage.
spam_countnumber
Mailboxes where it landed in spam.
statustext
waiting, complete or timed_out.
subject_markertext
A code that must appear in the email's subject so the mailboxes can find it.
waiting_countnumber
Mailboxes not checked yet.
Example output
{
  "deadline": "2026-10-15T22:06:11.729288+00:00",
  "expires_at": "2026-11-14T21:36:11.729288+00:00",
  "finished": false,
  "inbox_count": 0,
  "inbox_rate": null,
  "mailboxes": [
    {
      "address": "ajaygoel999@gmail.com",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "Gmail",
      "observed_at": null,
      "provider": "Gmail"
    },
    {
      "address": "test@chromecompete.com",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "Google Workspace",
      "observed_at": null,
      "provider": "Gmail"
    },
    {
      "address": "RileySandovallh@tiscali.it",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "Tiscali",
      "observed_at": null,
      "provider": "Tiscali"
    },
    {
      "address": "buscheberhard@web.de",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "WEB.DE",
      "observed_at": null,
      "provider": "WEB.DE"
    }
  ],
  "not_seen_count": 0,
  "placement_test_id": "5o9bdHOK5pTUJBPbIwr0Pn7jJrpN3pr6",
  "public_results_url": "https://www.gmass.co/inbox?q=est-36da32af9921f46c05dc62aa",
  "service_problem": null,
  "spam_count": 0,
  "status": "waiting",
  "subject_marker": "est-36da32af9921f46c05dc62aa",
  "waiting_count": 4
}

Get inbox placement results for a spam test

See where your email landed in each seed mailbox, for a placement test started together with a spam test. Use the spam test's ID, so one ID covers both.

Inputs

Test IDtest_idtextRequired
The Test ID from Create a spam test address. The test address itself or its report link work too.

Outputs

deadlinetext
When the mailboxes stop looking, 30 minutes after the start.
expires_attext
When the results are deleted, 30 days after the start.
finishedtrue/false
True once every mailbox has been checked.
inbox_countnumber
Mailboxes where the email reached the inbox (Promotions and the other Gmail tabs count).
inbox_ratenumber
Percent of the mailboxes it was found in that were the inbox.
mailboxeslist
Every seed mailbox and where the email landed in it.
not_seen_countnumber
Mailboxes where it was not found. That does not mean spam.
placement_test_idtext
The placement test's ID.
public_results_urltext
GMass's public page for the Gmail results.
service_problemtext
Set when a mailbox provider had an outage.
spam_countnumber
Mailboxes where it landed in spam.
statustext
waiting, complete or timed_out.
subject_markertext
A code that must appear in the email's subject so the mailboxes can find it.
waiting_countnumber
Mailboxes not checked yet.
Example output
{
  "deadline": "2026-10-15T22:06:11.729288+00:00",
  "expires_at": "2026-11-14T21:36:11.729288+00:00",
  "finished": false,
  "inbox_count": 0,
  "inbox_rate": null,
  "mailboxes": [
    {
      "address": "ajaygoel999@gmail.com",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "Gmail",
      "observed_at": null,
      "provider": "Gmail"
    },
    {
      "address": "test@chromecompete.com",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "Google Workspace",
      "observed_at": null,
      "provider": "Gmail"
    },
    {
      "address": "RileySandovallh@tiscali.it",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "Tiscali",
      "observed_at": null,
      "provider": "Tiscali"
    },
    {
      "address": "buscheberhard@web.de",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "WEB.DE",
      "observed_at": null,
      "provider": "WEB.DE"
    }
  ],
  "not_seen_count": 0,
  "placement_test_id": "5o9bdHOK5pTUJBPbIwr0Pn7jJrpN3pr6",
  "public_results_url": "https://www.gmass.co/inbox?q=est-36da32af9921f46c05dc62aa",
  "service_problem": null,
  "spam_count": 0,
  "status": "waiting",
  "subject_marker": "est-36da32af9921f46c05dc62aa",
  "waiting_count": 4
}

Get the email as it arrived

See the tested email exactly as the test address received it: every header your sending service added, the text and HTML versions, the attachment list and the full source. The copy is deleted sooner than the report.

Inputs

Test IDtest_idtextRequired
The Test ID from Create a spam test address. The test address itself or its report link work too.

Outputs

attachmentslist
The attachments, without their contents.
availabletrue/false
False once the copy has been deleted, which happens sooner than the report.
headerslist
Every header, in the order the email carried them.
htmltext
The HTML version, if there is one.
raw_sourcetext
The complete email as received.
readytrue/false
False when no email has arrived yet.
recipienttext
The To line as delivered.
sendertext
The From line as delivered.
size_bytesnumber
Size of the email in bytes.
subjecttext
The subject line as delivered.
test_idtext
The test's ID.
texttext
The plain-text version, if there is one.
truncatedtrue/false
True when a very large email was cut short in this output.
unavailable_reasontext
Why the email cannot be shown, if it cannot.
Example output
{
  "attachments": [],
  "available": true,
  "headers": [
    {
      "name": "Message-ID",
      "value": "<be7a97bd328392aa1754a326a677788b@formsubmit.co>"
    },
    {
      "name": "Date",
      "value": "Thu, 15 Oct 2026 21:33:27 +0000"
    },
    {
      "name": "Subject",
      "value": "Action Required: Activate FormSubmit on https://example.com/contact"
    },
    {
      "name": "From",
      "value": "FormSubmit <submissions@formsubmit.co>"
    },
    {
      "name": "To",
      "value": "test-c3cp0mjf3my155w2fqjv@t.email-spam-tester.com"
    },
    {
      "name": "MIME-Version",
      "value": "1.0"
    },
    {
      "name": "Content-Type",
      "value": "text/html; charset=utf-8"
    }
  ],
  "html": "<!doctype html>\r\n<html lang=\"en\">\r\n<body>\r\n<p><strong>Thank you for using FormSubmit!</strong> You're only one step away from making forms on https://example.com/contact\r\n    functional.</p>\r\n</body>\r\n</html>",
  "raw_source": "Message-ID: <be7a97bd328392aa1754a326a677788b@formsubmit.co>\r\nDate: Thu, 15 Oct 2026 21:33:27 +0000\r\nSubject: Action Required: Activate FormSubmit on https://example.com/contact\r\nFrom: FormSubmit <submissions@formsubmit.co>\r\nTo: test-c3cp0mjf3my155w2fqjv@t.email-spam-tester.com\r\nMIME-Version: 1.0\r\nContent-Type: text/html; charset=utf-8\r\n\r\n<!doctype html>\r\n<html lang=\"en\">\r\n<body>\r\n<p><strong>Thank you for using FormSubmit!</strong> You're only one step away from making forms on https://example.com/contact\r\n    functional.</p>\r\n</body>\r\n</html>",
  "ready": true,
  "recipient": "test-c3cp0mjf3my155w2fqjv@t.email-spam-tester.com",
  "sender": "FormSubmit <submissions@formsubmit.co>",
  "size_bytes": 2925,
  "subject": "Action Required: Activate FormSubmit on https://example.com/contact",
  "test_id": "c3cp0mjf3my155w2fqjv",
  "text": null,
  "truncated": false,
  "unavailable_reason": null
}

List inbox placement providers

See which mailbox providers, such as Outlook, Yahoo and GMX, an inbox placement test can check right now, besides Gmail. Nothing is started.

Inputs

None.

Outputs

countnumber
How many there are.
provider_nameslist
Just their names.
providerslist
The providers available now.
Example output
{
  "count": 12,
  "provider_names": [
    "AOL Mail",
    "freenet.de",
    "GMX",
    "Libero",
    "Mail.com",
    "Mail.ru",
    "Onet",
    "Outlook",
    "Proton Mail",
    "Tiscali",
    "WEB.DE",
    "Yahoo Mail"
  ],
  "providers": [
    {
      "id": "aol",
      "name": "AOL Mail"
    },
    {
      "id": "freenet",
      "name": "freenet.de"
    },
    {
      "id": "gmx",
      "name": "GMX"
    },
    {
      "id": "libero",
      "name": "Libero"
    },
    {
      "id": "mailcom",
      "name": "Mail.com"
    },
    {
      "id": "mailru",
      "name": "Mail.ru"
    },
    {
      "id": "onet",
      "name": "Onet"
    },
    {
      "id": "outlook",
      "name": "Outlook"
    },
    {
      "id": "proton",
      "name": "Proton Mail"
    },
    {
      "id": "tiscali",
      "name": "Tiscali"
    },
    {
      "id": "webde",
      "name": "WEB.DE"
    },
    {
      "id": "yahoo",
      "name": "Yahoo Mail"
    }
  ]
}

Start an inbox placement test

Find out whether your email reaches the inbox or the spam folder at Gmail, Outlook, Yahoo and other providers. You get a list of seed mailboxes and a code: put the code in the subject, send the email to every address, then use Get inbox placement results. The Gmail results are public, so use it only for emails that are not confidential. Up to 20 tests a day.

Inputs

I accept the results are publicaccept_public_resultstrue/falseRequired
GMass, which runs the Gmail seed mailboxes, receives the email and publishes its subject, sender name and where it landed. Turn this on to agree.
Spam test IDtest_idtext
Optional. The Test ID from Create a spam test address, to run both tests from one send. Its address is added to the list to send to. Start this before the email is sent.

Outputs

deadlinetext
When the mailboxes stop looking, 30 minutes after the start.
expires_attext
When the results are deleted, 30 days after the start.
finishedtrue/false
True once every mailbox has been checked.
inbox_countnumber
Mailboxes where the email reached the inbox (Promotions and the other Gmail tabs count).
inbox_ratenumber
Percent of the mailboxes it was found in that were the inbox.
mailboxeslist
Every seed mailbox and where the email landed in it.
not_seen_countnumber
Mailboxes where it was not found. That does not mean spam.
placement_test_idtext
The placement test's ID.
public_results_urltext
GMass's public page for the Gmail results.
send_tolist
Every address to send the email to, including the spam test address when one was given.
send_to_texttext
The same addresses separated by commas, ready for a Bcc field.
service_problemtext
Set when a mailbox provider had an outage.
spam_countnumber
Mailboxes where it landed in spam.
spam_test_idtext
The spam test it was added to, if any.
statustext
waiting, complete or timed_out.
subject_markertext
A code that must appear in the email's subject so the mailboxes can find it.
waiting_countnumber
Mailboxes not checked yet.
Example output
{
  "deadline": "2026-10-15T22:06:11.729288+00:00",
  "expires_at": "2026-11-14T21:36:11.729288+00:00",
  "finished": false,
  "inbox_count": 0,
  "inbox_rate": null,
  "mailboxes": [
    {
      "address": "ajaygoel999@gmail.com",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "Gmail",
      "observed_at": null,
      "provider": "Gmail"
    },
    {
      "address": "test@chromecompete.com",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "Google Workspace",
      "observed_at": null,
      "provider": "Gmail"
    },
    {
      "address": "RileySandovallh@tiscali.it",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "Tiscali",
      "observed_at": null,
      "provider": "Tiscali"
    },
    {
      "address": "buscheberhard@web.de",
      "available": true,
      "folder": "pending",
      "landed_in": "waiting",
      "mailbox_type": "WEB.DE",
      "observed_at": null,
      "provider": "WEB.DE"
    }
  ],
  "not_seen_count": 0,
  "placement_test_id": "5o9bdHOK5pTUJBPbIwr0Pn7jJrpN3pr6",
  "public_results_url": "https://www.gmass.co/inbox?q=est-36da32af9921f46c05dc62aa",
  "send_to": [
    "test-8a2fc4s7cy2smvu8oqxb@t.email-spam-tester.com",
    "ajaygoel999@gmail.com",
    "test@chromecompete.com",
    "RileySandovallh@tiscali.it",
    "buscheberhard@web.de"
  ],
  "send_to_text": "test-8a2fc4s7cy2smvu8oqxb@t.email-spam-tester.com, ajaygoel999@gmail.com, test@chromecompete.com, RileySandovallh@tiscali.it, buscheberhard@web.de",
  "service_problem": null,
  "spam_count": 0,
  "spam_test_id": "8a2fc4s7cy2smvu8oqxb",
  "status": "waiting",
  "subject_marker": "est-36da32af9921f46c05dc62aa",
  "waiting_count": 4
}

On this page