Skip to main content
TechSEO Vitals

Most SEO Audits Die in a Shared Drive

An audit gets delivered with 90 recommendations. Eight months later, 12 are done. Producing the list was never the hard part – closing it is.

Share on

A technical SEO audit gets delivered. 90 recommendations, screenshotted, ranked by severity, exported into a 40-page PDF.

Eight months later, someone opens the doc again. 12 of the 90 are done. The other 78 are still sitting there in a file nobody touches anymore.

Nothing in the audit was wrong. The crawl issues were real. The canonical conflicts were real. It just never left the PDF.

Producing the audit was never the hard part. Most of the industry has quietly agreed to pretend otherwise.

Anyone can produce the list

Screaming Frog, Search Console, a few more tools, and a week are enough to map what's broken on almost any site. Thin templates. Redirect chains. A bloated sitemap. None of that requires rare judgment anymore.

The tools got good. The checklist got standardized.

What they don't tell you is what's causing any of it.

A crawler groups findings by symptom, not by cause. 200 URLs with a canonical pointing to a redirect come back as one issue. The row is accurate. It just can't say whether that's one template misfiring or twenty separate mistakes.

The reverse happens too. One component that fails to render server-side shows up as missing canonicals and thin pages. Two rows in the report. One bug underneath.

So you fix 200 URLs one at a time instead of the template behind them. Or you fix two rows separately, and the bug keeps producing more.

Getting past that takes someone who reads the code, not just the report. And even that isn't the scarce part.

What's scarce is turning findings into closed tickets. 90 of them, handed to a team with four other priorities this sprint and no SEO context of its own.

That's the actual job. Most consultants stop right before it starts.

Findings aren't the same as priority

The audit stops at findings. A crawler assigns severity – high, medium, low – and the list gets exported in that order.

That's not prioritization. That's the tool's opinion, relabeled as expert judgment.

A severity label has no idea what a fix is worth. A 404 on a page with 3 inbound links gets flagged high. So does a noindex tag on a category template with 400 URLs. Same label. Nothing like the same consequence.

Severity describes the problem. Priority describes what to do about it next. Those rarely come out in the same order.

The gap between them is filled with things no crawler can see.

How many developers the project has, and what's already booked for the next two sprints.

Whether the fix is a template change one person ships in an afternoon, or a CMS change that eats the whole sprint.

Whether the site is mid-replatform. If it is, half the findings resolve themselves and half get rebuilt wrong unless someone flags them now.

Whether the template drives revenue, or exists because someone built it in 2019 and forgot.

Two sites can produce nearly identical crawl reports and need completely different orders of work.

A high-severity issue nobody has capacity to fix this quarter belongs below a medium one that ships next week. That isn't a compromise. It's what prioritization means.

Most technical SEOs skip that step. They pass the severity list along as if sorting by how bad something looks is the same as ranking by what it costs.

Why the audit dies in the backlog

The pattern repeats too often to be bad luck.

The consultant who wrote the audit isn't in sprint planning. The developer reading it wasn't in the client call where the reasoning got explained.

So a redirect rule fix becomes a two-line Jira ticket with no context. It gets picked up by whoever has time. It gets implemented based on a guess at what the consultant meant.

Nobody on the dev team owns the outcome, because nobody on the dev team was in the room when the fix was decided.

Then a redesign gets prioritized over a crawl budget fix. A homepage refresh wins that argument every time. One is visible in a demo. The other isn't.

The audit doesn't die from disagreement. It dies from silence. Nobody's actively against it. Nobody's responsible for it either.

A year later, a new audit runs. Half the old findings are still there, joined by a dozen new ones. Nobody connects the two lists, because nobody tracked which fixes shipped and what happened after.

The backlog just gets longer, sorted the same way.

What staying in the process actually looks like

None of that fits in a 40-page PDF. So the PDF isn't where I stop.

The priority order I hand over isn't the crawler's severity list. It's built around what the team can actually ship, and what I've seen move rankings and revenue on sites like the one in front of me.

That comes from years of watching which fixes mattered and which ones just looked urgent. A priority list nobody acts on is worth exactly as much as one that was never written.

And it doesn't survive first contact with the codebase. A developer looks at the number three item and says the fix is trivial, it's already half built for something else. It moves to the top the same day.

Another one turns out to touch a shared component nobody wants to open before the release. That drops, and something further down comes up.

None of that is visible from outside the team. You only get it by being in the conversation while the work happens.

So I sit in the sprint planning where the ticket gets prioritized against everything else competing for the same two developers.

I write the ticket myself. Developer language, not SEO shorthand that means nothing outside my head.

When a developer pushes back because the fix looks unnecessary from where they're sitting, I explain the mechanism, not just the recommendation. "Trust me" doesn't survive contact with an engineer who has five other tickets and one afternoon.

The explaining doesn't stop with developers. A founder wants to know why a small-sounding fix is worth two days of sprint capacity. A marketer wants to know why the redesign should wait. Both get the same reasoning in different words.

And when a ticket gets marked done, I check it live. Not the ticket status. The actual page.

I've seen a canonical fix ship with the wrong URL because the developer copied a pattern from a neighboring template. I've seen a robots.txt change block more than the one directory it was meant to.

Closed doesn't mean correct. Only checking means correct.

The cost of leaving after the handoff

Walk away after the PDF and the cost isn't just implementation speed. It's the correction loop.

A misread recommendation sits live for months. Nobody notices until traffic doesn't move the way it should. By then, nobody remembers which fix was supposed to cause which result.

The client blames the recommendation. The recommendation was never wrong. Nobody stayed close enough to catch it early.

I see this problem often enough that I've stopped treating the audit as a product with an end date. It's the start of a process I stay in until the issues are closed, verified, and live.

Not because it's more billable. Because an audit nobody implements didn't do anything, no matter how correct it was on page one.

The deliverable was never the document. It was always the fixed site.

Martin Stepanek

Martin Stepanek

Enterprise Technical SEO Consultant

I am a developer-led enterprise technical SEO consultant. 10+ years building the web before I started fixing it, and I still ship production code today. I read the responses your site actually sends, tell you which findings are worth a sprint, and take the fix to your developers myself.

Every two weeks

The technical SEO newsletter engineers and SEOs actually finish

One specific problem, taken apart, with a position on what to do about it — argued against the primary documentation and against what I see in audits. Then three stories from the last two weeks, picked and explained.

Mersudin ForbesMersudin ForbesMark Williams-CookMark Williams-CookAleyda SolisAleyda Solis
Recommended by industry leaders

Subscribe

A new episode every two weeks. Unsubscribe in one click.

By subscribing, I agree to the Privacy Policy and Terms and Conditions.

No spam, ever. Unsubscribe at any time.
Technical SEO notes