A service page not ranking has one of exactly three causes: Google has not indexed it, Google has indexed it but never shows it, or Google shows it so far down that nobody sees it. Each cause has a different fix, and guessing wrong wastes months. The good news is that Google Search Console tells you which one applies to your page in about twenty minutes.
This article is the diagnosis. Work through the three checks in order, stop when one matches your page, and apply the fix for that cause. If you have not set up Search Console yet, our setup guide takes ten minutes and you will need it for everything below.
Check one: is the page indexed at all?
Open Search Console, paste the full URL of your service page into the search bar at the top, and press enter. This is the URL Inspection tool, and its verdict is the single most useful fact in this whole exercise.
You will see one of these results:
- URL is on Google. The page is indexed. Skip to check two.
- Crawled, currently not indexed. Google visited the page and chose not to keep it. This is a quality signal, not a technical fault. The usual culprit is a page that says nothing a hundred competitor pages do not also say. See the checklist below.
- Discovered, currently not indexed. Google knows the URL exists but has not bothered to visit. Common on new sites and on pages with no internal links pointing at them.
- Excluded by noindex tag or Blocked by robots.txt. Something on your site is actively telling Google to stay away. Check your SEO plugin settings and any staging-site leftovers. This one is a genuine technical fault and the easiest fix on this page.
- Alternate page with proper canonical tag or Duplicate, Google chose different canonical. Google thinks another URL is the real version of this page. Click through to see which URL it picked. Often it is a www versus non-www duplicate, or a near-identical service page for another town.
If the page is not indexed, nothing else matters yet. Fix the stated reason, use the Request Indexing button, and check back in a week. Do not spend time on keywords or copy for a page Google refuses to store.
Check two: indexed, but zero impressions
Go to the Performance report, click New, then Page, and paste your service page URL. Set the date range to the last three months. If you see fewer than ten impressions in ninety days, Google has the page but never shows it to anyone. There are two possible reasons, and they look identical in the report but need opposite fixes.
Reason one: nobody searches the phrase
If your page targets "bespoke managed infrastructure partnership solutions", zero impressions may simply mean zero searches. Test it: type the phrase into Google yourself and look at the autocomplete suggestions. If Google does not try to complete it, and the results it returns are loose matches rather than pages using your exact wording, the query barely exists. The fix is a rename, not a rewrite: find the words customers actually use, which you can do without paid tools, and retitle the page around them.
Reason two: intent mismatch
This is the subtler one. Search your target phrase in a private browser window and look at what actually ranks. For a phrase like "IT support for accountants", the first page is often a mix of directories, listicles headed "10 best IT support providers", and comparison guides. If eight of the ten results are guides and directories, Google has decided that searchers want research material, not a single company's sales page. Your service page is the wrong shape for the query, and no amount of polishing will change that. This pattern, and what to publish when you hit it, is the whole subject of our companion piece on why service pages don't rank.
The two-minute intent test: search your phrase and count how many of the top ten results are individual companies' service pages. Fewer than three, and Google has classed the query as research, not purchase. Compete with content, not the service page.
Check three: impressions, but stuck at position 30 or worse
The third pattern looks like this in the Performance report: a few hundred impressions over three months, an average position between 30 and 60, and a click count you can tally on one hand. Google considers the page relevant enough to show occasionally, but not good enough to show prominently. Three causes account for nearly all of these cases.
Thin or boilerplate copy
Open the page and read it as a stranger. If it is under 300 words, or if every paragraph could sit unchanged on a competitor's site, Google has no reason to prefer it. Test for boilerplate directly: copy a full sentence from the page, paste it into Google inside quotation marks, and see how many other pages return. If your web designer used a template, that sentence may live on dozens of sites. While you are there, check the H1: view the page source and search for <h1>. If it says something generic like "Our Services" rather than naming the service and the place, fix that first.
No internal links pointing at it
Google reads your internal links as a statement of what matters on your site. Search Console shows this under Links, in the left menu, under Internal links. If your service page has one or two internal links while your blog posts have ten, you have told Google the page is unimportant. The fix costs nothing: go through your related blog posts and add a natural link to the service page from each.
A blog post is cannibalising it
This is the case that catches people out, because it looks like success. In the Performance report, click New, then Query, and enter your target phrase. Now click the Pages tab. If a blog post shows up at position 8 to 15 for the query while your service page sits at 35, Google has picked its favourite, and it is not the page you wanted.
You have two honest options. If the blog post genuinely answers the query, keep it ranking and make it work harder: link prominently from the post to the service page, and give readers a reason to click through, something we cover in detail in our piece on blog calls to action. If the post is a half-hearted duplicate of the service page, consolidate: move any unique material into the service page, then redirect the post to it. Do not leave two weak pages splitting one query between them.
The common causes, each with a test
- Thin content. Test: compare your word count and specificity against the current top three results. If they answer questions your page does not raise, you are thin. Here is how to spot and fix it.
- Template boilerplate. Test: quoted-sentence search, as above.
- No unique H1 or title. Test: view source, check the <title> and <h1> name the service and location.
- Domain too new. Test: does anything on the site rank in the top 20 for anything competitive? If the site is under six months old and nothing ranks, the page may be fine and the domain simply unproven. Patience, plus more published pages, is the fix.
- Competition too strong. Test: if the top ten for your phrase is national brands and directories with no local independents at all, target a longer, more specific phrase instead.
Rule of thumb: not indexed means fix the technical reason; indexed with zero impressions means fix the keyword or the intent; ranked at 30 plus means fix the page, the links pointing at it, or the sibling page competing with it.
Once you know the cause
The diagnosis usually lands in one of two places. If the page itself is the problem, rewrite it properly: our guide to writing a service page that ranks and converts covers the structure that works. If the query intent is the problem, the service page was never going to win alone, and the answer is supporting content that ranks for the research queries and funnels readers to the page that sells.
Where Helio SEO fits in
Helio SEO publishes that supporting content daily, planned around the queries your buyers actually research, with the internal links back to your service pages built in. If the diagnosis above pointed at a technical fault or a thin page, you can fix that yourself this afternoon and you do not need us for it. If it pointed at intent mismatch or a lack of supporting content, that is the part we automate.