River
Y CombinatorBacked by Y Combinator

Free template

Content Audit Template and Redirect Map

A content inventory that gives every URL a keep, update, merge or retire decision, plus the redirect map and the checks it must pass.

Free download · No account needed

What you get

Pack of 9 files: 5 documents, 4 spreadsheets

Content Audit Template and Redirect Map
  • Decision MethodDocument
  • Retirement MechanicsDocument
  • Inventory SourcesDocument
  • Redirect Map TestsDocument
  • Decision LogDocument
  • Content InventorySpreadsheet
  • OverridesSpreadsheet
  • Redirect MapSpreadsheet
  • Retirement QueueSpreadsheet
RiverContent Audit Template and Redirect Map

Redirect Map  ·  Aldermoor Software  ·  staging test run 1 of 2

699 rules in. 693 out. 297 sources changed first.

Rules at staging699  (411 merges, 288 equity retirements)
After variant expansion1,445
Failed an assertion153 rules, plus 214 sources missing a variant

The seven assertions

#AssertionResultWhat was actually wrong
1Code is 301 or 30831 failedThe CDN's bulk importer defaults every uploaded row to a temporary redirect
2Mechanism is server side43 failedThe legacy resource host serves a five second meta refresh, treated as a redirect since 2019
3First hop lands on a 20058 failedChained through rules left over from the 2019 migration
4No loops2 failedOne duplicate cluster resolved twice, by two people, with no survivor named
5No target is also a source4 failedBorn as chains. Pointed at URLs the same map retires elsewhere
6Target is the nearest surviving page19 failedPointed at the homepage. Thirteen had an obvious target nobody had looked for
7Every source variant covered214 failedTrailing slash form returns 404 on this server rather than resolving to the rule

Resolution

Six of the nineteen rules under assertion 6 had no plausible target and became 410s, which is the honest mechanism for a URL with nowhere to go. The map shipped at 693 rules.

Not one of these failures is visible in a browser. All of them are visible as a traffic loss eight weeks later, in an audit that had already been declared finished.

Page 1 of 1260 words

How to do a content audit

A content audit is a page-by-page review of everything your site publishes, ending with one decision for each URL: keep, update, merge or retire. Start from a complete list of URLs and record the same evidence for each: 12 months of search clicks and impressions, inbound links, and when the content last changed. A good audit also says how each decision ships, because a redirect, a 410 and a noindex do different things.

The decisions are the easy half. Traffic is won or lost in how they ship: a merge sent as a temporary redirect, or a well-linked page deleted outright, loses what the audit meant to keep.

Hands typing on a laptop that shows a website traffic report, next to a coffee mug and two pens
Pull the same numbers for every page before you decide anything. Photo: Myriam Jessier on Unsplash

Start your content audit with a full inventory

Nielsen Norman Group, the UX research firm, defines a content inventory as a list of every piece of digital content you currently have1; the audit judges each item. No single system holds the list, so build it from several sources and note where each URL came from.

Where the URL list comes from

SourceWhat it gives youWhat to know
CMS exportAuthor, publish date, template and categoryIts modified date moves for typo fixes
Site crawlStatus codes, internal links and generated pages like tag archivesIt misses pages nothing links to
Search ConsoleClicks and impressions for each pageIt finds orphan pages that still earn clicks
Page indexing reportWhich URLs Google indexed, and why notIts example lists stop at 1,000 URLs
Backlink toolReferring domains for each URLOptional, but it settles redirect or removal

Set Search Console to the last 12 months, so a seasonal page isn't mistaken for a dead one. Google's help says the Performance report table can display a maximum of 1,000 rows2, so pull a larger site's pages through the Search Console API.

Normalize URLs before merging (protocol, www, trailing slash, capitals and tracking parameters), or one page becomes two rows. Then read the URLs only one source knows about: a page earning clicks that no crawl found is an orphan.

Broken links and redirect chains from the crawl belong in a technical SEO audit, not in these decisions.

Record the same evidence for every page

Give every row the same facts, so anyone who disagrees can point at a number.

  • Clicks and impressions over 12 months
  • Whether Google has the URL indexed
  • Referring domains from other sites
  • Internal links to the page
  • The last substantive update, not the CMS modified date
  • Business function: whether anything besides search needs the URL

No export holds business function, so ask before you sort anything. Legal pages cited in contracts, comparison pages your sales team sends by hand and URLs customers were emailed must stay reachable, whatever their traffic.

Search Console covers only Google. An AI search visibility report shows which pages assistants such as ChatGPT cite when buyers ask about your category.

Decide keep, update, merge or retire, in order

First set a click floor (the yearly clicks a page needs to justify itself) where your click distribution flattens out, and write down why. Then run these rules over every row in order, so each claims its pages before the next. Order matters: a page that looks healthy alone can be a weaker copy of another.

  1. Protect pages with a job outside search

    Keep them live, with noindex if they shouldn't show in results. Thin tag and author archives get noindex too, since your CMS keeps generating them.

  2. Merge duplicates next

    Group pages answering the same question, pick one survivor on clicks, links and freshness, and redirect the rest to it.

  3. Rewrite pages searchers see but skip

    Thousands of impressions with a click rate under 1% (tune both to your site) mean Google already shows the page. Update it; don't retire it.

  4. Keep or update what earns clicks

    Above your click floor, keep current pages and update those whose facts have aged.

  5. Redirect weak pages that hold links

    Below the floor, pages with referring domains or several internal links get a permanent redirect to the closest related page.

  6. Remove what's left

    Below the floor, with no links and no close match, the page gets a 410.

To spot duplicates, a keyword clustering template groups queries by intent and shows which pages already earn impressions for each group.

Age alone is no reason to retire a page. When CNET deleted thousands of old articles in 2023, Google's public liaison for Search, Danny Sullivan, called the idea that Google dislikes old content "not a thing"3. Removing a page, he added, might help Google crawl the rest of a massive site, but it doesn't make Google see the whole site as better.

ExampleFour rows from an illustrative inventoryAn illustrative example written for this guide. The site is made up.

/blog/shift-swap-policy: 14,200 impressions and 61 clicks, a 0.4% click rate. Update.

/blog/rota-templates-free: 840 clicks, but /blog/how-to-build-a-rota answers the same question and earns 7,310. Merge, with a 301 to the survivor.

/press/2019-funding-news: 6 clicks and 41 referring domains. Retire, with a 301 to /newsroom.

/blog/office-party-2017: no clicks, no links and no related page. Retire, with a 410.

  • Duplicates first. 840 clicks is a keep on its own, and a merge beside a page earning nearly nine times as much.
  • Links decide. Both retired pages earn almost nothing from search; only the one with links gets a redirect.

Ship each decision with the right mechanism

Google's redirect guide says permanent redirects show the new target in search results, while temporary redirects show the source page4. A merge shipped as a 302 can leave the old URL in results, though visitors see no difference.

What each mechanism does in Google

MechanismWhat Google doesUse it for
301 or 308 redirectShows the new target in resultsMerges, and retired pages with links
302 or 307 redirectShows the old page in resultsShort-term moves only
404 or 410Removes the URL from the indexRetired pages with no links or close match
noindexDrops the page from results; people can still visitPages with a job outside search
robots.txt blockStops crawling, so a noindex is never seenNothing in a content audit

Don't spend time choosing between 404 and 410. Google's status code reference says all 4xx errors, except 429, are treated the same5, so either removes the URL from the index. Use whichever your platform makes easy.

Two quieter traps: Google reads a delayed meta refresh, the "redirecting in 5 seconds" page, as a temporary redirect4. And if robots.txt blocks a page, Google never sees its noindex6, so the page can stay in results.

Test the redirect map before it ships

Point each redirect at the closest surviving page on the same subject. Google's site-move guide warns that sending many old URLs to one irrelevant page, such as the home page, might be treated as a soft 4047. It also advises redirecting straight to the final destination, not through a chain.

Check every rule on staging with a tool that reports each hop, such as a crawler set to follow redirects. URL Inspection in Search Console can't do this job, because Google's inspection tools don't follow redirects5.

Before the redirect map ships

  • Every rule returns a 301 or 308 from the server
  • Each old URL reaches a live page in one hop
  • No target is redirected somewhere else in the map
  • No two rules point at each other
  • No rule falls back to the home page
  • Versions with a trailing slash, capitals or parameters are covered
  • Your own internal links point straight at the new URLs

After launch, re-test a sample at two weeks, since others edit redirect rules. At 90 days, check that merged pages gained their sources' impressions and removed URLs left the index. Google's site-move guide says to keep redirects for as long as possible, generally at least 1 year7.

Pages marked Update need a rewrite plan; an SEO content brief tells a writer what each is missing. For a faster start, open this template with Edit with AI: River merges your exports and drafts each decision for you to check.

How to use this template

On your own, list every URL in the Content Inventory sheet, apply the rules in Decision Method in order, and check each redirect against Redirect Map Tests before it ships. The files come filled in with a made-up company's audit, so clear the example rows first.

With Edit with AI, River asks for whatever exports you have and merges them into one inventory, flagging URLs that only one source knows about. It asks which pages have a job outside search and proposes a click floor for your approval. Then it fills in each URL's decision, mechanism and evidence, and where a number is missing, it says so rather than guessing.

  1. Download it or open it in River

    Download the five Word documents and four CSV sheets free, or open them in River with Edit with AI.

  2. Merge your URL lists

    Combine your CMS export, crawl and Search Console data in Content Inventory, or send the files to River to merge.

  3. Decide every URL in order

    Apply the rules in Decision Method so each row gets a decision, a mechanism and the numbers behind it.

  4. Test the map, then ship

    Check each redirect against Redirect Map Tests on staging, then ship the changes in batches from Retirement Queue.

What's in the template

Two thousand URLs, a decision on each, and the sheet that says who overruled itThe Content Inventory, the Redirect Map and the Overrides sheet.
Content Audit Template and Redirect Map
RiverContent Inventory

Content Inventory

Aldermoor Software, a fictional workforce scheduling product with nine years of blog. 2,486 URLs reconciled 4 August 2026 against Search Console for 1 August 2025 to 31 July 2026.

URLClicksImpr.RateRef. domainsInlinksRuleDecisionMechanism
/blog/overtime-rules-by-state41,200684,0006.0%2141864KeepNone
/blog/how-to-build-a-rota7,31098,4007.4%41634Keep, merge targetNone
/blog/shift-swap-policy-template6114,2000.4%3123UpdateNone
/blog/scheduling-compliance-checklist98,9000.1%7213UpdateNone
/blog/rota-templates-free84026,1003.2%9182Merge301
/resources/wfm-buyers-guide1,41038,2003.7%1702Merge301
/press/aldermoor-series-b61,1000.5%4126Retire301
/blog/best-scheduling-apps-201948800.5%1256Retire301
/blog/team-photo-offsite-2017000.0%007Retire410
/pricing-change-june-20241902,4007.9%101Keepnoindex
/legal/dpa-2021000.0%041Keepnoindex
/tag/scheduling229,8000.2%01481Keepnoindex

The rules, and why the order is the method

#RuleOutcome
1No author created it, or its job is outside searchKeep, or noindex. Runs before a single number is read
2Near duplicate of a better pageMerge. Resolves clusters before any keep or update call
3Distribution with almost no click rateUpdate. Never retire
4Above the click floor, content currentKeep
5Above the click floor, content staleUpdate
6Below the floor, holds equityRetire by permanent redirect to the nearest surviving page
7Below the floor, no equity, no targetRetire by 410

Rule 2 before rule 4 changed 96 decisions here. On its own numbers /blog/rota-templates-free earns 840 clicks and is a keep. Read next to the page answering the same question 8.7 times better, it is a redirect.

RiverRedirect Map

Redirect Map

One rule per source, expanded for variants, with the staging test result on the row.

RuleSourceTargetCodeHopsFinalFailedDiagnosis
R-004/blog/rota-templates-free/blog/how-to-build-a-rota3011200Pass
R-018/blog/overtime-2019-update/blog/overtime-rules-by-state30212001Bulk importer default. Shows the source page in results, so the merge never happens
R-047/blog/old-scheduling-tips/blog/how-to-build-a-rota30132003Chains through two rules left from the 2019 migration
R-061/blog/annualised-hours-explainer/blog/annualised-hours3011loop4R-062 maps the target back to this source. Cluster resolved twice, no survivor named
R-088/resources/wfm-buyers-guide/guides/workforce-managementrefresh02002Five second meta refresh on the legacy host, which Google reads as temporary
R-113/blog/holiday-pay-2018/30112006Homepage target. Repointed to /blog/holiday-pay-calculation
R-121/blog/christmas-party-2018/30112006Homepage target and no nearest page exists. Removed from the map, shipped as a 410
R-155/blog/scheduling-software-comparison/blog/best-scheduling-apps-201930112005Target is retired elsewhere in this map. Repointed straight at /compare
R-206/blog/2021-product-roadmap/product30112007Trailing slash form 404s rather than resolving to the rule

The four values every assertion resolves from

ColumnRequirement
First status301 or 308. A temporary code hands the survivor nothing
Hops1. Not a chain that resolves eventually
Final URLEqual to the intended target
Final status200

Collected with a request that reports the whole status chain. The URL inspection panel cannot do this job: Google's status code documentation states that its inspection tooling does not follow redirects at all.

RiverOverrides

Overrides

Seven overrides across 2,486 decisions. Every row keeps the rule it broke, who broke it and why.

URLRule saidShippedWhoReason
/pricing-change-june-2024410noindexLegalCustomers were emailed this exact URL in June 2024 and still hold the link
/compare301 to /productKeepSalesThree reps send it in every competitive deal. Nobody searches for it and it closes revenue
/blog/nhs-rostering-guidanceUpdate410Content6,400 impressions for a sector we stopped selling to in 2024. Distribution for the wrong audience is not an asset
/blog/overtime-rules-by-state-2024301KeepContentNot a duplicate. 41 referring domains cite the 2024 figures specifically and open payroll disputes still turn on them
/blog/scheduling-glossary301Keep and rewriteContent22 referring domains on a glossary is a link magnet doing its job
/blog/2019-customer-awards301 to /newsroom410CommsBoth referring domains are dead sites. A rule that carries nothing is still a rule somebody maintains forever
/tag/overtimenoindex301ContentThe one tag archive with 3,100 impressions and a real page on exactly that subject. The other 140 stay on noindex

What the pattern across them says

FindingWhat to do about it
Two of the seven turned on business function, which no export containsCollect it before the rules run rather than overruling them afterwards
Two overrides made the outcome more aggressive, not lessAn override sheet that only ever softens decisions is one nobody is really using

This is the sheet you are glad of in six months, when somebody asks why a page they remember is gone and the answer needs to be a sentence rather than an investigation.

  • Decision MethodThe seven inputs every decision reads and the seven rules, in the order they run.
  • Retirement MechanicsWhat 301 and 302 redirects, 404s, 410s, noindex and robots.txt each do in Google.
  • Inventory SourcesWhich URL lists to pull, what each one misses, and how to merge them cleanly.
  • Redirect Map TestsSeven checks every redirect must pass on staging, plus follow-ups at 14 and 90 days.
  • Decision LogThe thresholds you chose and why, the count for each decision, and open items.
  • Content Inventory sheetOne row per URL with its sources, traffic, links, last real update, decision, mechanism and evidence.
  • Overrides sheetEvery row where someone overruled a rule: what it said, what shipped, who decided and why.
  • Redirect Map sheetOne rule per old URL with its target, intended code, tested result, hop count and final status.
  • Retirement Queue sheetEach batch of changes by mechanism, with where it ships, its owner, a check and a target date.

Common questions

What is the difference between a content inventory and a content audit?

An inventory is the list: every URL on your site with facts about it, such as traffic, links and dates. An audit is the judgment: a keep, update, merge or retire decision for each URL, based on those facts. Build the inventory first. This template keeps both in one sheet, with the decision columns beside the evidence.

What is content pruning?

Content pruning means retiring, merging or rewriting pages that no longer earn their place on a site. Done well, it redirects weak pages that still have links and rewrites pages searchers see but skip. Pruning by age alone is the common mistake: Google's Danny Sullivan has said deleting content only because it's old won't magically improve SEO.

Should I use a 404 or a 410 for pages I remove?

Either works for Google, which handles every 4xx status code except 429 the same way, so both take the URL out of its index. Pick whichever your server or CMS can send. The choice that matters is between removing and redirecting: a page with other sites linking to it should usually redirect instead.

Can I redirect deleted pages to the homepage?

Usually not. Google warns that redirecting many old URLs to one unrelated page, such as the home page, might be treated as a soft 404, so the old page counts as missing rather than moved. Send each page to the closest surviving page on its subject, and return a 410 when nothing is close.

How often should you do a content audit?

Do one full audit, then a smaller pass every quarter. The quarterly pass covers only pages published, gone out of date or dropped below your click floor since the last one, plus a check that earlier redirects still work. Keeping that habit stops the next full audit from taking weeks.

Is this content audit template free?

Yes. Download the five Word documents and four CSV sheets with no signup. They come filled in with a made-up software company's audit, so you can see how each rule plays out before clearing the rows. Edit with AI opens the same template in River.

What does Edit with AI do?

It opens the template in a free River workspace. River asks for your exports, from a CMS list to Search Console data, merges them into one inventory and asks which pages matter outside search. Once you approve a click floor, it fills in every URL's decision, mechanism and evidence, and never invents a traffic figure.

Sources

  1. Nielsen Norman Group. “Content Inventory and Auditing 101.” nngroup.com (opens in a new tab)

  2. Google Help. “Performance report (Search results): Troubleshooting data discrepancies.” support.google.com (opens in a new tab)

  3. Gizmodo. “CNET Deletes Thousands of Old Articles to Game Google Search.” gizmodo.com (opens in a new tab)

  4. Google for Developers. “Redirects and Google Search.” developers.google.com (opens in a new tab)

  5. Google for Developers. “How HTTP Status Codes Affect Google's Crawlers.” developers.google.com (opens in a new tab)

  6. Google for Developers. “Block Search Indexing with noindex.” developers.google.com (opens in a new tab)

  7. Google for Developers. “Site Moves and Migrations.” developers.google.com (opens in a new tab)

Written by

Chandler Supple

Co-founder & CEO, River

Chandler has spent the last six years working in AI, building tools for millions of users and Fortune 100 companies. In 2025, he co-founded River to build a new kind of operating system for AI agents.

Reviewed by

Brian Joseff, Co-founder, River