AI SEO In Detail › Module F · Putting It Together › Episode 49
Monthly Monitoring Dashboard
Episode 49 of AI SEO In Detail, a free course in practical SEO analysis: Monthly Monitoring Dashboard.
Video coming soonThis episode is scripted and in production. The transcript below is the script as written; it may change before the video is published.
Full transcript
1,285 words · script draft, under review.
Intro
Most SEO dashboards have thirty charts. Nobody reads thirty charts. So once a month someone glances at the biggest number, sees it went up or down, and closes the tab.
And sometimes the biggest number is wrong. I once looked at a dashboard showing over fifty thousand sessions for one of my sites. Only about fifty-five of them came from the site's current domain. The rest was bot traffic on an old, retired domain that still reported into the same property. The chart looked great. It was measuring a ghost.
In this episode: the one-page dashboard I use for a different site of mine, example-city-stats.com, the few numbers on it, the funnel that connects them, the checks that keep them honest, and the alerts that tell you when to look closer.
One question per month
A monthly dashboard answers one question: is the site healthier than last month, and if not, where in the chain did it break?
That's different from the analysis in the rest of this series. The dashboard doesn't find opportunities. It tells you whether things are working, and points you to the episode you need when they're not. A traffic drop sends you to the checklist in episode sixteen. A stuck indexing step sends you to episode seventeen.
So it has to fit on one page, and every number on it has to lead to a decision.
The funnel
The core of the page is a funnel. Five steps, from left to right. This is the dashboard for example-city-stats.com, one of my own sites. The data is real but anonymized: the domain, the URLs and the search terms are replaced, so we stay on the principles and not on the keywords. The numbers are untouched.
Step one: the corpus. The number of unique URLs in the live sitemap. Count unique URLs yourself. Don't add up the entries Search Console shows for your sitemaps, because it lists the sitemap index and its child sitemaps both, so you can count the same pages twice.
Step two: crawled. How many of those URLs Googlebot actually fetched this month. If you're behind a CDN like Cloudflare, your server log isn't the right source, since it only sees requests the cache didn't answer. Use the CDN's own logs, and count Googlebot by IP address, not by user agent.
Step three: indexed. An estimate from the weekly URL Inspection sample from episode seventeen. Not the "indexed" number in the sitemap report, which I've found unreliable.
Step four: pages with at least one impression in Search Console. Step five: pages with at least one click.
The value of the funnel is that it tells you where the problem is. If the corpus grows and crawling doesn't, that's a discovery problem. If crawling is fine and the indexed share drops, that's a quality or duplication problem. If indexing is fine and impressions don't follow, it's a ranking problem. Read it from left to right, and look for the first step where it narrows. On my site right now: just under fourteen thousand URLs in the sitemap. About seventy-eight hundred fetched by verified Googlebot in the nine days my CDN keeps its log. The index sample says essentially all of them are indexed. About eleven thousand four hundred had an impression in the last four weeks, and about twenty-nine hundred had a click. So the funnel holds until the very end. It narrows between impressions and clicks, which points to rankings and snippets, not to crawling.
The sparklines are thinner than they should be. Search Console has a history, so clicks and impressions get one: clicks grew every month, from about five hundred in March to almost eleven thousand in September. The first three steps only start now. Save a snapshot every month, because nobody can give you that history later.
Outcomes and measurement health
Under the funnel, two small boxes.
Outcomes. Ideally, clicks compared with the same month last year, so the season doesn't fool you. On my site there is no last year yet. The history starts in March. So until a full year exists, the box compares with the previous month: September was up about thirty-eight percent on August. And the box says, in writing, that this comparison ignores the season. And whatever the site exists for: sign-ups, sales, revenue from organic visitors. That's the number the business cares about, and SEO only matters if it moves.
Measurement health. This box is what most dashboards are missing. Is Analytics filtered to the current hostname? Is the ratio between Search Console clicks and Google organic sessions stable? Does the index sample look normal? If any of these fail, you don't trust the numbers above until they're fixed. That's how you avoid the fifty-thousand-session ghost.
On my site right now, two lights are green and one is amber. Only the site's own hostname reports in, and the index sample found all hundred and thirty-two sampled pages indexed. But the ratio has drifted. For most of the summer, Google sessions sat close to Google clicks. In the latest week, there were one and a half times as many sessions. That's not a verdict. It's a question I have to answer before I trust the session numbers.
Alerts between the monthly reviews
A monthly review is too slow for some problems. So a few alerts run every week, and they only fire when something crosses a line.
The indexed share drops by several points. Crawling falls well below its recent average. Clicks are clearly below their recent average for two weeks running, not one bad day. The number of URLs in the sitemap changes when nobody planned it, which often means a deploy broke something. Server errors start appearing for Googlebot. And the one people forget: a data pull returned nothing at all.
The thresholds are yours to set. Start loose. An alert that fires every week gets ignored, and then it's worse than no alert.
What I left off the page
Just as important is what's not on the page.
Sitewide average position. It moves when you gain new rankings far down the list, which often makes it look worse while things are getting better. We covered why in episode eight.
Daily rank tracking for hundreds of keywords. As a monthly health number it's mostly noise, and it costs money every day.
Third-party authority scores. They change when the tool changes its formula, not only when your site changes.
None of these are useless. They just don't answer the monthly question.
Building it from what you already have
If you've followed the series, you already have the data. The daily pulls and the index sample from the workspace in episode six, joined in the data model from episode five. The dashboard is just four saved queries on top: the funnel per month, outcomes against the comparison period, the health checks, and the alerts.
It doesn't need a fancy tool. A spreadsheet or a simple page that reads those four queries is enough. The work is in choosing the numbers, not in drawing them.
The thirty-minute review
Once a month, thirty minutes, in the same order.
Check the measurement health box first. If it's red, stop and fix it.
Then the funnel. Which step narrowed, compared with last month?
Then outcomes, against last year once you have one.
Then the change log from episode forty-six. What did we ship, and which re-measure dates fall in this month?
And end with one decision, written down. Even if the decision is "nothing changed, keep going". That note is what makes the dashboard part of the loop and not just a picture.
Wrap-up
One page, one funnel, a health check, and one decision a month. The dashboard template is linked in the description. Next episode is the last in the series: ten mistakes in SEO data analysis, most of which I've made myself. See you there.