Work through the lanes in order. Each check says what to look at, how to look, and what a failure usually means. Tick what passes; what is left is your fix list, roughly in the order a paid audit would rank it.
01 · Performance
Does the store load fast where it matters?
Measure the templates that make money — collection, product, cart — on a mobile connection, with field data where you have it. A home-page lab score is not the store.
Mobile Core Web Vitals pass on product and collection templates, not just the homepage.
- How
- PageSpeed Insights on one product URL and one collection URL; read the field data at the top before the lab score.
- If it fails
- Failing LCP on product pages is usually the main image or render-blocking scripts; failing INP is usually app JavaScript.
The largest element on the product page is the product image, and it is not lazy-loaded.
- How
- PageSpeed Insights → "Largest Contentful Paint element". Then view source and check the first product image for loading="lazy".
- If it fails
- A lazy-loaded hero image adds hundreds of milliseconds to every product view for no benefit.
Fewer than fifteen third-party scripts load on a product page.
- How
- Chrome DevTools → Network → filter "3rd-party" on a product page. Count domains, not requests.
- If it fails
- Every app and pixel adds weight on every page. Past about fifteen, the store is paying in speed for tools nobody audited.
Images ship as WebP or AVIF at the size they are displayed, not the size they were uploaded.
- How
- DevTools → Network → Img. Sort by size. Anything over 300 KB on a product grid is a finding.
- If it fails
- Oversized originals are the most common single cause of a slow Shopify store, and the cheapest to fix.
Nothing on the page moves after it has painted.
- How
- Load a collection page on a phone and watch the first two seconds. Then PageSpeed Insights → CLS.
- If it fails
- Late-loading banners, fonts and app widgets that shift content cost conversions and the CLS score.
02 · SEO and answer engines
Can search and AI assistants find and understand it?
The same structured-data and crawl work that earns a rich result is what gets a brand named in an AI answer. Check both.
Every important page is indexed, and nothing you would not want to rank is.
- How
- Google Search Console → Pages. Compare "indexed" against your product and collection count; read the "not indexed" reasons.
- If it fails
- Large gaps usually mean duplicate variant URLs, filtered collection URLs or a robots rule from a theme or app.
Product pages carry valid Product structured data with price, availability and reviews where you have them.
- How
- Google Rich Results Test on one product URL.
- If it fails
- Missing or broken Product markup forfeits price and stock in search results and makes the product invisible to shopping assistants.
The site declares one Organization with a logo, contact details and links to its real profiles.
- How
- View source on the homepage; search for "Organization". Check sameAs lists the profiles that actually exist.
- If it fails
- Without one resolvable entity, search and answer engines cannot connect the store name to what it sells.
Titles and meta descriptions are unique per page and written for a buyer, not generated from the product name alone.
- How
- Search Console → Performance, sort by impressions, read the titles. Or crawl with Screaming Frog (free to 500 URLs).
- If it fails
- Duplicate titles across variants and collections split clicks between pages that should be one.
A migration or redesign in the last year left no dead URLs behind.
- How
- Search Console → Pages → "Not found (404)". Any URL with historical traffic needs a 301.
- If it fails
- Rankings lost to a missing redirect map are the most expensive and most avoidable SEO failure in ecommerce.
03 · Conversion
Does a visitor who wants to buy actually manage to?
Walk the money path on a real phone as a first-time buyer, and read the funnel beside it. Opinions about the homepage come last.
Add-to-cart rate on product pages is above 5%, and checkout completion is above 40%.
- How
- Shopify Analytics → Online store conversion rate, expanded. Compare the three steps over 30 days.
- If it fails
- A weak first step is a product-page problem; a weak last step is shipping, payment or checkout friction.
The total cost — shipping and tax included — is visible before checkout starts.
- How
- Add a product and open the cart on a phone. Can you see what you will actually pay?
- If it fails
- A surprise at checkout is the leading stated reason for abandonment, and it is a settings change, not a redesign.
The product page answers the category question above the fold: size, fit, ingredients, compatibility, delivery time.
- How
- Open your best-selling product on a phone. Without scrolling, can a stranger tell whether it is right for them?
- If it fails
- Every scroll to find a basic answer is a share of buyers who do not scroll.
Site search returns the right product for your top ten search terms, including misspellings.
- How
- Shopify Analytics → Top online store searches. Try each one yourself.
- If it fails
- Visitors who search convert at several times the rate of those who browse. A search that fails loses the most motivated buyer.
Express checkout (Shop Pay, Apple Pay, Google Pay) is enabled and visible on the product page or cart.
- How
- Settings → Payments → Shopify Payments → wallets. Then look at the product page on a phone.
- If it fails
- Accelerated checkout removes the form that loses mobile buyers; it is free to enable.
04 · Accessibility
Can everyone complete a purchase?
Automated tools catch some of it. The rest is a keyboard, a screen reader and five minutes on the paths that make money.
The whole purchase — product, options, cart, checkout — can be completed with a keyboard alone.
- How
- Unplug the mouse. Tab through a purchase. Watch for controls you cannot reach or cannot see focus on.
- If it fails
- A keyboard trap in the variant picker or cart drawer blocks every assistive-technology user and some power users.
Every product image has alt text that describes the product, not the filename.
- How
- Products → any product → image → alt text. Spot-check ten. Or run the free axe DevTools extension.
- If it fails
- Missing alt text fails accessibility law in several markets and image search at the same time.
Body text and button labels meet a 4.5:1 contrast ratio.
- How
- axe DevTools or the WebAIM contrast checker on the theme's body, muted and button colours.
- If it fails
- Light-grey-on-white theme defaults are common, unreadable on a phone in daylight, and a one-line fix.
Form errors on checkout and account pages say what went wrong, in text, next to the field.
- How
- Submit the contact or newsletter form empty. Submit checkout with a bad postcode.
- If it fails
- An error shown only as a red border is invisible to a screen reader and unclear to everyone else.
Nothing auto-plays with sound, and every carousel can be paused.
- How
- Open the homepage on a phone with the volume up.
- If it fails
- Beyond the accessibility failure, auto-playing video is usually the heaviest asset on the page.
05 · Code and operations
Can the store be changed safely, and by whom?
The checks nobody runs until the day the developer leaves. Run them now.
The live theme has a current backup and the theme code lives somewhere other than only the Shopify admin.
- How
- Online Store → Themes. Is there a dated duplicate? Does anyone have the code in a repository?
- If it fails
- A theme that exists only in the admin cannot be reverted, diffed or handed to a new developer with confidence.
Every installed app has an owner and a reason, and the ones with neither are gone.
- How
- Settings → Apps and sales channels. For each, write down who uses it and what for. Leave blanks where you cannot.
- If it fails
- Unowned apps cost a monthly fee and page weight, and keep API access to your customer data.
Uninstalled apps left no code behind in the theme.
- How
- Online Store → Themes → Edit code → search theme.liquid and the layout files for the names of apps you removed.
- If it fails
- Orphaned app snippets are a common cause of slow pages and console errors months after the app is gone.
Staff accounts are current, and nobody who has left still has one.
- How
- Settings → Users and permissions.
- If it fails
- A former developer or agency with store-owner access is a security finding, not a housekeeping note.
There is a staging theme, and changes are previewed on it before going live.
- How
- Ask whoever last changed the theme how they tested it.
- If it fails
- "We edited the live theme" is how a store loses a sale day to a typo in a Liquid file.