This is part of the ongoing WordPress optimization series on this site. If you’ve been following along, we’ve been going through kindoflost.com piece by piece — speed, indexing, content rewrites — and documenting what actually happens when you try to fix a real site without a dedicated SEO budget. Internal link building was supposed to be a quick win. It wasn’t, and the reason it wasn’t is entirely my fault for framing the problem backwards from the start.

The first attempt, and what went wrong
When I started thinking about internal links, I framed it as an outbound problem. Which posts on this site weren’t linking out to other posts? Find those, add a link, done. That framing made sense to me at the time — a post that sends no traffic anywhere feels like a dead end, and adding an outbound link felt productive.
So we ran through the site, identified posts with zero outgoing contextual links, and added them. The work felt clean. Methodical. I thought we were done.
Then we built the actual link graph — crawled all 232 posts and mapped which ones were linking to which — and the picture looked nothing like what I’d imagined. A handful of posts had accumulated 24, 30, even 10+ inbound links. The revolving utilization post had 30. Authorized user tradelines had 24. Meanwhile, 180 posts — more than three quarters of the site — had exactly zero inbound links from any other post on the site. Zero. They existed, Google could theoretically find them through a sitemap, but nothing on the site was pointing a reader or a crawler toward them. (In SEO terms, those are called orphan pages, and they’re about as useful as a page that doesn’t exist.)
The outbound approach hadn’t created balance. It had just added more links flowing toward the same posts that were already popular, leaving everything else untouched.
Why orphan pages are a problem worth fixing
Google discovers pages by following links. That’s still the fundamental mechanism — Googlebot starts somewhere it knows about, follows every link it finds, and adds new URLs to its queue. If no other page on your site links to a given post, Google has to find it some other way: your sitemap, a backlink from another domain, or just luck. In practice, “Discovered — currently not indexed” in Search Console usually means Google found the URL but decided it wasn’t worth the crawl budget. An inbound link from an already-indexed page is one of the cleaner ways to say “this one actually matters.”
There’s also a PageRank argument. Internal links pass authority between pages. If all your links point to three posts and ignore 180 others, those 180 posts get almost no internal authority signal, which makes them harder to rank even when they’re well-written. It’s not unlike what happens when you pour all your credit utilization into one card and leave others at zero — the distribution matters, not just the total. (I’ve written about revolving utilization and why the spread across cards matters more than the aggregate number, and the internal link logic is honestly the same.)
Going back to square one
So we scrapped the outbound-first approach and rebuilt from the inbound side. The question changed from “which posts aren’t linking out?” to “which posts aren’t being linked to?” That single reframe changed everything about the process.
Here’s what the actual process looked like. We crawled all 232 posts — fetching the rendered HTML for each, parsing the content area, and extracting every internal link. From that we built a matrix: for each post, how many other posts link to it (inbound), and how many does it link to (outbound). The 180 orphans showed up immediately. We also saw which posts were acting as over-connected hubs — getting linked to constantly while most of the site stayed disconnected.
Then we sorted the orphans by indexing status — posts Google had marked “Discovered” or “Crawled — currently not indexed” went first, since those are the ones where a new inbound link has the most immediate impact. For each orphan we found the best source post: something in the same topic cluster, something that didn’t already have too many outgoing links, something where the link would read naturally in context. One link per orphan. The goal wasn’t to flood any post with links — it was to make sure every post had at least one clear path in from somewhere else on the site.
After the inbound pass we had one orphan remaining out of 210 active posts (the CPN post, which is genuinely difficult to link to naturally given its content). We also ran a second pass to find posts with zero outgoing links — ended up with 11 of those — and added one outgoing contextual link to each. Not because outbound links per se move the needle, but because a post that links to nothing reads like a content island, and the sentence we added in each case was genuinely useful to the reader.
Submitting to Google and what I’m watching for
Once the links were in place, we submitted all 103 source posts — the ones we’d edited to add new links — to the Google Indexing API. The logic: Google needs to recrawl those pages to discover the new links and follow them to the target posts. Without a submission, you’re waiting on Google’s natural crawl schedule, which could take weeks for a site this size.
What I’m watching for over the next few weeks is whether the “Discovered” and “Crawled — currently not indexed” posts start moving into indexed coverage. That’s the real test. If a post was sitting at “Discovered” for months and it gets indexed three weeks after picking up its first inbound contextual link, that’s pretty clean evidence the linking helped. If nothing moves, the problem is probably content quality, not linking — and that points to a different kind of work.
One thing I’ve already stopped expecting: that Jetpack’s related posts widget at the bottom of each page does much of this work. Google can follow those links, but they’re auto-generated, JavaScript-rendered, and live outside the main content area. They’re not nothing, but they’re not the same signal as a hand-written sentence in the middle of a paragraph that says “if you’re dealing with X, this post on Y goes deeper.” That’s the link that actually tells Google something about editorial intent.
I’ll update this series when there’s actual data to report. In the meantime, if you’re in a similar situation — a content-heavy site where you’ve been producing posts for years without a systematic linking strategy — the quick diagnostic is to crawl your own site and count the inbound links per page. The distribution will probably surprise you.
Things that I use, like, and am affiliated with:
Mint Mobile offers great cell phone service for $15 flat, get $15 off using the link. Get discounted phones with service activation and no contract.
I never spend money before I check Mr Rebates or Rakuten to get cashbacks, rebates, discounts, coupons or cheaper gift cards.
