Delayed mail is different from missing mail. The message eventually arrives, so its headers usually contain timestamps that reveal which handoff waited: WordPress, a queue, sending provider, receiving gateway or mailbox rule.
Preserve one complete header from a harmless labelled test and build a timeline.
Record four times
Capture:
- browser submission time;
- WordPress entry/mail-log time;
- sending provider acceptance time;
- final mailbox delivery time.
Use timezones carefully. Email Received headers are ordered and may use different offsets.
Do not share full headers publicly; they contain addresses, message IDs and infrastructure.
Check whether WordPress queued the notification
Some plugins send immediately; others use WP-Cron, Action Scheduler or a provider queue. Review pending/failed actions and their scheduled/attempt times.
Low-traffic sites can run WP-Cron late when the next visitor arrives. A disabled/broken system cron can leave mail waiting.
Do not delete queues indiscriminately; they may include orders, subscriptions or other notifications.
Inspect SMTP provider events
Find the message by ID, recipient and timestamp. Look for accepted, queued, deferred, delivered, bounced or suppressed states.
A provider can accept from WordPress immediately but defer delivery because the recipient gateway returns a temporary 4xx response. Record the exact SMTP response.
Check account sending limits and queue backlog without exposing other customers’ mail.
Read the final message route
The mailbox’s full headers show every Received hop and time. Find the largest gap between adjacent hops.
If the sender holds the message, repair its queue/authentication/capacity. If the recipient gateway delays after acceptance, the recipient mail administrator/provider owns that hop.
Do not infer the delay from the Date header alone; applications can set it before actual sending.
Consider greylisting and reputation
Some receiving systems temporarily reject an unfamiliar sender and accept the retry later. A correctly configured SMTP provider retries automatically.
SPF/DKIM/DMARC failures, poor IP reputation or sudden volume can increase deferrals. Fix authentication and sending behaviour; do not repeatedly resend identical tests.
Ask the recipient administrator to trace the message ID and temporary response.
Check filtering after delivery
Mail can reach the organisation but wait in moderation, quarantine, transport rule or helpdesk processing. Compare gateway delivery time with the user-visible inbox time.
Review forwarding chains, shared mailbox rules and connectors. A delay after final SMTP acceptance is not a WordPress PHP issue.
Use a second controlled recipient to isolate domain-specific behaviour.
Repair and verify
Fix the proven queue runner, SMTP timeout/limit, authentication or recipient rule. Keep configuration/DNS rollback.
Send one labelled test and compare all four timestamps again. Confirm form entry saved immediately and sales sees the message within the agreed window.
Monitor several real non-sensitive delivery events, not only one warm test.
Decide what "late" means operationally
Set a practical threshold for the form. A sales enquiry expected within five minutes has a different requirement from a weekly report. Record the submission time in WordPress and include a reliable timestamp in the notification so staff can distinguish a late email from a late response.
During diagnosis, make stored entries visible to the authorised team or provide a monitored fallback route. Do not create automatic forwarding chains as a quick fix: each extra mail system adds another queue, spam check and potential failure.
If delay appears only during busy periods, compare it with hosting resource limits and mail-provider throttling rather than assuming a random WordPress fault.
When to request help
Request a delivery assessment when headers show long gaps, queues recur or delays affect only one domain. Send redacted timestamps, message ID and SMTP response—not message content or credentials.
A useful diagnosis names the waiting hop and its owner rather than recommending a new form plugin without evidence.