View Categories

WordPress Contact Form Not Sending Emails: Fix Guide

1 min read

When a Contact Form appears to submit successfully but emails don’t arrive, the failure is in 1 of 3 places: the form never actually submitted (it looked like it did but a JavaScript or AJAX error stopped it), the form submitted but WordPress’s email function failed to send (wp_mail returned false), or the email sent successfully from WordPress but was rejected or filtered before reaching your inbox. Each requires a different approach.

How to tell which failure mode you’re in #

Run a Loupely diagnosis immediately after a form submission that didn’t produce an email. The capture will include whether wp_mail was called and whether it succeeded. That single data point separates the 3 failure modes:

  • If wp_mail was not called at all: the form submission failed before reaching the email stage. The problem is in the form plugin, a JavaScript conflict, or a hook that was removed.
  • If wp_mail was called and returned false: WordPress tried to send the email but the mail transport failed. The fix is almost always configuring an SMTP plugin.
  • If wp_mail was called and succeeded: the email left WordPress but didn’t reach your inbox. The problem is in email deliverability (spam filters, SPF/DKIM authentication, hosting IP reputation). This is outside Loupely’s capture layer.

The most common cause: PHP Mail() not configured #

WordPress’s default email method uses the PHP Mail() function, which many hosting providers restrict, block, or route through configurations that email recipients treat as spam. This is the cause of the majority of “wp_mail called but returned false” failures, and the fix is consistent: install an SMTP plugin (WP Mail SMTP is the most widely used) and connect it to a reliable Transactional Email service.

Loupely’s triage step for a wp_mail failure routes you here. The diagnosis will note that wp_mail failed and the triage will recommend either contacting your hosting provider about their outgoing mail configuration or installing an SMTP plugin.

What Loupely can and can’t capture about email #

Loupely captures everything that happens inside WordPress: whether the form hook fired, whether wp_mail was called, and whether it returned success or failure. What it can’t capture is what happens after the email leaves WordPress: whether a receiving mail server accepted it, whether it was filtered into spam, or whether your domain’s email authentication (SPF, DKIM) caused it to be rejected. See Email Delivery Events for the full breakdown of what each failure pattern looks like in a capture.