Submits your contact form and confirms the notification email arrives
Resolve preferences β formPageUrl is resolved against the monitored URL and formSelector is trimmed. Either one missing is ERROR (500); the platform normally prevents this by refusing to run.
Open the page β headless Chromium loads the form page with the 37 Audits user agent and the URL's Basic auth, then waits up to 15 s for the network to settle (analytics and long-polling never go fully quiet, so this is bounded). A navigation failure is ERROR (501).
Find the form β the first element matching formSelector. No match is WARNING (300); nothing is submitted. A visible cookie-consent banner is closed first, preferring Necessary only / Reject over Accept, so it cannot sit over the form and swallow clicks.
Fill every visible control, deciding per control in this order and skipping hidden, submit, button, file and invisible (honeypot) controls:
| Control | Value |
|---|---|
input[type=email], or a text input labelled email | contact-form-auditor@inbound.37audits.com |
input[type=tel], or labelled phone / telefone | +15555550123 |
input[type=url], or labelled website / url / site | https://www.37audits.com |
input[type=number], input[type=date] | 1, today's date |
required checkbox, radio group, select | checked, first option, first option with a non-empty value |
| labelled name / nome | 37 Audits Probe |
| labelled subject / assunto / topic | 37 Audits contact form probe 37AUDITS-β¦ |
| labelled company / empresa | 37 Audits |
every textarea, or labelled message / mensagem / comments | the probe message, which includes the reference |
| any other text input | 37 Audits probe 37AUDITS-β¦ |
The label is read from <label for>, a wrapping <label>, aria-label, the name, the id and the placeholder, so forms whose inputs have generic names still get sensible values.
Submit β clicks the form's submit button, falling back to requestSubmit() when there is no button or the click is intercepted. A field the browser still reports as invalid blocks the submission and is reported as rejected (400). A browser error while filling or submitting is ERROR (501) with the browser's own message and data.stage = interaction.
Watch the page for 15 s β a visible validation error is FAIL (400); a success message, the form disappearing or a navigation counts as confirmed; neither within 15 s is WARNING (301).
Report the probe β the INFORMATION check 101 names the reference and the deadline. The platform stores the probe and keeps the result pending.
Reconcile β when Resend receives an email at the inbound address, it notifies 37 Audits. The reference is looked up in the subject, then in the message body. A match completes the run as SUCCESS (200), or WARNING when the page showed no confirmation. No match before deliveryTimeoutMinutes completes it as FAIL (401).
Every rule reports its step either way: a SUCCESS check when the step is verified, or its ERROR, FAIL or WARNING check when it is not. A rule whose step was never reached, because an earlier one failed, reports nothing. The list of checks therefore shows how far the probe got and where it stopped. SUCCESS checks carry no recommendation and never change the overall status.
Codes 101, 201β205, 300, 301, 400, 500 and 501 are emitted by the auditor Lambda; 200 and 401 are emitted by the platform when the forwarded email arrives or the deadline passes. CheckCode suffixes use status ranges: 100β199 information, 200β299 success, 300β399 warning, 400β499 fail, 500β599 error.
| CheckCode | Status | When it fires | Recommendation |
|---|---|---|---|
37A-ContactFormAuditor-201 | SUCCESS | formPageUrl and formSelector are both set. Message names the resolved form page and the selector. | β |
37A-ContactFormAuditor-500 | ERROR | formPageUrl or formSelector is blank or cannot be resolved. | Set {keys} in the Contact Form configuration of this URL: the page that hosts the form and the CSS selector of the form element. |
37A-ContactFormAuditor-202 | SUCCESS | The form page loaded in the browser and the browser got through it. Message gives the number of forms on the page. | β |
37A-ContactFormAuditor-501 | ERROR | The browser could not load the form page (data.stage = load), or threw while filling or submitting the form (data.stage = interaction). The message carries the browser's own error text. | Load: make sure {formPageUrl} is reachable from the auditor and finishes loading within 120 s. Interaction: check that nothing covers the form (cookie banner, modal) and that its fields stay in the page while it is filled. |
37A-ContactFormAuditor-203 | SUCCESS | formSelector matches a form on the page. Message gives the number of fields filled. | β |
37A-ContactFormAuditor-300 | WARNING | No element matches formSelector on the form page. Nothing is submitted. | Update the Form selector preference to the contact form's CSS selector, for example form.wpcf7-form or #contact-form. |
37A-ContactFormAuditor-204 | SUCCESS | The form accepted the probe submission without a validation error. | β |
37A-ContactFormAuditor-400 | FAIL | The form showed a validation error after submit, or a field the browser reports as invalid blocked the submission. | Fix the validation reported as "{errorText}" or expose the required field (label, name or placeholder) so an automated probe can fill it. |
37A-ContactFormAuditor-101 | INFORMATION | The probe was submitted and not rejected. data carries messageId, inboundAddress, deadlineMinutes and the fields that were filled. | β (the platform waits for the forwarded email). Shown only while the result is pending: the platform removes it when it adds 200 or 401. |
37A-ContactFormAuditor-205 | SUCCESS | The page confirmed the submission with a success message, by removing the form, or by navigating. | β |
37A-ContactFormAuditor-301 | WARNING | The probe was submitted but no success message, form removal or navigation happened within 15 s. The platform still waits for the email. | Show a visible success message after submission so visitors know the message was sent. |
37A-ContactFormAuditor-200 | SUCCESS | The forwarded notification carrying the probe reference reached contact-form-auditor@inbound.37audits.com. Message: Notification "{subject}" for probe {token} reached the inbound address {seconds}s after submission. | β |
37A-ContactFormAuditor-401 | FAIL | No forwarded notification with the probe reference arrived within deliveryTimeoutMinutes. | Check the forward rule in the inbox that receives the form notifications, then the site's SMTP / wp_mail delivery (SPF, DKIM, DMARC). |
| Status | Description | Test logic |
|---|---|---|
| PENDING | The probe was submitted; the platform is waiting for the forwarded email | The Lambda returned check 101. The row completes when the email arrives or the deadline passes. |
| SUCCESS | The notification reached the inbound address and the page confirmed the submission | Forwarded email matched by reference before the deadline (200), with no 301 warning on the submission. |
| WARNING | Either nothing was submitted, or the email arrived but the page showed no confirmation | No form matched the selector (300); or the email arrived (200) after a submission with no visible confirmation (301). |
| FAIL | The form rejected the probe, or the email never arrived | Validation error visible after submit (400); or deadline passed without a matching email (401). |
| ERROR | The auditor could not run | Required preferences missing (500); the browser could not load the page or operate the form (501). |
The probe lands in the inbox that receives the form's notifications, once per run. Keep the schedule modest (weekly or daily) and consider a filter that labels or archives messages whose subject contains 37 Audits contact form probe.
Auto-responders and CRMs wired to the form will treat the probe as a lead. Exclude the contact-form-auditor@inbound.37audits.com address or the probe subject in those tools.
CAPTCHA, quiz questions and bot challenges block the probe. The run ends with 400 or 301 rather than a false pass; use a form without a challenge, or whitelist the 37 Audits user agent in the challenge plugin.
Multi-step forms are submitted only through their first step.
A required select whose only options are placeholders, or a field with a format the heuristics do not know (for example a custom date picker), is reported as rejected (400) with the browser's validation message.
Gmail requires the forwarding address to be confirmed with a code it emails to that address. 37 Audits reads it on the Resend received-emails page and relays it to you; until then, runs end as 401.
The reference is searched in the subject first and in the body second. Notification templates that include neither the subject field nor the message field cannot be matched: include at least the message in the template.
The deadline covers the whole path: site mail server, your inbox, the forward hop, Resend and the platform. Fifteen minutes is generous for a healthy setup; raise deliveryTimeoutMinutes if your provider delays forwards.
It does not read your inbox and never sees messages other than the ones you forward. It only receives mail sent to contact-form-auditor@inbound.37audits.com.
It does not evaluate spam placement, SPF, DKIM or DMARC directly; see the DNS mail auditors for those.
This documentation is built and hosted on Mintlify, a developer documentation platform.
Add this auditor to your monitoring setup and start identifying issues on your websites today.