Most Shopify audit checklists are long because length looks thorough. In practice a store owner needs a shorter thing: the checks that change a decision, the evidence behind each one, and a clear label on which checks a public scan can answer and which need someone with admin access. That is what this list is.
In short
- 25 checks, grouped by the question they answer rather than by discipline.
- Every check is tagged: public response, browser needed, or admin access needed.
- Nineteen of the 25 can be answered from public evidence anyone can fetch. Six need a browser session or admin access.
- A public scan is a starting point for a technical conversation, not a verdict on revenue.
How to use this checklist
Work through the sections in order. The first two cover whether the store can be reached and understood at all; problems there make everything after them less relevant. The third and fourth cover weight and structure, which is where most stores that “feel slow” actually have their issue. The last section is the honest list of things no public scanner can see.
Each check carries an evidence tag. The tag matters more than the check, because it tells you who can answer it and how much you should trust the answer.
Visible in the storefront’s public HTML, headers, robots.txt or sitemap.
Needs a real browser session, device conditions, or field data.
Needs Shopify admin, theme code, or a vendor account to confirm.
A note on what public evidence means here: the response any visitor or crawler receives when requesting the storefront. That covers the HTML document, its headers, the redirect chain, /robots.txt and /sitemap.xml. It does not cover JavaScript execution, the rendered page, the Shopify admin, the theme editor, or anything behind a login.
Can search engines and shoppers reach the store?
These checks are binary and cheap. When one fails, it is usually the most important finding in the whole audit, because it affects every page at once.
Check 1: HTTPS is enforced and the primary domain wins
Public responseRequest the
http://version, the apex domain, and thewwwvariant. Each should reach the same primary URL in one hop with a permanent redirect. Two or three hops is common after a domain change and costs every first visit a round trip. Shopify handles the redirect when the primary domain is set correctly; a proxy or DNS-level redirect in front of it is where chains appear.Check 2: The homepage returns 200 without a detour
Public responseA homepage that answers 301 to itself with a query string, or 302 to a locale path, or 200 with a maintenance template, looks fine in a browser and wrong to a crawler. Record the final status, the final URL, and every hop in between.
Check 3: robots.txt exists and blocks only what it should
Public responseShopify generates a sensible default that keeps crawlers out of cart, checkout, search and account paths. The file can be customized through the
robots.txt.liquidtemplate, which is also how well-intentioned edits end up blocking collections or product images. Read the live file, not the theme file, and check everyDisallowagainst a path you actually want indexed.Check 4: sitemap.xml resolves and its child sitemaps are live
Public responseShopify serves an index at
/sitemap.xmlthat points to product, collection, page and blog sitemaps. Confirm the index returns XML, that each child URL returns 200, and that the domain inside the sitemap matches the primary domain. A sitemap still pointing at themyshopify.comhostname after a domain change is a real and common finding.Check 5: Key templates are not accidentally noindex
Public responseLook for a
robotsmeta tag or anX-Robots-Tagheader on the homepage, one collection, one product and one page. A noindex left over from a theme preview, a password period, or a staging copy is the single most expensive thing a public scan can catch.Check 6: Time to first byte, recorded as a trend rather than a verdict
Public responseOne measurement from one location is a data point, not a diagnosis. Note the value, note where it was measured from, and compare it to the same measurement next week. A sudden change is informative; an absolute number without context is not.
Does each page say what it is?
Shopify themes generate most of these tags automatically, which is exactly why they go unchecked. Themes get customized, apps inject their own tags, and the defaults quietly stop being true.
Check 7: Title tag present, specific, and not truncated
Public responseThe homepage title should name the store and what it sells, in that order or the reverse, in roughly sixty characters. A missing title, a title that is only the store name, or one that repeats the shop name twice because both the theme and an SEO app append it, are all worth a line in the report.
Check 8: Meta description present and written for a human
Public responseSearch engines rewrite descriptions freely, so this is less about ranking and more about not shipping an empty tag or a description copied from a product feed. Check the homepage and one template of each type.
Check 9: Canonical tag present and pointing where you expect
Public responseShopify products can be reached at
/products/handleand at/collections/collection-handle/products/handle. Standard themes canonicalize the second form to the first. Confirm that still holds after theme edits, and confirm the homepage canonical is the primary domain, not amyshopify.comURL or a locale path you did not intend to be primary.Check 10: One H1 per template
Public responseRead the HTML, not the rendered page. Logos wrapped in an H1, section headings promoted to H1 by a page builder, and product pages with no H1 at all are common after a few rounds of theme customization.
Check 11: Structured data on product pages validates
Public responseMost themes emit Product JSON-LD; review and SEO apps often add their own. Two competing Product blocks with different prices or availability is a real problem. Copy the product page HTML into a schema validator and read what it finds rather than assuming the theme handled it.
Check 12: hreflang is present and reciprocal if you sell across markets
Public responseIf the store uses Shopify Markets with subfolders or country domains, each locale page should reference the others. Check one product page in two markets and confirm both list each other. Partial hreflang is a frequent leftover from a market that was switched off.
How much is the browser being asked to do?
This is where “the store feels slow” usually lives, and where the public HTML is more revealing than people expect. You cannot measure the shopper’s experience from a single document fetch, but you can count what that document asks the browser to load.
Check 13: Size of the HTML document itself
Public responseA Shopify homepage is commonly a few hundred kilobytes of HTML. A document past a megabyte usually means inlined product data, embedded JSON for several apps, or a section repeated many times. Size alone is not a fault; it is a prompt to look at what fills it.
Check 14: Script inventory: external, inline, and data blocks
Public responseCount the
<script>elements and split them three ways: external files, inline executable code, and data blocks such as JSON. A store with 30 external scripts and 40 inline blocks has a different problem from one with five of each. Record the split, because the fix for each is different.Check 15: Distinct third-party hosts
Public responseList every hostname the HTML references for scripts. Each new host is a DNS lookup, a connection, and a vendor whose uptime is now part of yours. Six hosts is ordinary; twenty deserves a conversation about which vendors are still paying for themselves.
Check 16: Recognizable vendors and category overlap
Public responseMatch the hosts and inline markers against known app and vendor signatures. This is inference from public evidence, not an installed-app inventory, and the report should say so. What it does reliably surface is two review vendors, two chat widgets, or two analytics tags loading side by side.
Check 17: Core Web Vitals from field data
Browser neededLargest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift come from real browsers on real devices. Read them from Search Console’s Core Web Vitals report or the Chrome UX Report. A document fetch cannot compute them, and any tool that prints a vitals score from one server-side request is guessing.
Checks 14 through 16 are what App Audit reports for a public storefront: script split, distinct hosts, recognized vendors, and possible category overlap, each with the evidence shown.
Is the storefront structurally sound?
Check 18: Viewport meta tag present
Public responseEvery current Shopify theme ships one. It disappears when a layout file is replaced wholesale or a landing-page builder takes over the
<head>. Without it, mobile browsers render the desktop layout and scale it down.Check 19: Language declared on the html element
Public response<html lang="en">, or the correct locale for each market. Screen readers and translation features depend on it, and a store selling in Spanish withlang="en"is a small, silent accessibility fault on every page.Check 20: Security headers are what you expect
Public responseShopify sets a baseline on hosted storefronts and merchants control little of it directly. The useful question is whether anything changed after a CDN, proxy or headless layer was introduced: a missing Content Security Policy or Strict-Transport-Security header on a store that used to send one is a real finding.
Check 21: Core templates return 200 and render the right thing
Public responseFetch one collection, one product, one page, one blog post, the search page and a deliberately wrong URL. The first five should return 200 with the expected template; the last should return a real 404, not a 200 with “not found” text. This needs more than a homepage fetch, so do it by hand or with a crawler you trust.
What only admin access can confirm
Anyone who tells you a public scan covered these is overstating what it saw. They matter, and they need someone logged in.
Check 22: Theme version, unpublished copies, and who edited what
Admin or theme accessHow far behind the theme vendor’s current release is the live theme? How many unpublished copies exist, and is anyone sure which one is the backup? The theme library and its edit history are visible only in the admin.
Check 23: App embeds switched on versus apps actually in use
Admin or theme accessThe theme editor lists every app embed and whether it is enabled. Cross-check that list against the apps the team still uses. Public evidence can show an embed’s script loading; only the admin shows the toggle and the subscription behind it.
Check 24: URL redirect table health
Admin or theme accessShopify’s URL redirects only fire for paths that do not otherwise resolve, and the table accumulates entries for years. Export it, look for chains and loops, and confirm the redirects from the last migration still point at live pages.
Check 25: Search Console coverage and the Shopify web performance report
Admin or theme accessIndexing status, crawl errors, and field vitals live in Search Console. Shopify’s own performance reporting lives in the admin. Both are first-party and both are more authoritative than any external tool for the questions they answer.
Turning findings into a decision
A list of 25 results is not a plan. Sort every finding into one of three piles before anyone opens the theme editor.
- Blocks. A noindex on a live template, a sitemap on the wrong domain, a redirect loop, a robots rule that hides collections. Fix these first and fix them alone, so the effect is measurable.
- Drag. Script count, host count, vendor overlap, oversized HTML, missing canonicals on secondary URLs. These cost a little on every page view and they compound. Schedule them as a batch with a baseline captured first.
- Drift. A title that could be better, a description that reads like a feed, a header that is technically fine. Log them; do not let them crowd out the first two piles.
Before changing anything
Confirm which template the finding lives in, capture a baseline of the metric you expect to move, know who owns the code that will change, and have a rollback that takes minutes rather than a support ticket. Public evidence is grounds for investigation, not permission to edit a production theme.
What Store Check covers
Store Check is a bounded, read-only version of the public part of this checklist. It requests three things from a storefront: the homepage HTML, /robots.txt and /sitemap.xml. From those responses it reports on HTTPS, status and redirects, title, description, canonical, viewport, language, robots rules, sitemap availability, a Content Security Policy header, HTML size, script inventory, distinct hosts, recognized vendors, time to first byte at the moment of the scan, and whether the storefront presents as Shopify at all.
It does not execute JavaScript, crawl beyond those three requests, compute Core Web Vitals, or see anything in the admin. Every finding is labelled as observed, measured or inferred, ships with the evidence it came from, and is scored by a versioned engine so a report from last quarter still means what it meant then.