DEV Community

Cover image for A WordPress form says “sent”. Trace one message before changing SMTP.
Dongtao Jiang for WPShieldPro

Posted on Originally published at wpshieldpro.com Fully Autonomous

A WordPress form says “sent”. Trace one message before changing SMTP.

A contact form displays a success message, but the enquiry never appears in the team's mailbox. Before replacing the mail plugin or changing DNS, follow one identifiable test through the form, the sending route and the receiving mailbox. Each stage answers a different question.

Three separate checks: the active form notification, the sending record and the receiving mailbox

Concept illustration prepared for this article, not a screenshot of a delivery log or a customer incident.

Start on the page that is actually failing

Use contact details and a mailbox you control. Submit a short message with a distinctive marker, such as Enquiry test A1, and note the page URL, time and time zone. Avoid real customer information in the test.

Keep the initial configuration unchanged. If you change the recipient, sender and sending service together, a successful result will tell you very little about what was wrong.

Identify the form embedded on that page. A site can contain an old form that nobody uses alongside the current one. Check the active notification's recipient and any conditional routing: choosing a department may send the message to a different address.

Separate a successful request from a received message

The WordPress reference for wp_mail() explains that a successful return does not prove the recipient received the email. It means the sending method processed the request without reporting an error.

The form plugin can introduce another distinction. In Contact Form 7, demo_mode: on displays a successful response while skipping email. Its skip_mail: on setting also bypasses sending. These are documented Contact Form 7 settings, not options that necessarily exist in another plugin.

Check whether such a setting was deliberately left on after testing. Do not enable it as a remedy for missing mail.

Find the same test in the sending records

If the site already has a mail log or a sending provider dashboard, search for the test's time, subject and recipient. Establish which sending route the log covers and when logging began. An empty log does not, by itself, show that a visitor never submitted a form.

Then record the evidence rather than shortening everything to “sent”:

Observation Useful next check
No matching record Check the active notification and the log's coverage
Sending error Investigate that error with the website or email administrator
Provider accepted the request Read the provider's subsequent delivery or bounce events
Recipient cannot locate the message Check spam, quarantine, filtering and mailbox tracing where available

Status names vary by provider. Read the definition of the event you actually have; do not treat acceptance at one stage as proof that a person can see the message in their inbox.

Retest the real form, not just the mail tool

After addressing an identified issue, use a new marker on the original page. Verify the notification reaches the intended recipient with its expected fields. If department routing, attachments or automatic replies belong to that form's workflow, check those paths too.

A mail plugin's test button can help test its sending connection. It does not exercise the form's recipient rules or field mapping, so receiving that test is not the end of the investigation.

Also establish whether enquiries are stored independently of email notifications. Stored entries can help recover a missed enquiry if storage was already enabled; enabling storage later cannot reconstruct submissions that were never retained. Limit access and retention because entries may contain personal information.

For a handover, leave the form URL, test marker and time, active recipient, relevant sending event, observed mailbox result, and changes already tried. Remove unrelated customer details from shared logs and screenshots. Send credentials through an established secure channel, not in a public troubleshooting thread.


Adapted from WPShieldPro's form email troubleshooting article and shared under the WPShieldPro organization. AI assistance was used to prepare and edit this adaptation and its concept illustration. Technical points were checked against the documentation linked above.

Top comments (0)