The Contact Button That Dials Nothing
We have crawled a few hundred small business websites this year. The most common revenue-costing defect is not SEO or design. It is that the phone link, the email link, or the form quietly does not work.
Everybody tests the front door. Almost nobody tests the exit.
Businesses will spend a year on rankings, run paid traffic into a page, argue about a hero image, and never once tap their own phone number on a real phone. We have crawled a few hundred small business websites this year while researching prospects, and the defect we find most often is not thin content or a slow load. It is that the specific thing you are asking a visitor to do does not work.
Not “works badly.” Does not work. Dials nothing. Sends to nobody. Posts to an endpoint that stopped existing.
Here is the actual catalogue, drawn from sites we looked at over the past several weeks. Names are left out on purpose. The patterns are the point.
The vanity number that overflowed
A personal injury firm with a memorable 1-800 number spelled out of eight letters. Great on a billboard. The problem is arithmetic: a US number has seven digits after the area code, and eight letters is one too many.
Somebody built the tap-to-call link straight from the letters. The result was a twelve-digit string sitting inside the tel: link on both the Call Now and the Text Now button. Twelve digits is not a phone number. On desktop nothing happens. On a phone the call fails.
The displayed text was perfect. The number printed on the page was correct and readable. Only the thing underneath it, the part nobody looks at, was wrong. Every mobile visitor who trusted the button instead of the printed digits went nowhere.
The area code that does not exist
A solar company’s contact page carried twelve separate tap-to-call anchors. All twelve pointed at the same number, and that number began with an area code that has never been assigned in the North American numbering plan. Two digits had been transposed at some point and copied everywhere the page needed a phone link.
Twelve chances to call. Zero of them connected.
We checked the boring things first, because a finding this loud is usually a mistake on our end. The page was in their own sitemap, it was canonical, it was set to index and follow. It was a live, indexed page inviting people to call a number that cannot be dialed.
The email address at a domain that does not resolve
A firm with more than three decades of history published an email link whose address was a one-letter misspelling of their own domain. Two letters swapped. The mistyped domain returns NXDOMAIN, which means it does not exist at the DNS level at all.
So every prospective client who preferred email to a phone call, over however many years that link has been live, got a bounce. There is no inbox filling up with missed opportunity to go clean out. Those messages were never delivered anywhere.
The placeholder the website builder shipped with
One contact page carried a live, clickable link to info@mysite.com. That is the literal placeholder a popular site builder drops into its templates. It was never replaced, and it is styled and positioned exactly like a real address, because to the template it is one.
On the same page, a second email link displayed one Gmail address in the visible text and pointed at a completely different address in the mailto:. A visitor who reads the address and types it manually reaches one inbox. A visitor who clicks reaches another. Only one of those is monitored.
We have also found plain href="tel:" with nothing after the colon, and a homepage with five separate links to /Contact.html where the file that actually exists is lowercase. Five links, five 404s, and the working path used by none of them.
The form that was not there
A contact page instructed readers, in plain visible copy, to complete the form below. There was no form on that page. We verified it four ways before believing it, including against the site’s own sitemap.
Another site’s /contact-us/ URL redirected to a “request received” thank-you page. Not after submitting anything. On arrival. Anyone clicking Contact was told their request had been received before they had typed a single character, and the destination was set to noindex, so search engines were being handed a dead end too.
The check that most audits get backwards
Here is the part where we correct ourselves, because it is the most useful thing in this article.
There is a widely repeated audit finding that goes: “your phone number is plain text with no tel: link, so mobile visitors cannot tap to call.” We wrote that finding into real emails to real firms. It is usually false.
iOS Safari automatically detects phone-shaped numbers and makes them tappable on its own. It does that unless the page explicitly turns it off with <meta name="format-detection" content="telephone=no">. So a plain-text number on a page with no such tag is generally still tappable on an iPhone. The absence of a link is not the presence of a problem.
When we found this, we ran the corrected check against claims we had already made and killed twenty-two of thirty-five of them in a single pass. Some had already gone out. We sent corrections.
We got a second one wrong in the other direction. Two law firms were told their phone links were broken because a pattern we were using matched markup like data-replace-href="tel:{token}". That attribute belongs to a dynamic number insertion tool, the kind that swaps in a tracked number when a visitor arrives from a campaign. The real href next to it carried a working number the whole time. That is a correct implementation with a working fallback, not a defect. Our pattern was matching the tail end of a longer attribute name.
Both of those are the same mistake wearing different clothes: a check that looks at markup instead of at behavior will confidently describe a problem that is not there. The fix in both cases was to stop reading the source and start testing the outcome.
How to check yours properly, in about ten minutes
Do this on a real phone, not a desktop browser pretending to be one.
Tap every route to reach you. Every phone link, every email link, every form, in the header, the footer, the contact page, the sticky mobile bar, and inside the body copy of your top three pages. Actually place the call. Actually let the email compose window open and read the address in the To field.
Compare what is displayed to what is sent. The visible text and the underlying link are two different pieces of data and nothing keeps them in sync. Long press a link on mobile and the real destination appears.
Submit your own form and wait. A form that posts to a dead endpoint, an expired plugin, or a mailbox nobody opens looks completely identical to a working one from the visitor’s side. They get the thank-you message either way. Send yourself a test with a timestamp in the message body and confirm it arrives, then check the spam folder, then check whether anyone is actually monitoring that address.
Check both hosts. Try it with www and without. Sites regularly serve two versions and only one gets maintained.
Check after every redesign, every plugin update, and every phone system change. These links break silently and there is no error report. The site does not know. Your analytics will show the click and cannot tell you the call failed.
Count how many taps it takes. Once you are confirming that the routes work, notice how many of them exist and how buried they are. A contact route that works and cannot be found is the same outcome as a broken one.
Why this keeps happening
Nobody owns it.
The designer built the layout. The developer wired the template. The phone system changed two years later. Somebody added a tracking number. A plugin updated. The person who knew what /Contact.html was left. Each individual step was reasonable and no single person was ever responsible for the end-to-end question of whether a stranger on a phone can reach a human at your company.
And the failure is completely silent. A broken checkout throws an error. A broken contact link produces nothing at all. The visitor taps, nothing happens, they assume it is their phone, and they call somebody else. You never learn their name. Nothing in any dashboard registers the loss.
This is the cheapest fix in marketing and the one with the most direct line to revenue. You are already paying for the traffic. The people finding these pages are the ones furthest down the funnel, the ones who read enough to decide to reach out. Losing them at the last step is the most expensive place on the entire site to lose anybody.
Our website and SEO service page covers how we handle this as part of a build. If you want to know what is currently broken on yours, run a free audit and we will check the exits, not just the entrance.
FAQ
Does a phone number need a tel: link to be tappable on mobile?
Usually not. iOS Safari detects phone-shaped numbers and makes them tappable automatically unless the page sets <meta name="format-detection" content="telephone=no">. An explicit tel: link is still better practice because it gives you control over exactly which digits get dialed and works consistently across browsers, but the absence of one is not automatically a broken experience. Test the behavior on a real device before believing any audit that claims otherwise.
How do I tell if my contact form is actually delivering?
Submit it yourself with a timestamp in the message, then confirm the message arrives in the inbox you expect. Check spam. Then confirm a human is monitoring that inbox. A form that posts nowhere shows the visitor the same success message as one that works, so the only reliable test is a delivered message that a person sees.
Our number changed. What breaks?
More than people expect. The header and footer links, the contact page, any sticky mobile call bar, schema markup, the Google Business Profile, directory listings, the number baked into images or a logo lockup, and any tracking or call-recording layer sitting on top. Sites usually update the visible text and miss at least one of the underlying links.
What is a dynamic number insertion tool and does it break tap-to-call?
It swaps in a different phone number depending on how the visitor arrived, so calls can be attributed to a campaign. Implemented correctly it leaves a real working number in the href and only replaces it when its script runs, so nothing breaks if the script fails. It is worth confirming your implementation has that fallback, because one that writes the placeholder token directly into the link would fail for anyone whose script did not load.
How often should we test this?
After any redesign, theme update, plugin update, phone system change, or host migration, and once a quarter regardless. These are exactly the moments things break, and none of them produce a warning.
Test the exit
Your site’s job is to get a stranger to a human. Everything else on it is in service of that one transaction.
Spend ten minutes on a real phone tapping every route someone could use to reach you. It is the highest-return ten minutes available on most small business websites, and almost nobody spends it.
Want a second set of eyes on yours? Book a 15-minute call. No deck, no fluff. Strategy first. Tactics second. The work works.
Reliable PR & Marketing is a strategy-first marketing agency in Bakersfield, California. We run integrated SEO, PR, web, and content for founder-led companies across Kern County and nationwide. Strategy first. Execution always.