Skip to content
Zen Webmaster

Contact Form Not Sending Emails? How to Find Where Leads Disappear

Here is the version of this problem that costs the most money. A visitor fills in your contact form, taps the button, and sees “Thanks, we’ll be in touch.” Your inbox stays empty. Nobody notices, because nothing looks broken. If you run a contracting company, a dental office, a law firm or a shop, that silence can go on for weeks before anyone asks why the phone has been so quiet.

If your contact form is not sending emails, the form itself is rarely the culprit. Far more often the message gets lost on the way: after the website accepted it, but before it reached your inbox. The useful question is not “why doesn’t my form work?” but “at which step does the inquiry disappear?” This guide is written for small business owners in the US and Canada, and it walks through those steps in order.

Diagram of the steps a website inquiry takes from the form to your inbox
A form message passes through several technical steps. When one fails, all you see is the result: no lead.

This can happen on any kind of website

It does not matter whether the site runs on WordPress, a website builder, an online store platform or a hand-coded page. The same failure shows up on contact forms, quote requests, booking forms and newsletter sign-ups.

What differs is how much you can see. On some platforms you get a sending log, a list of saved entries and the mail settings. On others you get a visual editor and nothing else. So the first job in any diagnosis is to learn what the site actually records, how it sends mail, and whether any trace of the inquiry exists to look at.

One thing worth knowing up front: a form can work flawlessly and Gmail or Outlook can still treat the resulting email as suspicious. The button, the success message and the form fields are one problem. Whether a mailbox provider trusts the message is a separate one, and it is the one that most often bites.

The path an inquiry takes, and where it breaks

Every submission travels through the same series of steps:

  1. The visitor fills in the form.
  2. The site validates the fields and runs spam protection.
  3. The site composes an email.
  4. Your hosting or a mail service tries to send it.
  5. DNS records for your domain tell receiving servers whether that sender is authorized.
  6. Gmail, Outlook or Yahoo decides whether to accept it.
  7. The message lands in the inbox, lands in spam, or is rejected.
  8. If the site keeps its own record, a copy of the entry stays in the admin area, a database or a CRM.

Each step has its own typical failure. These are the ones I run into most:

  • the site sends through the hosting server’s basic mail function with no real authentication
  • SMTP was never set up, or the SMTP password was changed and nobody updated the site
  • the From address is the visitor’s email instead of an address on your own domain
  • Reply-To is missing, so your reply does not go to the person who wrote
  • SPF does not list the service that actually sends your mail
  • DKIM was never turned on, or stopped working after you moved your email to a new provider
  • a strict DMARC policy rejects mail the site sends
  • the receiving mailbox is full, or a filter rule sends the messages to spam
  • a captcha or anti-spam plugin blocks real people
  • page caching or a speed plugin interferes with the form
  • an update changed the form fields, the email template or the form’s behind-the-scenes address
  • the site stores nothing, so a lost email is a lost lead

Why From and Reply-To matter so much

This is the single most common configuration mistake, so it gets its own section.

Say a visitor types jane@gmail.com into your form. A lazily configured site then sends you a message with jane@gmail.com in the From line, even though the message comes from your hosting server and not from Gmail. To a receiving mail system, that looks like someone pretending to be Gmail. Some providers send it to spam. Some refuse it without telling anyone.

The setup that works:

  • From: an address on your own domain, such as no-reply@yourcompany.com or website@yourcompany.com
  • Reply-To: the visitor’s email from the form
  • To: the mailbox where you or your office manager actually read mail

Now the message honestly says “this came from your website,” and when you hit Reply, your answer goes straight to the customer. It will not cure every delivery problem, but it removes one of the most common triggers for blocking.

Why SMTP usually beats sending straight from your host

Web hosting is built to serve pages. Sending mail reliably is a different job, and cheap shared plans often have weak sender reputation, blocked ports or hourly sending caps.

SMTP gets around that. Instead of the hosting server improvising, the site logs in to a real mail service and hands the message over. That service might be your Google Workspace or Microsoft 365 account, or a transactional sender such as SendGrid, Mailgun, Postmark or Brevo.

It still has to be configured correctly:

  • the right port and encryption type
  • correct login credentials
  • a sender address that matches your domain
  • SPF, DKIM and DMARC records in place
  • a test message sent and received
  • delivery checked on Gmail, Outlook and your own domain mailbox
  • a look at whether the test landed in spam

Installing an SMTP plugin and walking away is not enough. A perfectly installed plugin can still leave every message in spam if the DNS records were never touched. Prices are in US dollars, and if you want a hand with this, form and email setup starts at $35.

Save the inquiry on the site too, if you can

The safest design does not rely on email alone. Each submission is also stored somewhere you can open later: the website’s admin area, a database, a CRM or a log. If the email vanishes, the record is still there, and you can call the person back.

That matters most if you pay for traffic. Picture a roofing company that buys clicks on Google Ads during storm season. Every one of those clicks cost real money. A lost form entry is not a technical footnote, it is a lead you paid for and never saw.

Website inquiries stored in an admin dashboard or CRM as a backup to email
When entries are saved in the admin area or a CRM, you can see what you missed even if the email never showed up.

Not every site can do this. The common obstacles:

  • a closed website builder that does not expose submissions
  • a third-party form tool that keeps data only on its own servers
  • an older site that emails and saves nothing
  • a plan that does not include a submission history
  • no CRM, webhook or logging add-on installed
  • privacy rules about how long you may keep personal data (look at what applies to you, for example CCPA/CPRA in California, PIPEDA in Canada or Quebec Law 25; I am not a lawyer)
  • a database that was wiped after a hack or a bad restore

So when I audit a form, I check delivery and I also ask one plain question: where does a copy of the inquiry live? If the honest answer is “only in the inbox,” then your whole lead flow depends on one mailbox filter.

A hypothetical example: leads that existed but were invisible

Here is a composite scenario, not a real client. A heating and cooling company in Ohio starts a Google Ads campaign before winter. Calls come in, but the contact form seems dead. After two weeks the owner decides the ads are not working and thinks about canceling.

The real story: months earlier the company had moved its business email to a new provider, and the website kept its old way of sending. Every notification went out with the visitor’s own email address in the From field. Gmail and Outlook saw a message from a server that had no right to speak for that address. Some copies went to spam, others were refused silently. The visitor, meanwhile, always saw “Message sent.”

In this scenario the site also saved entries in its admin area, which turned out to be the lucky part. The log showed the submission time, the page, the phone number and the email of each person who had written in, and a few of them could still be called back. Without that log, the only trace would have been ad clicks and analytics events, with no contact details at all.

The fix was not a new form plugin. It was configuration:

  • From changed to an address on the company’s domain
  • Reply-To set to the visitor’s email
  • sending moved to SMTP
  • SPF and DKIM checked and corrected
  • a basic DMARC record added in monitoring mode
  • a sending log switched on
  • test messages sent to several different mailboxes, including a Gmail and an Outlook address
  • a test from a phone

After that, the owner could see for themselves that leads were arriving, and could look up history any time doubts came back.

What you can check yourself in ten minutes

None of this requires touching code.

  1. Open your site as a customer would, in a private browser window, not from the admin panel.
  2. Submit the form from a computer.
  3. Submit it again from a phone.
  4. Use an email address different from the one that normally receives inquiries.
  5. Look in the inbox, spam, Promotions, Updates and “All Mail”.
  6. Press Reply on what arrived and see whose address it goes to.
  7. If your form is supposed to send an auto-reply, confirm the customer copy actually shows up.
  8. Find out whether the entry was saved in the admin area, a CRM or a spreadsheet.
  9. Write down the time of the test, the page and the email you used.
  10. Change one setting at a time. If you change five, you will never know which one helped.
Testing a website contact form on a smartphone before starting ads
Test the way a customer would: on a phone, with a different email address, and before you spend on ads.

Do this before any ad campaign, every time. If paid traffic lands on a page whose form silently drops messages, the budget disappears and you may conclude the offer is weak when the real problem is delivery. My companion article on how to check that your contact form works goes deeper on the testing routine.

When the email is never created at all

Occasionally nothing is sent because the form fails earlier. In that case SMTP and DNS fixes will change nothing.

Typical reasons:

  • the submit button does nothing on certain phones
  • a required field is broken or hidden
  • a captcha rejects everybody
  • a JavaScript error stops the form after you tap Send
  • the form lives in a popup that conflicts with page caching
  • a theme or template file is not passing the data along
  • a security plugin or firewall blocks the form’s submission address
  • on a bilingual English and French site, the French version points to a form that does not exist

That last one is worth a mention for Canadian businesses. If you serve customers in both languages, test each language version separately, because each can have its own form with its own settings.

Because of all this, a diagnosis should never begin with email alone. I walk the whole customer journey: open the page, fill in the form, submit, read the confirmation, check the inbox, check the log, check whether the entry was stored.

If you would rather not do this yourself

If a form drives your appointments, quotes or sales, it cannot be “set up once and forgotten.” It needs periodic checks, especially after updates.

When I look at a form for a small business, I check:

  • that it works on desktop and mobile
  • whether a popup, cache, captcha or script is interfering
  • how From and Reply-To are set
  • whether SMTP is in place and authenticating properly
  • whether SPF, DKIM and DMARC pass
  • whether messages go to spam on Gmail and Outlook
  • where a copy of every inquiry is stored
  • whether recent missed inquiries can still be recovered
  • every other form on the site, not just the main one
  • what should be tested again after each update

Afterward a light routine keeps it healthy: a test message once a month, a test after every update, a test before every ad campaign, a sending log, and stored entries wherever the platform allows it. It is dull maintenance, and it is exactly what prevents the “customers wrote and we heard nothing” scenario.

Questions small business owners ask about contact forms

Why does my form say “sent” if I never get the email? Because the form only reports that the website accepted the entry. What happens afterward, including how the message is sent and whether Gmail or Outlook accepts it, is a separate process the visitor never sees.

Is it worth worrying about this if I get few inquiries? Yes, perhaps more. A site with a handful of leads a month cannot afford to lose even a few, and low volume makes a broken form harder to spot.

I use Gmail for my business email. Does that fix it? Not automatically. Gmail is a fine place to receive mail, but the site still has to send it properly, which means correct From, SMTP and DNS records.

Can anything be recovered if the form has been failing for months? Sometimes. If the site stored entries, yes. If not, you may only have ad clicks and analytics to go on. That is why saving entries is worth setting up.

Not sure whether your own forms reach you? Request a free site audit and I will send back a written list of what I find, including whether your test inquiry made it through.