Why Is My Website Not Getting Leads? 9 Fixes
Traffic but no enquiries? The nine real reasons websites fail to convert, the fix for each one, and the arithmetic that tells you which is costing you money.
Founder & lead developer at WebDevStudio — React, TypeScript and MERN
If your website isn't getting leads, it's one of two problems: not enough of the right people arrive, or the right people arrive and leave without doing anything. Those need opposite fixes.
Buying more traffic for a page that converts nobody is the most expensive mistake on this list, and it's the one I see most often. So the first section is arithmetic, not advice.
First: traffic problem or conversion problem?
Open your analytics and pull last month's two numbers.
monthly enquiries ÷ monthly unique visitors × 100 = conversion rateA service business with genuine buying-intent traffic should land somewhere around 1–3%. So 500 visitors ought to produce roughly 5–15 enquiries.
- Below about 1% — conversion problem. Fixing the page is faster and cheaper than buying traffic.
- At 2% or better, but still too few leads — traffic problem. The page works; not enough people reach it. That's a content and search spend, not a redesign.
- Under a couple of hundred visitors a month — you have both, and not enough data to tell them apart. Start with reason 4 below, because until tracking is right, everything after it is guesswork.
That last case is the honest starting position for most small business sites, and it's why the fixes below are ordered the way they are rather than by how visible they look.
1. There's no single obvious next action
A low-converting homepage usually offers six equally weighted things to do: read about us, view services, download a brochure, follow us on Facebook, call, email. Six choices lands the same way as none.
Every page needs one primary action, repeated. Everything else should look secondary — a text link, not another button competing for the same attention.
On a long page that primary action should appear at least three times: above the fold, mid-page immediately after your proof, and at the end. Not three different actions. The same one, three times.
Then make the words specific. "Submit" and "Learn more" say nothing. "Get a fixed-price quote" tells the visitor exactly what happens next and what it commits them to.
2. It's slow, and mobile visitors leave before it renders
Google's Core Web Vitals guidance treats a Largest Contentful Paint under 2.5 seconds as the threshold for a good experience, measured on real mobile connections rather than your desktop fibre (web.dev on LCP).
Check it honestly rather than by feel:
- Run the page through PageSpeed Insights
- Read the field data section, not the lab score — that's real visitors on real phones
- If mobile LCP is above 4 seconds, fix that before you touch copy or design
Three causes account for most of it: hero images shipped at full camera resolution, a page builder loading fifteen plugin stylesheets, and a slideshow nobody asked for.
The free win is responsive, correctly sized images:
<img
src="/images/hero-1200.webp"
srcset="/images/hero-600.webp 600w, /images/hero-1200.webp 1200w"
sizes="(max-width: 768px) 100vw, 1200px"
width="1200"
height="675"
loading="eager"
decoding="async"
alt="Team fitting a commercial kitchen extraction unit"
/>The explicit width and height matter as much as the srcset. Without them the browser can't reserve space, so the page jumps as each image lands — a separate Core Web Vital, and a separate reason people leave. The full list of causes is in why your website is slow.
3. The form asks for too much, too early
Every field costs you submissions. A first-contact form does not need company size, budget range, industry, referral source and a 500-character project description.
Ask for the minimum that lets you reply: a name, an email or phone number, and one free-text box. Qualify on the call — that is what the call is for.
A required phone number is the quietest killer of the lot. Plenty of people won't hand a number to a business they haven't spoken to yet. Make it optional and you keep those enquiries.
A CAPTCHA on a low-traffic site is the second. You're adding friction for every real visitor to stop a bot problem you may not have. A honeypot field does the same job invisibly:
<div style="position:absolute;left:-9999px" aria-hidden="true">
<label for="website_url">Leave this field blank</label>
<input type="text" id="website_url" name="website_url" tabindex="-1" autocomplete="off" />
</div>// Server-side: a real person never sees this field, so a value means a bot.
if (req.body.website_url) {
return res.status(200).json({ ok: true }); // look successful, don't tip it off
}4. Nobody is tracking submissions, so nobody knows the form works
This one costs the most and gets noticed the least. I have opened client sites where the contact form had been failing silently for months — success message showing on screen, email never sending, nobody aware because nobody was measuring.
Track the submission as an event, and fire it on the server's answer rather than the button click:
const form = document.querySelector("#contact-form");
form.addEventListener("submit", async (e) => {
e.preventDefault();
const data = Object.fromEntries(new FormData(form));
try {
const res = await fetch("/api/contact", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(data),
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
// Only after the server confirmed it. A click event would have counted
// every failed submission as a lead.
window.gtag?.("event", "generate_lead", {
form_id: "contact-form",
page_path: window.location.pathname,
});
form.reset();
showSuccess();
} catch (err) {
console.error("[contact] submit failed", err);
showError("Something went wrong — please email us directly.");
}
});Tracking clicks tells you people tried. It does not tell you they succeeded, and the gap between those two numbers is exactly where lost leads hide.
Then test the whole path monthly: submit your own form from your phone, on mobile data, and confirm the email lands in the inbox you actually read.
5. The leads arrive, but they land in spam
If your form emails claim to come from your domain but are sent by your host's server, mail providers may treat them as forged. Enquiries then sit in a junk folder nobody opens.
The fix is three DNS records, and it's a one-off job:
- SPF — which servers are allowed to send mail as you
- DKIM — cryptographically signs your outgoing mail
- DMARC — tells providers what to do when the first two fail
; SPF — one record only, listing every service that sends as you
example.com. TXT "v=spf1 include:_spf.google.com include:sendgrid.net ~all"
; DMARC — start in monitor mode, read the reports, then tighten to quarantine
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; pct=100"Better still, don't rely on email alone. Write every submission to a database or a sheet as well, so a mail failure costs you a notification rather than a lead.
6. The copy talks about you instead of the visitor's problem
Read the first sentence on your homepage. If it opens with your company name, how long you've been trading, or the word "welcome", you've spent your most valuable line on something nobody was searching for.
- Weak: "Established in 2011, Acme Ltd is a family-owned provider of quality plumbing solutions."
- Strong: "Burst pipe or blocked drain in Hamilton? We'll be there today, and you'll know the price before we start."
Same business, same facts. The second one answers where, when and how much — the three things every buyer checks silently before they get in touch.
7. There's no proof, so there's no reason to believe you
Claims convert nobody. Evidence converts. Roughly in order of power:
- A named case study with a before-and-after number
- Reviews carrying the reviewer's full name and business
- Logos of clients you have genuinely worked with
- Photographs of real work, not stock images
- Certifications, insurance, trade memberships
Three specific named reviews beat thirty anonymous five-star ratings. And put the proof next to the call to action, not on a testimonials page nobody visits — it has to be in front of the person at the moment they decide.
8. You're ranking for the wrong searches
Sometimes the traffic is real and the page is fine — the visitors are simply the wrong ones. Someone searching "how to unblock a drain yourself" will not hire you, however good the page is.
Check Google Search Console: Performance → Queries, sorted by impressions. If your top queries are informational — "how to", "what is", "DIY" — you're attracting readers rather than buyers.
The fix is a service page written for commercial-intent phrasing: the words people use once they've decided to pay someone. One page per service per location, each genuinely different from the others. If you're not appearing at all rather than appearing for the wrong things, that's a different problem — why your website doesn't show up on Google covers it.
9. Local buyers can't tell whether you're local
For any business serving an area, visitors are scanning for two things: are you near me, and can I call you now. Bury the phone number in the footer and you've lost them before they find it.
Put your service area, phone number and hours in visible text, then mark them up so search engines and AI assistants can read the same facts:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Acme Plumbing",
"url": "https://example.com",
"telephone": "+64-7-555-0100",
"areaServed": ["Hamilton", "Cambridge", "Te Awamutu"],
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Example Street",
"addressLocality": "Hamilton",
"addressRegion": "Waikato",
"postalCode": "3204",
"addressCountry": "NZ"
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "07:30",
"closes": "17:00"
}]
}Validate it with Google's Rich Results Test, and keep every detail identical to your Google Business Profile. Details that disagree undermine both.
What each fix actually takes
| Fix | Effort | Who can do it |
|---|---|---|
| Tracking and email deliverability (4, 5) | About a day | Needs someone technical |
| Speed (2) | 1–3 days | Needs someone technical |
| Form and call to action (1, 3) | About a day | Doable in-house on most platforms |
| Copy and proof (6, 7) | 1–2 weeks | Mostly your time gathering material |
| Search intent and local signals (8, 9) | Ongoing | Either |
Most of this list is hours rather than budget, and more than half of it is work you can do yourself.
The order to fix these in
Each step tells you whether the next one is necessary, which is why the order matters more than the list:
- Tracking and deliverability (4, 5) — without these, everything after is guesswork
- Speed (2) — the single biggest lever on mobile
- Form and call to action (1, 3) — the cheapest wins on the list
- Copy and proof (6, 7) — mostly your time
- Search intent and local signals (8, 9) — ongoing, slowest to show
Then give it a full month after the first three before you judge the result. Lead volume is noisy; one week tells you nothing at all.
When you don't need to hire anyone
Worth saying plainly, because a good share of this list is genuinely DIY.
Reasons 1, 3, 6 and 7 are copy and form changes. On Squarespace, Shopify or a reasonable WordPress theme you can do all four yourself this week. Don't pay someone for that.
Reasons 2, 4 and 5 are where it gets technical — event tracking that fires on real success, DNS records, and performance work that survives your next theme update. Guessing here is how a site ends up reporting successful submissions while the enquiries quietly vanish.
A rebuild is only justified when the platform itself blocks the fixes — usually a page builder you cannot get under four seconds, or a host whose mail you cannot configure. If someone quotes you a new site before they've run your numbers, get a second opinion. Does your website need a developer or just a few fixes? is the longer version of that judgement call, and how to hire a web developer covers what to ask if the answer is yes.
If it does turn out to be structural, the two decisions that follow are which platform and what it should cost: WordPress vs Wix vs Custom and website redesign cost in New Zealand.
Frequently asked questions
How many leads should a small business website get per month?
It depends on traffic, not on the site alone. At a healthy 1–3% conversion rate, 500 monthly visitors should produce roughly 5–15 enquiries. Below 1%, fix the page before you buy traffic — more visitors to a page that converts nobody just costs more.
My website gets visitors but no enquiries — what should I check first?
Check the form actually works, and that submissions are tracked. Submit it yourself from a phone on mobile data and confirm the email arrives in your inbox rather than in spam. Silent form failures are far more common than most owners expect, and nothing announces them.
Is a slow website really costing me leads?
Yes, particularly on mobile. Google's Core Web Vitals guidance puts a good Largest Contentful Paint under 2.5 seconds. Well above that, a share of visitors leave before the page renders, so your copy and your call to action are never read at all.
Do I need a new website to get more leads?
Usually not. Tracking, speed, a simpler form and clearer copy fix most lead problems on an existing site for a fraction of what a rebuild costs. A rebuild is justified when the platform itself blocks those fixes — not because the site looks dated.
How long before I see more leads after fixing this?
Allow a month of data after the quick wins. Conversion changes show up within weeks, because they affect people already arriving. Changes driven by search intent take months, because they depend on rankings moving first.
Can I fix this myself or should I hire someone?
The copy, proof and form work is genuinely DIY on any mainstream platform. Tracking, email deliverability and performance are where self-diagnosis usually goes wrong — those three are worth a second pair of eyes.
Where to start
Do the arithmetic at the top first. It takes five minutes and it decides whether you're fixing a page or buying traffic — and getting that one call wrong is what makes the rest expensive.
If you'd rather not diagnose it alone, send me your URL with last month's visitor and enquiry counts and I'll tell you which of the nine are actually costing you leads. No charge for the diagnosis, and you can see the kind of work it leads to on the projects page.
Interested in working together on a React or MERN project?
Get in Touch