SEO · 8 min read
Internal Linking for Service Sites: A 30-Page Blueprint
Summary
Most internal linking advice builds blog hubs. A service business needs the reverse: posts feeding money pages. Here is the 30-page blueprint.
By Hyder Shah, Founder & CEO · Published July 13, 2026 · Updated July 13, 2026
Search a term like internal linking strategy and every page-1 result hands you the same picture: a pillar article in the middle, twenty cluster posts around it, arrows pointing inward. That model was built for publishers and SaaS blogs with 400 posts and no products to sell.
You run a service business. You have eight service pages, twelve city pages, a homepage, an about page, and maybe twenty blog posts. The pages that make you money are not in your blog. Copying the publisher model means you spend a year building link equity in a hub that never books a job.
This is the inverted blueprint: your money page is the hub, your blog is the spoke system, and the links point upward.
Why does the standard hub-and-spoke advice fail a service business?
Because it concentrates equity in the wrong page type. A publisher's pillar post is the asset — it monetizes on ad impressions, so pushing links into it is the whole point. Your equivalent asset is /services/emergency-plumbing or /plumber-in-fort-worth, and neither is a blog post.
The second failure is volume. Hub-and-spoke assumes 20-50 posts per cluster. A 30-page service site does not have that inventory and should not manufacture it. Twelve genuinely useful posts that each link upward into a service page beat fifty thin posts linking to each other.
The third is direction. In the publisher model, spokes and hub link both ways to keep readers inside the blog. You do not want readers staying in your blog. You want them one click from a quote form.
Which pages should be receiving your internal links?
Rank every URL into one of four tiers, and give the top two tiers roughly 80% of your in-content internal links. On a 30-80 page site, that usually means eight to twenty destination URLs total, not sixty.
| Page type | Role | Link direction | Target in-content inbound links |
| Core service pages | Primary money page | Receives from everything | 5-10 each |
| City / location pages | Secondary money page | Receives from posts + service pages | 3-5 each |
| Blog posts | Spokes that feed money pages | Sends upward, receives from pillar | 1-3 each |
| About / pricing / contact | Trust and conversion | Receives from nav + closers | Nav is enough |
Everything else — tag archives, thin category pages, author pages, the 2019 news post — should be receiving nothing and, in most cases, should not exist. If a page cannot be the answer to a search someone types before hiring you, it is not a link destination.
The structural work that makes those service pages worth linking to is a separate job. Get the on-page right first — see our breakdown of on-page SEO for service pages — then point equity at it.
How many internal links belong in one blog post?
Three to eight in-content links in a 1,200-2,000 word post, of which at least one and usually two point at a money page. Google no longer publishes a hard cap, but it does tell you to keep links readable: 'Don't chain up links next to each other; it's harder for your readers to distinguish between links,' per Google's link best practices.
The number matters less than the placement. A link inside a paragraph, where the surrounding sentence explains why you would click it, is worth more than four links dumped in a 'related reading' box at the bottom. Google reads the words around the link, not just the link.
One practical rule: every post you publish must earn its keep by sending at least one link to the money page it supports. A post about how long a roof lasts links to /services/roof-replacement. A post about permit rules in Denver links to your Denver page. No exceptions, no orphan posts.
What anchor text should point at a service page versus a city page?
Descriptive, varied, and readable — with the service term in it, but not the same exact-match string forty times. Google's link best practices say good anchor text is 'descriptive, reasonably concise, and relevant to the page that it's on and to the page it links to', and name 'Click here', 'Read more' and a bare 'website' as the bad examples — while warning you to 'resist the urge to cram every keyword that's related to the page that you're linking to.'
For a service page, rotate three or four natural variants that all contain the service noun. For a city page, the anchor should carry the service plus the place, because the place is the differentiator — a city page linked as 'learn more' is a wasted link.
| Target | Good anchor | Why it works | Bad anchor |
| Service page | 'emergency plumbing repair' | Service noun, reads naturally in a sentence | 'click here' |
| Service page | 'how we handle slab leak repair' | Descriptive, varied, non-spammy | 'plumber plumbing plumber near me' |
| City page | 'our plumbers in Fort Worth' | Service + place, the two ranking signals | 'this page' |
| Blog post | 'what a slab leak actually costs' | Matches the destination's H1 intent | 'read more' |
Do not build one anchor-text template and paste it site-wide. Identical anchors on every page look like the templated-link pattern that gets thin sites filtered, and they teach Google nothing new. If you are also chasing external links, the same rule applies — see link building for service businesses.
Do footer links to every city page do anything?
Very little, and less every year. A footer block listing all 40 cities is a boilerplate element repeated on every URL. It is crawlable, so it does help discovery, but it is not the signal you think it is — it says nothing about what any individual page is about, because it is identical everywhere.
The honest split: use the footer for crawl access, use in-content links for relevance. A city page that gets one contextual link from a post about that city's permit rules is doing better than a city page sitting in a 40-item footer list with nothing else pointing at it.
If your footer city list is your entire location strategy, the pages themselves are usually the problem — near-identical templates with the city name swapped. Fix that first; our guide to location pages for service-area businesses covers what actually differentiates them.
How do you find orphan pages without buying a crawler?
In about 30 minutes, with your sitemap and Google Search Console — no crawler licence. An orphan page is a URL that exists and may even be in your sitemap, but has zero internal links pointing to it. Google's own guidance is blunt about why that hurts: it primarily finds pages through links from other pages it already crawled.
- Open /sitemap.xml and paste every URL into a spreadsheet. On a 30-80 page site this is a five-minute job.
- In Search Console, open Indexing > Pages and export both the indexed and not-indexed lists. Anything sitting in 'Discovered - currently not indexed' is your first orphan suspect.
- For each suspect URL, run a site search for links to it: search your domain in Google for the page's distinctive service term and see which of your own pages surface.
- Faster check: use your CMS search or grep your codebase for the URL path. Zero matches outside the sitemap and nav means zero internal links.
- Usual culprits: PPC landing pages nobody links to, a city page dropped from the nav in a redesign, an old service page that got a new URL and lost its inbound links.
The PPC landing page case is worth naming, because it is the most common. Someone built /lp/ac-repair-offer for a Google Ads campaign, it converts fine on paid traffic, and it has never received a single internal link. It will never rank. That is either a deliberate choice or an accident — decide which.
How do you audit your internal links on a 30-page site in an hour?
Work through five checks in order; on a site under 80 pages each takes 10-15 minutes and you need no paid tool. The goal is not a 200-row spreadsheet. It is a list of the five links you are going to add this week.
- Click depth: from the homepage, can you reach every money page in three clicks or fewer? If a city page takes five, it is buried. Fix the nav or add contextual links from pages one click up.
- Inbound count: for each service and city page, count in-content links pointing at it. Under three is thin. Zero is an orphan.
- Anchor audit: list the anchor text of every link into each money page. All identical? Rewrite half of them. All 'learn more'? Rewrite all of them.
- Direction check: how many of your blog posts link to a money page? If the answer is 'some', go add the missing ones. Every post, one link, minimum.
- Dead weight: which pages receive links but should not exist at all? Merge or remove them rather than keeping equity flowing into a page nobody should land on.
Then re-link your old posts. A two-year-old post that ranks for a long-tail query and links nowhere useful is free equity sitting on the shelf. Adding one contextual link from it into the matching service page is the cheapest SEO work you will do all quarter.
One warning: internal links move equity around your site. They do not create it. If none of your pages have external authority, a perfect internal link graph moves nothing much. Internal linking makes existing authority land in the right place — it is not a substitute for earning any.
If the crawl and structure side of this is where you are stuck, that is what our technical SEO service exists for — click depth, orphan pages, crawl access, and the link graph that decides which of your pages Google treats as important. Want a second pair of eyes on your current structure first? Get my free audit.
Where does this fit in your stack?
If you're running a US service business, the playbook in this post pairs with our full services lineup and applies cleanly across our supported industries and US locations. If you want help implementing it, book a free strategy call — we'll review your current setup and prioritize the next three moves.
For the deeper engagement details, see our SEO service. New to the terminology here? Our SEO & marketing glossary defines every acronym in this post.
What are the most common questions about this topic?
Common questions readers send us about this topic.
How many internal links should a blog post have?
Three to eight in-content links in a 1,200-2,000 word post is a sane range for a service site, with at least one pointing to a money page. There is no official Google limit anymore. What matters is that each link sits inside a sentence that explains why you would click it, and that they are not chained together in a row, which Google explicitly advises against because readers cannot distinguish them.
Should internal anchor text be an exact-match keyword?
No. Use descriptive anchors that contain the service term but vary the wording. Google's guidance is that good anchor text is descriptive, reasonably concise, and relevant to both the page it sits on and the page it points to — and it names 'click here' and 'read more' as the bad examples. 'Emergency plumbing repair' passes. 'Click here' fails. So does the same exact-match string repeated forty times across your site, which reads as templated and teaches Google nothing new about the destination.
Do footer and navigation links pass the same value as in-content links?
No. Footer and nav links are boilerplate, repeated identically on every page, so they carry almost no page-specific relevance signal. They are still useful for crawl discovery, which is not nothing. But a single contextual link from a relevant blog post, surrounded by topically matching text, does more for a city page's rankings than sitting in a 40-item footer list.
What is an orphan page and how do I find one?
An orphan page is a URL with zero internal links pointing to it. It may still be in your sitemap and may even get indexed, but Google primarily finds pages through links from pages it already crawled, so an orphan is fighting uphill. On a site under 80 pages, find them by listing every sitemap URL in a spreadsheet, exporting the Search Console indexing report, and checking which URLs never appear as a link target.
Should blog posts link to service pages or to other blog posts?
Service pages, primarily. On a publisher site, posts link to posts to keep readers in the content. On a service site, your money pages are the destination and the blog exists to feed them. A useful default: every post links to at least one service or city page, plus one or two genuinely relevant posts. Not the other way around.
How many clicks from the homepage should a money page be?
Three or fewer. If a service or city page takes four or five clicks to reach from your homepage, it is buried and both users and crawlers treat it as unimportant. On a 30-80 page site there is no excuse for depth beyond three. Fix it by adding the page to a relevant nav or hub, or by linking to it contextually from a page one level up.
Does adding internal links to an old post help it rank again?
It can, and it is one of the cheapest fixes available. An old post that already ranks for a long-tail query has accumulated some authority; adding a contextual link from it to a relevant service page routes that authority somewhere useful. Adding links into the old post can help it too. What internal links cannot do is create authority your site never earned externally.
About the author
Hyder Shah
Founder & CEO, Foundgrove
Hyder Shah is the founder of Foundgrove, an SEO and GEO agency for US service businesses. See our editorial policy for how these guides are researched and reviewed.
Related reading
Other tactical pieces from the Foundgrove blog.
- SEO · 12 min read
On-Page SEO for Service & Location Pages: 2026 Playbook
Service pages rank or die on-page: here's the title/H1 formula, keyword architecture, internal anchors, and the doorway-page line for location pages.
Read the seo playbook → - SEO · 12 min read
Link Building for Service Businesses: What Works in 2026
Service businesses earn authoritative backlinks via chambers, sponsorships, and digital PR (HARO) - not paid links Google penalizes.
Read the seo playbook → - SEO · 12 min read
Location Pages for Service-Area Businesses: Rank in More Cities
Service-area businesses rank in cities they don't have an office in by building location pages with genuine local content, not template clones.
Read the seo playbook → - SEO · 9 min read
SEO-Friendly URL Structure for Service Business Sites
Most service sites bury pages four folders deep, then pay for it in a redirect migration. Here is the flat URL architecture to build instead.
Read the seo playbook → - SEO · 11 min read
How to Build a Topical Map for a Service Business
A topical map is 30-50 pages, not 400. Here is a complete worked map for one roofing company: every node, the grouping rule, and the publish order.
Read the seo playbook → - SEO · 8 min read
Discovered - Currently Not Indexed on a New Domain
Discovered - currently not indexed means Google skipped the crawl, not your content. Here is the crawl-demand fix for a fresh service-business domain.
Read the seo playbook →
Want help applying this to your business?
Book a free 30-minute call. We'll review your current acquisition stack and show you the three highest-leverage moves for your industry and state. Or read how our SEO service works.