A contractor directory covering 11 counties across Minnesota and Wisconsin, with a beautiful site Google had decided to ignore.
TenPenny Home was only a year old, built on WordPress with Elementor and JetEngine, and there was nothing wrong with how it looked. It is a stunning site. It got 21 clicks a month.
The numbers underneath explained why. Of 1,770 URLs, Google had indexed 166. Around 3,000 trade and city combinations existed only as filter URLs the builder generated, which Google could not read as pages. Another 1,100 contractor pages were too thin to earn a place in the index. Google had already judged the site as not worth its time.
That is the trap with heavy page builders: a site can be genuinely beautiful and still be invisible, because what Google reads is not what visitors see.
I rebuilt it from scratch as custom code, the same call I make on every build, whether it is a directory this size or a single trade business: extract everything worth keeping, then start again. The WordPress export did not capture everything, so the rest came straight off the old hosting.
The build took about 19 hours of work across five days. Every one of the 4,796 new pages is real HTML that Google and AI tools can read, including the roughly 3,000 trade and city combinations that used to be invisible filter URLs.
Three checks ran on every single build. A URL parity check that fails the build if any of the 1,787 old addresses would break. A crawl that follows every link on every page, around 493,000 links in a run. A content rule check on every page. Those gates caught what nobody had noticed: all 31 trade hubs had been gutted, nine calculators had quietly become empty placeholders, leads were not recording which contractor they belonged to, a redirect loop had made eleven city pages unreachable, and pages that were meant to be hidden were still announcing themselves to Google.
Because Google had just spent a year deciding this domain was mostly filler, and the wrong response to that is turning up with 4,796 pages. The launch is deliberately lean: the 1,028 strongest pages first, to earn Google's trust back, with the rest opened up slowly over time. The thin contractor profiles stay out of the index for good, and vetting a contractor flips their pages live on the next build.
And the honest bit: the rebuild launched days ago, so nobody knows yet how fast Google comes back. The before numbers above are real. The after numbers get added to this page when Search Console has them, not before. The site itself is live at tenpennyhome.com.
| Before | After | |
|---|---|---|
| Pages Google can read | 166 indexed of 1,770 URLs | 4,796 built, 1,028 launched lean |
| PageSpeed, mobile | 89 | 96 |
| PageSpeed, desktop | 90 | 100 |
| Hosting bill | A WordPress plan | Zero |
| Clicks a month | 21 | Too early to say. Watch this space. |
The old site recorded no events at all. The new one tracks everything in its own database: page views, phone clicks, form submissions and calculator completions, each one tagged with the contractor, trade and place it belongs to.
Behind a password, every contractor now has a funnel: views, phone clicks, leads, conversion rates. A join page feeds new contractor applications into the same dashboard, straight from the county pages that need one. The nine calculators work again, and every completion is logged.
That is the difference between a website and a system. The directory does not just exist any more, it reports.
The free check reads your site the way Google does. It takes about 30 seconds, and the pricing is one flat number.
See the plan →