# Contact form not sending email? Trace the missing message

> If your WordPress contact form is not sending email, enable its notification, check the recipient and use an authorized site-domain From address with the visitor's email in Reply-To. Test the public form through authenticated sending; if Post SMTP says sent but nothing arrives, trace the message in your provider's logs and the recipient's spam or quarantine.

Canonical: https://fer.marketing/contact-form-not-sending-email
Author: Fernando Marcano, Fer Marketing
Updated: 2026-10-20

- **First check:** Correct notification and recipient
- **From:** An authorized address on your domain
- **Reply-To:** The visitor's email field
- **Finish line:** Real submission received and answered

## Get your form inquiries to the right mailbox

Send your form URL, plugin name, intended recipient domain and a recent test result. Include a redacted error or log excerpt if available. We will trace the failure, repair the agreed form and sending settings, and verify receipt and replies with your team. Scope and price are agreed in writing before work starts.

Fer LLC, Wyoming, US business · +1 310 734 8943

[Hire us to fix my form emails](https://fer.marketing/contact#form)

## Start with the last place you can prove the message exists

Submit a clearly labeled test and record the page, recipient, time and time zone. Use the evidence below to choose the next check. Change one part of the setup at a time so you can identify what fixed it.

| What you see | What to check next |
| --- | --- |
| Form spins, fails validation or shows an error | Submission, browser errors and anti-spam checks before SMTP. |
| Submission succeeds, no matching mail log | Whether the notification is enabled, its conditions and recipient. Confirm logging is active before treating an absent log as proof. |
| Mail log reports a connection or login error | SMTP credentials, provider authorization and the host's outbound connection rules. |
| Mail log reports sent, inbox is empty | The provider's delivery events, then recipient spam, quarantine and mailbox rules. |

The [WordPress wp_mail reference](https://developer.wordpress.org/reference/functions/wp_mail/) says a successful return means the sending method processed the request without an error, not that the recipient received it. If password resets and other site emails also fail, use our broader [WordPress not sending email guide](https://fer.marketing/wordpress-not-sending-email).

## From must use your site domain. Reply-To is for the visitor

For form notifications, set From to a real address on your site's domain that your sending provider authorizes. Put the visitor's email in Reply-To so your staff can answer them. Putting a visitor's Gmail or Yahoo address in From makes your server claim to send as a domain you do not control. See [Contact Form 7's mail best practices](https://contactform7.com/best-practice-to-set-up-mail/).

**Example notification for a site at example.com**

```
To: leads@example.com
From: Website inquiries <forms@example.com>
Reply-To: the visitor's validated email field
```

These are illustrative addresses. Create or verify your actual sender and use the form plugin's own field syntax for Reply-To.

To is the mailbox that receives the inquiry. It does not need to be on the site's domain. From identifies your site as the sender; Reply-To controls where your reply goes. Test both delivery and the Reply button before handing the form back to staff.

## Contact Form 7 not sending email: fix the Mail tab first

Open Contact > Contact Forms, edit the affected form and select Mail. Verify To, From and Additional headers against the [official Mail tab documentation](https://contactform7.com/setting-up-mail/). Check Mail (2) separately if you use a visitor acknowledgment; it is an additional template, sent only after primary Mail succeeds.

**CF7 example with an existing email field named your-email**

```
Form tab email field: [email* your-email]
Mail > To: leads@example.com
Mail > From: Website inquiries <forms@example.com>
Mail > Additional headers: Reply-To: [your-email]
```

Use the exact field name in your own form. This example assumes example.com is the site domain and forms@example.com is an authorized sender.

**Resolve the warning shown beside the affected setting**

- [ ] Sender does not belong to the site domain: Replace a visitor mail-tag or outside address in From with your authorized site-domain sender.
- [ ] Invalid mailbox syntax or a possible empty field: Check the address format and whether an optional form field could leave a required mail header empty.
- [ ] Invalid mail headers or attachment errors: Use one header per line. Check the named attachment exists and fits the upload configuration.

Save and review the [CF7 configuration error guidance](https://contactform7.com/configuration-errors/) for the specific warning. After clearing the warnings, submit the published form and confirm receipt.

## WPForms not sending email? Check the notification, not just the confirmation

In WPForms, edit the affected form and open Settings > Notifications. Enable notifications and check Send To Email Address. If it uses the admin email Smart Tag, confirm the resolved mailbox is still monitored. Use your domain sender in From Email and the visitor's email Smart Tag in Reply-To. Save, then test the embedded form. These fields are documented in [WPForms notification setup](https://wpforms.com/docs/setup-form-notification-wpforms/).

A confirmation on screen and an email notification are separate outcomes. If only certain inquiries disappear, compare the selected form options with any notification conditions and routing rules. Use a test that should satisfy those rules.

### Gravity Forms: check the notification event and entry notes

Check that the notification is enabled, its event is valid and routing conditions produce a recipient. Open the test entry and inspect Notes for the notification sending result. Gravity Forms documents these checks in [Troubleshooting Notifications](https://docs.gravityforms.com/troubleshooting-notifications/). An entry can help preserve the inquiry while you investigate email.

> **Hire us to repair the missing form emails** Send the form URL, plugin name, intended recipient domain and a recent test result. We will trace the logs, correct notification and sending settings within the agreed scope, and verify delivery and replies. You get scope and price in writing before work starts. Fer LLC, Wyoming, US business · +1 310 734 8943. [Hire us to fix my form emails](https://fer.marketing/contact#form)

## Post SMTP shows email as sent but not received: follow it beyond WordPress

In Post SMTP's Email Log, locate your test by time, subject and recipient. Open View to confirm From and To, then Transcript to inspect the sending exchange. The [official Post SMTP log guide](https://postmansmtp.com/docs/email-logs/how-to-view-a-sent-email/) shows these actions. Use the actual transcript and provider event rather than relying on the sent badge alone.

Acceptance by a sending server and placement in the recipient's inbox are different events. A later rejection, spam filtering or quarantine can explain the gap. [Postmark explains acceptance versus inbox delivery](https://postmarkapp.com/blog/the-difference-between-accepted-and-delivered).

- [ ] Find the same message in the sending provider: Match recipient, timestamp and message ID when available. Read the delivery event and exact response. Check for rejection, deferral, bounce or suppression before resending.
- [ ] If the destination server accepted it, ask the mailbox administrator to trace it: Search spam, quarantine, forwarding rules and blocked senders. Give the administrator the test's time, recipient and message ID.
- [ ] Compare another destination: Test a mailbox you control at another provider. If it arrives there, focus on the failing destination and its policy. If it fails everywhere, examine the shared sender and sending route.

Use the provider's event to choose your next step. Avoid switching services or repeatedly resending customer inquiries before you know where they stopped.

## Set up authenticated sending and verify SPF, DKIM and DMARC

Use a single mail route through an SMTP plugin or a supported provider API integration. Follow your provider's host, encryption, port and authorization settings. Do not copy credentials or a port from an unrelated tutorial. Check whether a Force From setting overrides your form's sender; [WP Mail SMTP's setup documentation](https://wpmailsmtp.com/docs/how-to-set-up-the-other-smtp-mailer-in-wp-mail-smtp/) explains that override.

SMTP login authenticates the connection to the sending service. Domain authentication helps the receiver evaluate the message. [Google's sender guidelines](https://support.google.com/a/answer/81126) describe SPF, DKIM and DMARC checks; passing authentication still does not guarantee inbox placement.

| Check | What to verify |
| --- | --- |
| SPF | The envelope sender domain authorizes the service actually sending the message. |
| DKIM | The provider signs messages and its published key verifies the signature. |
| DMARC | The visible From domain aligns with a passing SPF domain or DKIM signing domain. |

Use the sending provider's exact DNS records. Inspect a newly received message's authentication results to verify the route you changed. [Google's DMARC guide](https://support.google.com/a/answer/2466580) explains alignment and policy rollout. Coordinate with whoever manages company email before changing a policy that also affects staff mail.

## Verify the full contact path before calling it fixed

1. **Preserve the current setup.** Save the form and mail settings before editing. Keep a current WordPress backup before changes that may need a rollback.
2. **Send a mailer test.** Send a labeled test to the intended business mailbox. Resolve any connection or authorization error before testing the form.
3. **Submit the public form.** Test as a visitor, with ordinary inquiry text. Check every notification branch your team relies on, plus any acknowledgment sent to the visitor.
4. **Match logs to actual receipt.** Confirm the intended mailbox received the same test. Review the sender and authentication results, then reply to verify that Reply-To reaches the test visitor.
5. **Leave a recovery and retest routine.** Record the settings changed and the test evidence. Agree who checks saved entries where available, monitors failures and retests after mail, DNS or form changes.

Add these delivery and reply checks to your [WordPress maintenance checklist](https://fer.marketing/guides/wordpress-maintenance-checklist).

## Hire Fer LLC to repair your contact form emails

Fer LLC is a Wyoming, US business operating fer.marketing, founded by Fernando Marcano. We trace CF7, WPForms or Gravity Forms failures, repair notification and sending settings within the agreed scope, and test receipt and replies with your team. Send the form URL, plugin name and a recent test result for a written quote. Fernando does or reviews the work. See our published record on the [About page](https://fer.marketing/about).

- Trace the failure from the submitted form to the receiving mailbox.
- Correct the notification, sender and provider setup within the agreed scope.
- Hand over test evidence, changed settings and a practical retest routine.

https://fer.marketing/contact#form

## FAQ

### Why does my contact form say sent when no email arrives?

The on-screen confirmation and the mail handoff do not prove receipt. Match a real submission to the mail log, then trace its provider event and the destination mailbox. This shows which part of the contact path still needs investigation.

### Should the visitor's email go in From or Reply-To?

Use an authorized address on your site's domain in From. Put the visitor's validated email in Reply-To. That lets staff reply to the visitor while the website sends under its own identity.

### Will an SMTP plugin fix Contact Form 7 automatically?

It can provide the sending route, but it will not correct the wrong recipient or a broken Mail template. Review the CF7 warning, verify the sender, then test the actual form through to receipt.

### Why does the SMTP test work while WPForms notifications fail?

The test checks a different trigger. Review the affected form's enabled notification, recipient and conditions. Then submit that form and look for its own message in the log, rather than treating the mailer test as a full form test.

### Can you recover inquiries that never reached my inbox?

Only if a copy exists in saved entries, retained mail logs or another connected system. We can check what is available within the agreed scope. A form success message alone does not mean there is a recoverable copy.

### What should I send you for a repair quote?

Send the form URL, plugin name, intended recipient domain and what a recent test showed. A redacted error or log excerpt helps. Keep passwords, API keys and private customer submissions out of the initial message; access can be arranged after scope is agreed.

### Can you guarantee every form email will reach the inbox?

No. The receiving system controls filtering. We can correct the setup, trace provider responses and verify real test delivery. The handover should also give your team a way to spot and investigate future failures.

A repair is ready to hand over when a real inquiry reaches the right person and their reply reaches the visitor. Keep the evidence with the site's maintenance notes.

## Get your form inquiries to the right mailbox

Send your form URL, plugin name, intended recipient domain and a recent test result. Include a redacted error or log excerpt if available. We will trace the failure, repair the agreed form and sending settings, and verify receipt and replies with your team. Scope and price are agreed in writing before work starts.

Fer LLC, Wyoming, US business · +1 310 734 8943

[Hire us to fix my form emails](https://fer.marketing/contact#form)
