Case Studies

8,739 Impressions, 13 Clicks, and Why AdSense Was Never the Problem

Three sessions of HSAMaxGuide fixes, each one driven by real Search Console data: page-one rankings nobody clicked, a grammar bug on 17 pages, a www duplicate hiding 12 pages from the index, and the honest math on what the traffic was actually worth.

Gardy Written by Gardy·September 26, 2026·7 min read
Line chart of HSAMaxGuide search performance from July 19 to September 23, 2026: daily impressions rising to about 375 in early August and falling below 100 by September, with clicks at zero on most days and never above two

This is part two of the HSAMaxGuide story. Part one was about the idea: how a single question, is this HSA eligible, grew into a connected network of guides, calculators, and topic hubs. This one is about what happened when real search data started coming in, and what it told me to fix.

Over three working sessions, I stopped guessing about what the site needed and started reading what Search Console was actually saying. Almost every fix came from a specific number, not a hunch.

The numbers, honestly

Between July 19 and September 23, 2026, HSAMaxGuide earned 8,739 impressions and 13 clicks. That's a 0.15% click-through rate. (Part one quoted 8.56K impressions for a slightly different window. Same site, same story, different date range.)

The shape of the chart matters more than the totals. Impressions jumped in late July, peaked in early August, then drifted down through September. Clicks barely registered on any single day. Search engines were showing the site to people. People weren't choosing it.

That gap is where all the useful work was.

The first fix was undoing one

Before touching anything new, I found that an earlier change had gone too far. FAQ structured data had been stripped out across the site because Google stopped showing FAQ rich results on May 7, 2026. That part was true. But on seven guides the FAQ content itself had been deleted at the source, not just hidden from the output.

Removing the markup was never necessary. FAQPage is still a valid schema type, Google has said unused structured data doesn't cause problems, and other search engines can still read it. What mattered was keeping the markup consistent with what visitors actually see on the page. So I rebuilt each of the seven FAQs from that guide's own visible text, and restored the original schema on the 13 state tax guides and item pages where it had only been filtered out.

Every schema block was checked to make sure it actually parsed before it shipped. A full link audit afterward came back clean: 102 pages, 583 internal links, zero broken.

A fix based on a real change can still go further than the change required.

Page-one rankings, zero clicks

The highest-leverage finding was a group of item pages ranking in positions 8 to 13 on Google. For a site this young, that's a genuinely good position. They were getting real impressions and no clicks at all.

The title tags explained it. Several were long enough that Google cut them off in the results, and the words it cut were exactly the ones people were searching for: the product name and HSA/FSA eligible. Someone searching whether allergy medicine is HSA eligible saw a title that trailed off before it answered them.

Bar chart comparing title lengths before and after the fix against a roughly 60-character display limit: allergy medicine went from 79 to 61 characters, menstrual products from 75 to 66, and ibuprofen from 60 to 52
Title length before and after, against Google's approximate 60-character display limit.

I shortened three titles and moved the searched words to the front. Two of the new titles still run a few characters past 60, and that's deliberate. The goal wasn't to hit a number. It was to make sure that if Google trims anything, it trims the end of the title and not the answer. The full descriptive names stayed everywhere else on the page: the heading, the schema, the meta description. Truncation is a title tag problem, not a page problem.

The bug hiding right next to it

While checking those titles, I found a grammar bug running across the site. Seventeen item pages had plural names, things like diapers, tampons, contact lenses, and glasses, and all of them said Is instead of Are in the title, the heading, and the schema. Are glasses HSA eligible reads fine. Is glasses HSA eligible reads like a machine wrote it, which is exactly the impression a site in a money topic can't afford.

I fixed it with an explicit list of the 17 affected pages rather than a clever rule that tries to guess which words are plural. A list is boring, but you can read it, check it, and know exactly what it touched. I verified each page individually, plus one singular page as a control to confirm nothing else changed.

Nineteen pages that weren't indexed

Search Console showed 19 of 108 pages not indexed. The tempting move is to treat that as one problem and start changing things. Instead, I pulled Search Console's own breakdown of why each page was excluded and went through it reason by reason.

Horizontal bar chart of the 19 unindexed pages by cause: 12 alternate pages that were www duplicates, 4 discovered but not yet crawled, 2 pages with an HTTP redirect, and 1 crawled page that was the sitemap file
All 19 unindexed pages, grouped by the reason Search Console gave for each.

Only one of the four reasons was a real problem:

  • Alternate page with proper canonical tag, 12 pages. Every example URL was the www version of a page. Fixed.
  • Discovered, currently not indexed, 4 pages. Normal crawl lag on a young site. No action needed.
  • Page with redirect, 2 pages. The old HTTP versions, redirecting as they should. Working as intended.
  • Crawled, currently not indexed, 1 page. The sitemap file itself, which isn't supposed to be indexed.

The 12 www duplicates had a simple cause. The site's .htaccess file had no rule redirecting www to the non-www address, so Google was crawling both versions of every page as separate URLs and sorting out the duplicates using canonical tags alone. One redirect rule, placed first so it runs before anything else, removes the duplicate at the server instead of asking Google to resolve it every time.

It's the same lesson DryOutHub taught me in a different form: the fix is often in a configuration file, not in the content.

The AdSense question

At one point I asked what those 8,739 impressions would be worth in AdSense once the site was approved. The honest answer needed a correction first.

Search impressions and ad impressions are different things. A search impression means the site appeared in someone's results. AdSense pays on ads people see on the site, which requires an actual visit. The real number to work from wasn't 8,739. It was 13.

Run through a realistic range of ad slots and earnings per thousand views, those 13 visits come to roughly $0.24 to $0.75 for the entire three months. Not per month. Total.

AdSense approval was never the bottleneck. There was nothing to monetize yet, because there was almost no traffic yet.

That reframed the whole project. Approval status doesn't change that number. More clicks do, and more clicks come from the kind of fixes above: titles people can read, pages Google can index cleanly, content that looks trustworthy in a money topic.

Where HSAMaxGuide stands now

None of this means the site isn't working. It means the site was young, and Search Console did exactly what it's for: it pointed at specific weaknesses I could turn into specific engineering work.

Those fixes weren't the finish line. They became the foundation for the next stage of the project. HSAMaxGuide now has a connected network of eligibility pages, categories, guides, and calculators, organized under seven topic hubs: eligible expenses, Letters of Medical Necessity, contributions, HSA versus FSA, reimbursement, state taxes, and life after 65.

So the question has changed. It's no longer whether Google can find the site and count each page once. It's whether the stronger network can turn that visibility into steady rankings and clicks. That's what the next part of this series will measure. Part three covers how I built the network itself.

What I'd tell anyone looking at the same numbers

  • Read the reason codes before acting. Nineteen unindexed pages turned out to be one real problem and three normal states.
  • Good rankings with zero clicks usually means the title. Check what the searcher actually sees, not what you wrote.
  • Check that both versions of your domain resolve to one. A missing www redirect can quietly split a site in two.
  • Don't do monetization math on impressions. Start from visits, and be ready for a very small number.

None of these fixes involved writing a new article. That's the part I keep coming back to. The site didn't need more content. It needed its existing content to be findable, readable in search results, and counted once. If you're working through the same kind of problem, the SEO site architecture framework lays out the whole method, including how to read Search Console as feedback on your structure.

And if you have a site where the data is saying something you haven't had time to act on, this is the kind of work I take on for clients. Tell me about it.

Part of the HSAMaxGuide project

Read the evergreen project page for the architecture, evolution, and current state behind this article.

View complete project →

Need something similar built? This is the kind of project — real architecture, real decision-support structure, not a generic template — I take on client work for.

Work with Gardy →
On GardySpaceHSAMaxGuide (Project) → 8,739 Impressions, 13 Clicks, and Why AdSense Was Never the Problem (Journal)
← Build Journal ← Previous: What it actually took to rebuild a client's website Next: Building NewsBeauty: the full story → Project overview →