Skip to content
Learn

Creating an Effective Content Inventory

Learn how to catalog, evaluate, and manage all your website content with a practical content inventory spreadsheet and ROT analysis framework.

Content operationsGXGrowthX8 min read

Most redesign projects start with a decision nobody can defend. Someone eyeballs the site, keeps the pages that feel important, and ships the new build with orphaned URLs and broken redirects everywhere.

We start every engagement the opposite way, with a content inventory. That's the quantitative catalog of every page and asset you own, and it turns "I think we have about 400 blog posts" into a spreadsheet you can filter and act on. Build it before you audit anything or touch the site, because every decision downstream leans on it.

It's the difference between making informed downstream decisions and 'random acts of marketing.'

What is a content inventory (and how it differs from a content audit)

A content inventory catalogs what exists. A content audit judges whether it's any good. Keeping the two straight is what separates a defensible cleanup from a guess.

Use the inventory to identify what you have, meaning every piece of digital content you own. That covers each URL, title, type, publish date, and owner. Some strategists call this a headcount. Nothing here judges quality yet. That job belongs to the audit, the qualitative pass that examines each page and tells you what to update, where the gaps are, and what's ready to remove.

Skip the inventory and you audit from memory, which means you miss half the site. Every serious content strategy puts the inventory first.

When to run a content inventory

Run the full pass before a redesign, migration, or merge of two properties. Teams routinely start redesigns here to decide what carries over and what gets left behind, and a full audit is a key first step whenever you're planning a rebuild or a new content strategy.

The cost of skipping it shows up during migration. Without a complete URL list, you can't build a redirect map, and every unmapped URL becomes a 404 the day you launch.

Governance is the quieter trigger. Redundancy and information overload pile up until users can't find anything, which is usually when a team finally starts tracking. A content-governance council reviewing low-performing, inaccurate, or outdated content keeps that from happening, and an annual review holds the line, more often if you publish heavily.

Decide your scope: full site vs. partial inventory

Match your scope to your site size and the time you have. A full-site inventory catalogs every page and asset. A partial inventory covers one section or content type first.

ScopeUse it when
Full inventoryYou're migrating or redesigning the entire site, where every URL needs a redirect decision. Your site is small enough (a few hundred pages) that a complete pass is feasible in days, not months. Or you need a governance baseline that covers everything, not a sample.
Partial inventoryYour site runs into thousands or tens of thousands of URLs and a full pass would take weeks you don't have. One section drives most of the business value, like the blog, the docs, or the resource center. Or you're testing your process before committing to the whole site.

For a large site, start with the section that matters most, prove the workflow, then expand. A partial inventory you finish beats a full one you abandon at row 3,000.

How to collect all your URLs

Build the URL list in layers. CMS export first, crawler second, manual pass last. No single method catches everything.

Start with the CMS export, the fastest source of publish dates, authors, and status. In WordPress, Tools > Export produces an XML (WXR) file covering posts, pages, custom post types, categories, tags, and users, filterable by author, date range, and status. Drupal exports its content to YAML and Contentful exports to JSON, but WordPress gives you the cleanest field list and the others need more assembly.

A crawler catches linked pages, redirect chains, status codes, and technical fields. Comparing the crawl against your CMS export exposes the gaps where orphaned pages hide. The free SEO Spider crawls up to 500 URLs per crawl and exports URLs, status codes, page titles, meta descriptions, headings, canonical tags, redirects, and meta robots directives. The paid license at $279/year adds word count, duplicate detection, and custom extraction.

Merge the crawler and CMS exports on URL, then run a manual pass for the stragglers, gated PDFs, pages behind logins, and assets your team references but never links in navigation.

Building your content inventory spreadsheet

Your spreadsheet needs one row per URL and a column set that covers identification, classification, ownership, and metadata before you add a single performance number. The free NN/g XLSX template is the most accessible starting point, with a fully documented field list covering name/title, URL, author/owner, subject/topic, format, creation or last-modified date, metadata, and raw file location.

At minimum, build these columns:

  • URL: the full path, used as the join key when you merge crawler and analytics data.
  • Page title / H1: the actual title element, pulled from your crawler export.
  • Page type: HTML page, blog post, PDF, landing page, video, or whatever taxonomy fits your site.
  • Published date and last updated date: keep two separate columns, because the gap between them flags stale content.
  • Owner: the person or team accountable for the page. This becomes your governance backbone later.
  • Meta elements: the meta description, plus canonical URL and indexability status if relevant.
  • Topic or primary keyword: the subject the page targets.
  • Action: leave it blank for now. You'll fill it during evaluation.

Pulling from Screaming Frog, the URL, page title, meta description, and heading columns populate straight from the export. Free templates from RoastMyWeb and B2BContentOS cover overlapping structures with different expansions. One stays close to core inventory fields like URL, Page Title, Content Type, Published Date, Last Updated, and Author. The other adds Funnel Stage, Monthly Sessions, Backlinks, and Impact/Effort/Priority fields.

Adding performance data with Google Analytics (GA4)

Three metrics from Google Analytics 4 matter for the inventory. Pull views, average engagement time, and engagement rate, and join each to its row by page.

The Pages and screens report gives you Views, Active users, Views per active user, Average engagement time, and Event count at the page level. For full URLs that match your inventory cleanly, use the Page location dimension in a Free-Form Exploration, then export through Share this report, either as a CSV download, an Export to Google Sheets of up to 100,000 rows, or an Exploration export.

Map each metric to its own column:

  • Views: your traffic column and the rawest signal of whether anyone reaches the page.
  • Average engagement time: the engagement column. A page with views but seconds of engagement is a candidate for review.
  • Engagement rate: available in Explorations, giving you a normalized quality read across pages of different traffic levels.

For automated refreshes, the free Sheets add-ons GA4 Magic Reports and GA4 Reports Builder connect directly to the GA4 API, and BigQuery Export paired with Connected Sheets handles the largest sites.

Evaluating your content: ROT analysis

ROT analysis flags every page as Redundant, Outdated, or Trivial, which gives you a defensible basis for removal. The standard definitions are simple. Redundant means duplicate or repeated content. Outdated means content that is no longer accurate or useful. Trivial means information not worth storing forever.

The method is a single column. One government content standard keeps it concrete. Add a column to your audit spreadsheet titled ROT, work back through your remaining pages, and list the redundant, outdated, or trivial items that can be removed, consolidated, or archived. One government review permanently destroyed 1,663,180 files flagged as ROT.

Use traffic thresholds to flag candidates, but treat the numbers as calibrated heuristics, because no major content strategy authority has published a numeric benchmark. These figures come from independent SEO practitioner guides and should be tuned to your site size and publishing frequency. One common heuristic flags pages under 100 clicks and 2,000 impressions over six months for review, and treats pages with fewer than 50 impressions, zero clicks, zero quality links, and no funnel role as removal candidates.

Teams kill useful pages when they lean on raw traffic alone. A scoring framework protects content with assisted conversions or backlink equity that low pageviews would otherwise condemn. Use conditional formatting to color-code the traffic column, with red below your removal threshold, yellow for review, and green above.

Assigning actions: keep, update, merge, redirect, or delete

Translate every evaluation into a single action column with a fixed vocabulary. A five-value set works well, running Keep, Improve, Merge, Redirect, and Remove. A simpler Keep, Update, Remove works too. Pick one vocabulary and apply it to every row, so filtering the column produces a work plan you can hand off.

The action follows the evaluation:

  • Keep: pages with healthy traffic, backlinks, or conversion assists.
  • Update: a good topic with weak execution, sitting in the improvement band and deserving a refresh.
  • Merge: thin or redundant pages that cover the same ground as a stronger page. Consolidate and redirect the loser.
  • Redirect: removals and migrated URLs that still carry link equity or traffic.
  • Delete: trivial pages with no traffic, no links, and no strategic purpose.

Anything you remove or migrate needs a redirect decision. Use a permanent 301 rather than a temporary 302 for migrations, because a 302 signals temporary movement and does not pass full link equity. Map each old URL 1:1 to its most relevant new URL. Avoid blanket homepage redirects, which read as soft 404s. Flatten chains so A points straight to the destination rather than hopping through an intermediate URL.

Build the redirect map as its own tab, tracking old URL, new URL, type, priority, and status. Validate it in staging, then watch Search Console for 404s after launch.

Ownership, governance, and keeping the inventory current

Skip the owner column and you're left with a snapshot nobody maintains. Treat ownership as a first-class field, because who owns what is a moving target and matters as much as the content itself. Assign every row an owner and the inventory stops being a one-time project and becomes an operational asset.

Ownership stays usable when the roles are explicit. Pair a RACI structure, which names who is responsible, accountable, consulted, and informed, with clear content standards and a defined maintenance schedule.

Keep the inventory alive on a cadence. A three-tier rhythm works well:

  • Monthly: refresh the inventory and flag new pages missing metadata.
  • Quarterly: review the action backlog and re-prioritize on fresh data.
  • Annually: run a deep audit and revisit the scoring rubric and taxonomy.

The manual version means re-exporting, reconciling the diff by hand, and re-scoring what changed. On a busy site, that reconciliation is the first thing to slip.

Start your next inventory with URL collection. Export your CMS, run a crawler, and reconcile the two into a single spreadsheet before you write a single action.

That first inventory is doable in a weekend. Keeping it current across a growing site, quarter after quarter, is the part that quietly falls off every team's plate. Running content operations at that cadence is exactly what we do for our clients, so if you'd rather have the inventory, the audit, and the governance loop run on a schedule instead of on good intentions, book a demo. Engagements start from $6,000/mo.