The short answer
In the sites that come to me, the commonest cause is that the site is slow or broken on a phone, and the owner never sees it because they check it on a desktop. Behind that come three more: no clear next step on the page, visitors from the wrong searches, and nothing on the page that shows a real person stands behind it. Each one can be checked in about fifteen minutes with tools you already have.
First, check the visitors are real
Before anything else, make sure the numbers you are worried about are people. A new site attracts bots within days, and they show up in your analytics as visits with no pages read and no time on the page. In Google Analytics, look at the country and the engagement time: visitors from countries you do not serve, staying for under ten seconds, are not customers you are failing to convert. They were never going to call. Form spam is the same trick from the other side, as a "message" that reads like an enquiry and is a bot posting to your form, so count only the messages a human could have written.
Once you know the real number, compare it with the enquiries. Hundreds of real visitors a month and nothing in the inbox means something on the site is in the way, so work down this list.
Cause one: the site is slow or broken on a phone
This is the one I find most often, and it is the one owners miss, because they check their site on the office computer and it looks fine. In the analytics of the small business sites I look after, more than nine in ten visitors arrive on a phone, usually on a mobile connection, often while standing somewhere. On that phone the hero photo is four megabytes, the menu button does nothing until the page finishes loading, the enquiry form has a field that will not accept a mobile number, or the "call now" button sits under a cookie banner. The visitor does not complain. They go back to the search results and tap the next business.
How to check it, in fifteen minutes: open your site on your own phone with wifi turned off, and time how long it takes before you could tap the phone number. Then put your address into Google's free PageSpeed Insights and read the mobile score, not the desktop one. Google's own thresholds are the ones to beat: the main content showing within 2.5 seconds, the page responding to a tap within 200 milliseconds, and nothing jumping around as it loads. Then fill in your own enquiry form from the phone and see whether it arrives.
The fix is usually unglamorous: photos resized and compressed, scripts you no longer use removed, the phone number as a tappable link at the top of every page, the form tested on a real phone. On a page-builder site that has grown over five years, it can mean rebuilding the page lighter.
Cause two: no clear next step
The second most common cause is that the page does not ask for anything. It describes the business, sometimes well, and then stops. There is no price or price range, so the visitor cannot tell whether to bother. The phone number is in the footer, in grey, as text rather than a link. The contact form is on its own page, three taps away, and asks for eleven things.
Check it by giving your site to someone who has never seen it and asking them to get a quote from you in under a minute, on their phone, while you watch without helping. Wherever they hesitate is the gap. The fix is one obvious next step on every page, worded as what happens next ("book a 30-minute call", "get a price by Friday") rather than a verb on a button, with the phone number tappable at the top for the people who would rather ring.
Cause three: the wrong visitors
Sometimes the site works and the people arriving were never going to buy. A blog post about how to fix a dripping tap brings in people who want to fix their own tap. A social post that got shared brings in people who liked the photo. A search phrase that happens to match your business name brings in people looking for something else with the same name.
Check it in Google Search Console: the Performance report lists the searches that brought people to the site, and the Pages report shows which pages they landed on. If the busiest page is an article and the quietest is your service page, the traffic is real but it is not buyers. The fix is to make the pages people land on do some selling (a line and a link to the service, at the top, not the bottom) and to write the next article for the question a buyer asks, such as what it costs, rather than the question a do-it-yourselfer asks.
Cause four: nothing says a real person is behind it
The last one is trust. The visitor has found you, the page loaded, the price is there, and they still do not call, because nothing on the page tells them who they would be dealing with. Stock photos of people who do not work there. No address, no ABN, no reviews, no photo of the owner, no mention of how long you have been going. In a trade where people are letting you into their home or handing over a deposit, that is enough to send them to the competitor with 54 reviews and a photo of the van.
Check it by reading your own home page as a stranger and listing every fact on it that could be verified: a name, a suburb, a year, a review you can click through to. If the list is short, that is the fix: your real photo, your real reviews pulled through from Google, the suburbs you cover by name, the ABN in the footer, and a sentence about who you are.
What I do when an owner asks me to look
I run the same four checks, in that order, with the data rather than a guess: the analytics with the bots stripped out, the phone test and PageSpeed on the five busiest pages, the Search Console search list, and a read of the home page as a stranger. The Free Audit is the short version of that, done within three business days, and it ends with your three biggest gaps in plain English and what I would fix first. It costs nothing and there is no follow-up unless you ask for one.