Dev.to WebDev 🛠 Dev 👁 0 📖 1 min read

Your contact form "worked" — so why did the email never arrive?

When a small-business website's contact form shows "Message sent", three separate systems have already done three separate jobs: The form accepted the input and stored or forwarded it. The web server handed the message

When a small-business website's contact form shows "Message sent", three separate systems have already done three separate jobs:

  1. The form accepted the input and stored or forwarded it.
  2. The web server handed the message to a mail-sending mechanism (PHP mail, an SMTP plugin, or a form service).
  3. The receiving mail server decided whether to accept, filter, or silently drop it.

A failure in step 2 or 3 leaves no error on the page. The visitor sees success; the business sees nothing. That gap is where most "lost" enquiries actually live.

Things worth checking, in order:

  • Is the message being sent at all? Test with a delivery-log plugin or your form tool's entry list. If the entry exists but no email exists, the problem is delivery, not the form.
  • From-address mismatch. If the email claims to come from your domain but is sent from a different server without SPF/DKIM alignment, receivers may reject it or file it as spam. DMARC failures can make this silent.
  • PHP mail vs authenticated SMTP. Default PHP mail on shared hosting is frequently filtered. Sending through an authenticated SMTP account for the same domain is the single most common fix.
  • The recipient side. Check the spam folder once, then the mail host's delivery logs — "delivered to spam" and "never arrived" need different fixes.
  • Notification address drift. Forms often still notify an old address after a staff change or a domain migration. The form works; the mailbox is just no longer watched.

The full checklist we maintain, including the order to test each item and what to record, is here:
https://practicalsaaslab.com/contact-form-email-not-received/

📰 Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.