A Missing Result Is Not a Lost Ranking

A blank cell in your rank history has at least three possible meanings, and your tracker usually can’t tell you which one you got. The page was fetched and your site genuinely wasn’t in it. Or the page wasn’t fetched at all. Or it was fetched and the parser failed to find results it couldn’t recognise.

All three render the same way: no position. Only the first one is news.

Where the three come from

Genuinely not ranking. The result page was retrieved, parsed correctly, and your domain wasn’t within the checked depth. This is the case the chart is designed to show, and it’s a real finding — When a Keyword Falls Out of the Top 100 covers what it does and doesn’t mean.

Not fetched. Rank checks are requests to a search engine, made at scale, from infrastructure the search engine did not invite. Those requests get blocked, rate-limited, challenged, or timed out. A tracker facing that has three options: retry, report an error, or record nothing. Which one it does is a product decision, and it’s often invisible in the interface.

Worth being clear that the information is available upstream and discarded downstream. Collection layers report failures as distinct, machine-readable states rather than as empty results: Serply’s published error reference for its search endpoints gives rate limiting its own status code with a named error code and message, and returns headers stating the request limit and how many requests remain in the window (as of this writing). A tracker built on that receives “we could not ask” and “we asked and you were not there” as two different responses. The blank cell is where they get merged, and that merge happens in the tracker, not at the search engine. How Rank Trackers Get Their SERPs covers the collection side, and How Long Does One Rank Check Take covers what happens under time pressure.

Fetched but not parsed. A result page is HTML that changes without notice. When the markup shifts, a parser can silently return fewer results than were on the page — or none. The tracker recorded a successful check with no match, and its own logs show success.

This one deserves emphasis because it’s the least intuitive. A parser that extracts ten results from a page that contained ten organic results plus three feature blocks is working. A parser that extracts three from that same page after a markup change is broken, and nothing about the check looks failed.

Why it matters more than it seems

A false “not ranking” is worse than a missing data point, because it looks like a finding and it triggers work.

The chain runs: blank cell → alert fires → someone spends a morning checking the page, the index status, the redirects, the robots file. Everything is fine, because nothing was wrong. Then the next check returns position 8 and the incident is closed with no explanation, which is the worst possible outcome — the team now has one data point of experience saying that rankings vanish and reappear for no reason, and that belief makes the next real drop harder to take seriously.

Gaps in Rank History covers the same underlying collection problem where the tracker is honest about the gap. This post is about the case where it isn’t, which is more common.

Telling them apart

You can usually distinguish the three without vendor cooperation.

1. Check the whole set for that run. If a large share of keywords went blank on the same check and recovered on the next, that’s a collection failure, not forty simultaneous ranking losses. One keyword blank while its neighbours are fine is more likely to be real. This single check resolves most cases.

2. Look for stored evidence. Trackers that keep the fetched result page, a screenshot, or the full top-N list let you look at what was actually retrieved. If the stored page shows results and your domain isn’t among them, the blank is real. If it shows a challenge page, an empty body, or three results where there should be ten, it isn’t. A tracker that stores nothing cannot answer this question, which is worth knowing about your tracker before you need it.

3. Cross-check the other direction. Search Console reports impressions from the search engine’s own logs rather than from a scrape. If a keyword shows impressions during a period your tracker recorded nothing, the tracker missed it. The two datasets are not equivalent — Rank Tracker vs Search Console covers why — but for the narrow question “did this page appear in results at all,” the search engine’s own count is stronger evidence than a scrape.

4. Check by hand, carefully. Your own search is not a neutral measurement: Incognito Is Not a Neutral Search. It’s still enough to tell “my site is nowhere” from “my site is right there and the tracker missed it.”

5. Compare against a second source. Two trackers disagreeing on position is normal and expected — Why Two Rank Trackers Disagree — but one reporting nothing while the other reports a position is a stronger signal than a disagreement about which number is right.

What to actually do

Ask your vendor how they represent a failed check, and specifically whether a failure is distinguishable from a not-found in the interface and in the export. A tracker that records failures as a distinct state is doing the right thing; one that writes them as null alongside genuine absences has merged two different facts into one column, and you should know that before building alerts on it.

Keep failures out of your averages. A blank treated as zero, or as position 101, drags any visibility score or average downward — see Visibility Scores and Share of Voice and Average Position Is an Average of What?. Excluded rather than imputed is the correct handling.

Require persistence before alerting. A single blank check should not fire anything. Two or three consecutive blanks on one keyword while its neighbours report normally is a signal worth waking someone for. Rank Alerts That Do Not Cry Wolf has the thresholds argument in full.

When one does fire, check the set before checking the page. Thirty seconds looking at whether the rest of the run succeeded saves the morning you’d otherwise spend auditing a page that was never broken.

The general rule: your tracker reports what it managed to observe, not what happened. Those are usually the same thing, and the blank cells are exactly where they aren’t.