When doing an audit, I just go through the site, flag what I see as issues, and then write them up in a Google doc.
I rarely follow the checklists.
You won’t get a giant list of “40/54,000 pages don’t have canonical tags” from me, you’ll get actionable information.
Specific issues you can just pass straight to your development team.
I thought it was time I standardised some of the checks I made, and figure these would be useful for others too.
The Programmatic SEO checklist
134 tasks to investigate a programmatic site during an SEO audit.
A non-standard checklist, this should fill in the gaps from the standard SEO items that are checked.
The majority of the items are triggers for an investigation, rather than direct yes/no checks.
Triggers for items that you should investigate, and then work out if they’re an issue.
There aren’t many simple ‘yes’/’no’ items at this level of SEO. You need to put in the hard work at determining whether what you’ve found is an issue, and whether that issue is worth fixing.
This Google Sheet checklist will point you in the direction of what to look at.
Right now, the checklist will suit search/listing type websites.
Eventually, it will suit additional types of programmatic sites as it’s built out.
How to use the checklist
You’ll find each of the items listed on a new row, with more information provided when possible.
There’s an empty space to empty your findings on each of the items.
The status column is for selecting whether an item is a Pass, Fail, or requires additional investigation.
If an item is selected as ‘Fail’, it will activate the ICE score. Read more about the ICE score here.
Some items may have the ICE score prefilled out, but due to many tasks being able to either have a low, medium, or high priority outcome the majority can’t be prefilled.
Just fill out the impact, confidence, and ease for each item, and it will output the ICE score for you.
The checklist content
The list is broken down into 4 sections, Sitewide, Search, Listings & Blog/News.
Each section has the associated tasks, with some minor duplication where it’s required across multiple sections.
The bulk of the items, but not all of them, are;
Sitewide checks
Is the site rendered server-side or client-side?
– Is the entire content SSR, or only portions?
– Are linking widgets exposed in the HTML source?
– Can Google effectively render each page?
– Are there any issues when viewing the website with JS disabled?
Is there an XML Sitemap?
– Is the sitemap broken up by categories?
– Are there sitemaps with more than 50,000 URLs or over 50mb?
– Are there 0-result SRPs in the sitemap?
– Are there query parameter filtered URLs in the sitemap?
Is there a robots.txt file?
– Does the robots.txt block any pages?
– Does the robots.txt block any resources?
Is there an HTML sitemap?
– Does the HTML sitemap have traffic in GSC?
– Does the HTML sitemap link to 0-result SRPs?
Trailing slash or no trailing slash?
– Is the non-preferred being redirected to the preferred?
– Are there pages indexed with the non-preferred option?
Are there over-indexation issues?
– Are there URLs under “Discovered – currently not indexed”?
– Are there URLs under “Crawled – currently not indexed”?
– Are there URLs under “Soft 404”?
– Are there URLs under the 3 “Duplicate” issues?
– Are there URLs under “Alternate page with proper canonical tag”?
– Are there URLs under “Page with redirect”?
– Are there URLs under “Not found (404)”?
Are there Core Web Vital flags?
– Are there FCP issues?
– Are there LCP issues?
– Are there CLS issues?
– Are there TTFB issues?
How do the crawl stats look?
– Is it primarily the primary host being crawled, or do both?
– Are there significant non-200 requests?
– Are there significant non-HTML requests?
– Are there any significant blips in the HTML crawl rate that require investigation?
– Are there any significant blips in HTML response time that require investigation?
Do any internal links contain UTM tracking parameters?
Is the site multi-national / multilingual?
– Does the URL include the country/language code at the start?
– Are hreflang tags being used on the site?
– Does the hreflang include the current page in the tag?
– Is there a language/country selector on the site?
– – Does the selector use any parameters?
– Does each language selected only have content in that language being used?
Does the brand own any other internet properties?
– – Are there any redirects, where redirects should exist?
– – Do any of the other properties link to this one?
Are there any historic URL patterns that were used?
– – Do these historic patterns all redirect?
Search checks
Does the search follow a good URL structure?
– Is what’s in a pretty URL, the best option?
– Can you re-order the URL structure and still load the page?
– Are there filters as query parameters?
– – Are the query parameters ordered correctly?
– – Are the query parameters stripped in a canonical tag?
– Are there filters that are both pretty URLs & query parameters?
– How are multi-select filters handled in the URL?
– Are search filters unnecessarily being passed through to listings?
– Are there crawlable sorting links?
– Is there any sort of customisable/combination filter layer?
Do the primary filter naming conventions make sense?
– Are there any primary filter values that could be considered ‘highly related’ enough to possibly merge them?
– Are there any primary filter values missing that should be included?
Is there a supplemental view of current results?
– Are there significant versions of the supplemental view indexed?
– Does the supplemental view canonical over to primary?
Are there internal links to other pages?
– Is there a child linking setup?
– Is there a parent linking setup?
– – Does a breadcrumb link to the correct levels?
– – Is the breadcrumb JSON schema included in the <head>
– Is there a cross linking setup?
– Are there 0-result SRPs being linked to?
– Are there links to query parameter SRPs?
– – Do these links exist in the HTML?
– Are there any unnecessary links being included on the page?
– Are there any links to URLs that redirect?
How are 0-result SRPs being handled?
– Are they getting indexed / receiving traffic?
– Do they display related listings?
– How does the behaviour change when they return to having a result?
How is pagination being handled?
– Is there a link to the final page?
– How many pages of results are being created?
– – Are pages above this max being 301 redirects to the first page?
– Is the page number included in the canonical tag?
– Are there rel next/prev meta tags being used?
– How many results are included per page?
– Do links to page 1 have page=1 query parameter?
– Does the entire page of results load SSR or is there a partial CSR load?
– Are related listings being loaded at the end of results?
– – Are related listings causing indexation issues?
Is imagery being lazy loaded?
– Are above-the-fold images excluded from lazy loading?
Is dynamic content being used?
– Are there dynamic FAQs?
– – Are these correctly marked up with FAQ schema?
– Are there any visible errors within the dynamic content?
Does the mobile view render the same as desktop?
Listing checks
Do listings follow a good URL structure?
– Are there alternate versions available via filtered URL links?
Are there internal links to other pages?
– Is there a parent linking setup?
– – Does a breadcrumb link to the correct levels?
– – Is the breadcrumb JSON schema included in the <head>
– Are links to related listings included?
– Are links included to SRPs outside what this listing suits?
– If there are multiple listing tiers, do the tiers parent/child each other appropriately?
What happens when a listing expires?
– What happens if this listing then comes back online?
Is there significant unique content for the listing?
– Is any of the listing content hidden behind read mores, tabs, or accordians?
Does the listing template automatically optimise for the keyword?
Is dynamic content being used?
– Are there dynamic FAQs?
– – Are these correctly marked up with FAQ schema?
– Are there any visible errors within the dynamic content?
Does the mobile view render the same as desktop?
Blog/news checks
Does blog content follow a good URL structure?
– Do blog posts sit within a category or other site section?
Are there internal links to other blog posts?
– Is there a parent linking setup?
– – Does a breadcrumb link to the correct levels?
– – Is the breadcrumb JSON schema included in the <head>
– Are links to related blog posts included?
– Are there links to related listings and/or categories?
– – Are these links automatic, or manually included?
Is blog content being linked to from elsewhere on the site?
– Are these inclusions automatic, or manual?
– Are the inclusions based on tags/categories, or keywords?
– Are there opportunities to extend what tag/category triggers are used so that more pages link to the content?
Access the checklist
You can access the checklist with the below link.
Make a copy of the file into your own Google drive, and then make the edits there.
Active development
The checklist is still under development, so there may be items missing that will be added at a later date.
If you have any suggestions of tasks you’d like to see added, feel free to add a comment and I will get them included.