Send one identifiable test enquiry and follow it from the form to the receiving mailbox. Don’t start by installing another email plugin. First establish whether your shop created the notification, handed it to a mail service, and got it to the right place.
A cheerful “Message sent” banner is not a delivery receipt. WordPress’s own documentation says a successful wp_mail() result doesn’t establish that the recipient received the email. That distinction is where useful troubleshooting starts. WordPress: wp_mail().
This guide is for a WooCommerce shop’s contact, product-question or quote-request form. Order confirmations are a different trigger; there’s a separate check for those below.
In this guide
Find the system that owns the message
Open the affected page and identify how the enquiry is submitted. Then open its settings in WordPress or the service that supplies it.
- A WordPress form or quote plugin: inspect that form’s notification settings. Its destination may not be your WordPress administrator email.
- An embedded external form: check the form service’s submissions and notification settings. A WordPress mail plugin won’t repair a message sent entirely by another service.
- An email link: if clicking it opens the visitor’s email app, there is no form submission for WordPress to log. The visitor still has to send the message.
Write down the form name, intended recipient and sending service before changing anything. Otherwise, you can spend an afternoon fixing the email system that never handled the enquiry.
Send one traceable test
Use your own test details, not a real customer’s enquiry. Open the public page while logged out, complete the required fields and submit once. Give the test a unique reference in the subject or message, such as SHOP-MAIL-20260910-A.
Keep this small record. Replace the example reference and bracketed fields:
Test reference: SHOP-MAIL-20260910-A Page and form: [URL / form name] Submitted at: [date, time and timezone] Expected recipient: [mailbox] Visible result: [exact success or error message] Saved submission: [found / not found / not available] Sending log: [timestamp, status and message ID, if available] Mailbox result: [inbox / spam / quarantine / not found] Reply check: [correct test address / wrong address / not checked]
Look in the form’s saved submissions if it offers them. A stored entry tells you the submission was captured; it doesn’t prove the notification was generated. No entry is inconclusive if the form doesn’t store submissions. Then look for that same test in the mail service’s activity log, using its time, recipient or message ID.
Check the receiving mailbox through webmail as well as your usual email app. Search for the reference in all folders, including spam. For a business mailbox, ask the mailbox administrator to check quarantine and rules if you can’t see them yourself.
Work out where it stopped
Use the first point where the evidence stops to choose your next action:
| What you find | What to check next |
|---|---|
| The form shows an error or never confirms submission | Record the exact error. Check required fields and the form’s validation or spam-handling results before investigating inbox delivery. |
| The submission is saved, but no notification attempt is recorded | Check whether notifications are enabled, the recipient is populated and conditional rules include this enquiry. Confirm that the log covers this sending route before treating absence as failure. |
| The mail service records a rejection or failure | Copy the error code and message ID. Use that evidence to investigate the sender setup, connection or recipient problem it identifies. |
| The provider records delivery, but the inbox is empty | Ask what “delivered” means in that provider. Receiving-server acceptance is not proof of inbox placement. Check recipient-side filtering, quarantine, forwarding and mailbox rules. |
| The message arrives, but Reply targets your shop | Fix the form’s Reply-To setting so your response goes to the person who asked the question. |
If the relevant sending route has no usable log, ask your host or form provider to trace the test before buying anything. A temporary mail logger can help with WordPress-generated mail, but it needs to cover the actual route. Keep access and retention limited: enquiry logs can contain customer messages. WooCommerce’s guidance distinguishes its own transactional logs from other WordPress email. WooCommerce email troubleshooting.
Check the sender and recipient—not just the plugin
For a shop notification, use an authorised shop-domain address as the sender. Put the visitor’s address in Reply-To, not From. The message is being sent by your shop; it shouldn’t pretend to come from the visitor’s Gmail account.
For example, this is the intended relationship—not a configuration to paste unchanged:
To: the monitored mailbox that handles enquiries From: an address on your shop domain, authorised by your mail service Reply-To: the visitor’s validated email field
In Contact Form 7, open the form’s Mail tab. Check To and From; set Reply-To in Additional headers using the actual email-field tag from your form. Other form tools have their own notification controls. Don’t copy a tag from a tutorial unless your form uses that field name. Contact Form 7 mail settings and sender and Reply-To guidance.
A sensible From address is only part of the job. Your sending service must also be authorised to send for the domain. Ask it to confirm SPF, DKIM and DMARC alignment for this particular route. These are domain-authentication checks, not settings that become correct simply because an SMTP plugin is active. Follow the actual provider’s setup instructions rather than pasting generic DNS records into your domain. WooCommerce’s email authentication guide.
If the test points to unreliable web-host sending, we recommend a properly authenticated mail service with useful delivery logs. First check what your existing provider already includes. Don’t run two competing mail-routing plugins, and don’t assume moving the sender fixes a form that never creates a notification.
If it’s an order email, start with the order
For a missing order notification, open WooCommerce → Settings → Emails and inspect the relevant notification. Check that it’s enabled and, where editable, addressed correctly. Then inspect the order status and notes: an expected payment or status change may not have happened.
Current WooCommerce documentation describes a transactional-emails log under WooCommerce → Status → Logs. If your installation provides it, inspect the matching attempt and log settings. A successful handoff is not an inbox receipt. That log is not a universal record of contact-form mail. WooCommerce’s order-email checks.
Don’t change a real order’s status just to produce a test email. Use an appropriate test order or your provider’s documented test process, keeping real payments and fulfilment out of it.
Give support something they can trace
“Emails aren’t working” invites a generic checklist. This gives the team responsible for the failing step a specific message to investigate. Fill in what you know; leave unknown results marked unknown.
Subject: Trace missing website enquiry [test reference] Hi, Please trace this test notification from [site / form service]. Form/page: [URL and form name] Submission time, including timezone: [time] Test reference: [reference in the message] Intended recipient: [address] Configured From address: [address] Sending service: [service, or unknown] Submission result: [exact message; saved entry if available] Mail-log result and message ID: [result, or unavailable] Recipient checks: [inbox, spam, quarantine or rules checked] Please confirm whether the notification was generated, accepted for sending, and accepted or rejected by the receiving server. If it failed, please provide the relevant error and which system needs the fix. Please also check sender authentication for this route. Thanks.
Send this through the provider’s private support channel. Include test evidence, not passwords, API keys or unrelated customer records.
A fix is finished when the enquiry arrives and you can reply
After each relevant change, repeat the public-form test with a new reference. Confirm the actual message arrives in the intended mailbox, includes the useful enquiry details, and targets your test address when you press Reply. Send that reply to your own test address and check receipt.
A mail plugin’s test button can help isolate the sending connection. It cannot replace submitting the real form: the form may use different recipients, conditions or even a different sending service.
Keep the successful reference and date with your site-maintenance notes. Repeat the check after changing your form, mail provider or domain-authentication settings. The useful outcome isn’t a green dashboard. It’s an enquiry you can answer.
Updated 10 September 2026.

