App SEO impact checker
Find out which Shopify apps are hurting your SEO.
Select every app you have installed. The checker analyses schema conflicts, performance damage, crawl waste and canonical confusion — then gives you a prioritised fix list.
Most Shopify stores carry at least one app combination that is actively working against organic performance. This tool identifies which ones.

Context
Why app bloat is a Shopify-specific SEO problem
WordPress and WooCommerce stores deal with plugin conflicts, but the nature of those conflicts is different. A WordPress plugin either works or visibly breaks the site. Shopify apps operate in a more opaque way: they inject code into themes via app blocks, liquid snippets, and script tags — and multiple apps can output the same signals at the same time without either appearing broken.
The result is a category of problem that is invisible to store owners but measurable by search engines. Two SEO apps can both be reporting success in their dashboards — showing green ticks, healthy schema output, clean meta tags — while simultaneously overwriting each other on every page load. The last app to execute wins, and which one that is can change based on theme caching, app load order, and whether the theme has been edited.
Schema conflicts are the most technically damaging version of this. When Google finds two conflicting Product JSON-LD objects on the same page — one from a review app adding AggregateRating, one from an SEO app adding the base product data, both structured differently — it either ignores both or picks one at random. Neither outcome is what the store intended.
Performance damage is more cumulative. Each additional JavaScript file added by an app contributes to Total Blocking Time (TBT) and, if the file writes to the DOM, Cumulative Layout Shift (CLS). A single popup app might add 40–80ms of TBT on its own. Two popup apps together, each triggering layout shifts on load, can disqualify a store from Core Web Vitals passing status entirely.
The other two damage types — crawl waste and canonical confusion — are less visible but compound over time. A translation app that creates language-specific subdirectories multiplies every page in the store by the number of languages. A page builder that generates unique URLs for every landing page variant adds hundreds of orphaned pages to the crawl budget. Neither of these appear as errors. They just quietly consume the crawl resource that should be spent on product and collection pages.
The four damage types
How Shopify apps damage SEO in four distinct ways
1. Schema conflicts
Shopify themes output JSON-LD structured data by default. Every major theme — Dawn, Prestige, Impulse, Turbo — includes Product schema. When an SEO app, review app, or schema-specific app also outputs Product schema, the page now contains two competing JSON-LD objects. Google's guidance is that it will attempt to parse both, but conflicting fields — especially aggregateRating, offers price data, and brand — create validation errors in Search Console's Rich Results report.
The worst combination is two apps that each claim to own the schema layer: a dedicated schema app like JSON-LD for SEO alongside a full SEO suite like AVADA, both writing complete Product objects. This is not a theoretical risk — it is the most commonly identified schema error in Shopify technical audits.
Check for this: open a product page, view source, and search for "@type":"Product". Count the instances. One is correct. Two or more indicates a conflict.
2. Performance degradation
Core Web Vitals scores are affected by every script loaded on a page. The three metrics most commonly damaged by apps are Largest Contentful Paint (LCP), Total Blocking Time (TBT), and Cumulative Layout Shift (CLS).
Chat apps are the heaviest single-app performance cost. Gorgias loads a 150–400ms TBT-contributing script on every page — including pages where live chat is irrelevant, like the checkout success page. Popup and spin-to-win apps (Privy, Wheelio, Spin-a-Sale) create CLS by injecting overlays during page load. Session recording tools (Lucky Orange, Hotjar) add 50–80kb of JavaScript that blocks the main thread.
The performance damage compounds. A store running Gorgias, Privy, Klaviyo, and Lucky Orange simultaneously is loading four separate performance-impacting scripts on every page. Each individually might be justifiable. Combined, they represent a significant Core Web Vitals failure risk on mobile.
3. Crawl waste
Google allocates a crawl budget to each site based on its size, authority, and speed. On a Shopify store with thousands of products, crawl budget is a real constraint — there are only so many pages Googlebot will fetch per crawl cycle. Wasting it on app-generated URLs, paginated overlay pages, and duplicate language versions means that priority product and collection pages get crawled less frequently.
The biggest crawl wasters are translation apps and page builders. Weglot, when configured for multiple languages, generates new URL paths for every page in the store. A 2,000-product store with three languages becomes a 6,000-URL store overnight. GTranslate on the free subdomain tier creates fully separate subdomain sites — effectively duplicating the entire store without the authority signals of the main domain.
Subscription apps can also contribute crawl waste. ReCharge historically generated /tools/recurring/ URLs that were indexed by Google and created thin-content pages with no clear canonical.
4. Canonical confusion
Canonical tags tell Google which version of a page is the authoritative one. When apps generate pages with inconsistent or missing canonical tags, Google may index the wrong version — or treat multiple versions as competing pages, splitting the link equity between them.
Page builders (PageFly, Shogun) create this problem by generating custom URLs for landing pages that sometimes lack proper canonical tags pointing back to the original collection or product URL. Translation apps create it by generating language-specific URLs where hreflang and canonical tags are configured inconsistently. The result in both cases is a Search Console coverage report full of "duplicate without user-selected canonical" warnings.
Manual audit method
How to check for app-related SEO damage without a tool
The checker above surfaces the known risk patterns for common apps. But if you have custom or less common apps, or want to verify the findings manually, here is how to check each damage type directly.
Schema conflicts — Rich Results Test
Go to search.google.com/test/rich-results and test a product page URL. Look at the JSON-LD section. If there are two or more Product objects, you have a conflict. Count the aggregateRating blocks — there should be at most one, and it should match the visible review count on the page. Any mismatch indicates an app is writing schema that does not match the displayed data.
Also check via view source: open a product page, use Ctrl+U (or Cmd+U on Mac), and search for application/ld+json. Each occurrence is a separate JSON-LD block. More than two on a product page (one for the product, one for breadcrumbs) warrants investigation.
Performance damage — PageSpeed Insights
Run a mobile PageSpeed test on a product page and a collection page at pagespeed.web.dev. Look at the diagnostics section for "Reduce JavaScript execution time" and "Avoid chaining critical requests." The waterfall will show which third-party scripts are loading and how long each takes. App scripts appear as third-party domain requests — chat.gorgias.com, static.klaviyo.com, cdn.privy.com, and so on. Identify each one and cross-reference with your installed app list.
For CLS, look at the "Avoid large layout shifts" diagnostic. A score above 0.1 indicates failing status. Popup apps are the most common cause — disable them temporarily and retest to confirm.
Crawl waste — Screaming Frog or Search Console
In Google Search Console, go to Coverage and filter by "Indexed, not submitted in sitemap." A large number here often indicates app-generated URLs being indexed. Look at the URL patterns — recurring path segments like /tools/recurring/, /fr/ (language subdirectories), or page builder URL patterns indicate app-generated crawl waste.
In Screaming Frog, run a crawl and sort by URL. App-generated URL patterns will cluster together. Look for pages with thin content (word count under 50), no internal links pointing to them, and no canonical tag — these are classic app-generated orphan pages.
Canonical issues — Search Console Coverage report
The "Duplicate without user-selected canonical" status in Search Console is the primary indicator of canonical confusion. Click into this category and examine the affected URLs. If they follow a pattern — all have a specific URL segment, all are from one section of the store — that pattern typically maps to an app. Cross-reference with installed apps that create new pages.
The right stack
The safe app stack pattern for Shopify SEO
There is no universal list of safe apps, because "safe" depends on what else is installed and how the theme is configured. But there is a safe stack pattern: one app per function, no functional overlap, performance cost validated before and after each installation.
One SEO app — or none
If your theme (Dawn, Prestige, any well-built custom theme) already outputs Product schema, BreadcrumbList schema, meta titles from product titles, and OG tags — you may not need an SEO app at all. Check what the theme outputs first. If it is adequate, the app adds risk without adding value. If you do install an SEO app, install one and only one. Disable the schema and meta output in all other apps.
One review app
Judge.me is the most performance-conscious option. Yotpo offers more marketing features but loads more aggressively. Okendo is mid-tier on both. Whichever you choose: verify after installation that the AggregateRating schema from the app does not conflict with the theme's schema output. The best review apps let you disable their schema output if the theme handles it — check the app settings.
One chat app — loaded conditionally
Gorgias is the most widely used Shopify support app, but it is also the heaviest chat script in the ecosystem. If you use it, confirm it is not loading on product and collection pages via a render-blocking synchronous script. Well-configured Gorgias loads asynchronously and defers until after the main thread is free. Check this with PageSpeed — if Gorgias appears in the TBT breakdown on product pages, the configuration needs adjustment.
No popup apps
Klaviyo handles email capture with a flyout that is far lighter than Privy, Wheelio, or Spin-a-Sale. If email capture is required, use the tool you are already using for email marketing — adding a separate popup app purely for the capture adds a full additional script to every page load. Spin-to-win and game-style popups are among the highest CLS contributors in the Shopify ecosystem. The conversion uplift they claim rarely survives the Core Web Vitals penalty they impose.
Performance tools that actually help
Hyperspeed is the one app in the ecosystem with documented evidence of improving Core Web Vitals rather than worsening them. It removes render-blocking scripts, defers third-party code, and optimises image delivery — without adding a script that costs more than it saves. If performance scores are below 60 on mobile, Hyperspeed is worth evaluating before any other performance intervention.
Remediation
What to do when you find a conflict
Schema conflicts
Identify which app is outputting which schema block using view source or the Rich Results Test. The correct resolution is to designate one system as the schema owner and disable schema output in all others. Most SEO apps have a toggle to disable schema output — use it. If the conflict is between a theme and an app, decide which to trust: themes are usually correct for the base Product object, apps are usually better for AggregateRating (because they have access to the live review data). Disable schema in whichever system you trust less for that specific type.
After making changes, re-test with the Rich Results Test and wait for Search Console to re-crawl before declaring the issue resolved. Schema errors can take 2–4 weeks to clear from Search Console after a fix.
Performance degradation
Run PageSpeed before any changes to establish a baseline. Then address apps in order of impact — the waterfall report shows which scripts take the longest. For chat apps: verify they are loading asynchronously. For popup apps: consider whether the conversion rate uplift justifies the CLS damage. For analytics/recording apps: consider running only one recording tool and accepting a sample rather than full session coverage.
If removing an app is not an option, investigate whether the app has a "lazy load" or "defer" setting. Many apps that default to eager loading can be configured to defer until user interaction — this removes the main-thread blocking without removing the functionality.
Crawl waste
For translation apps: ensure hreflang tags are configured correctly so Google treats language variants as related, not competing. Add the language-specific URLs to a language-specific sitemap if the translation app supports it. For page builder orphan pages: add proper canonical tags pointing to the primary URL, or noindex pages that are purely for A/B testing and should not be indexed.
Canonical confusion
Use Screaming Frog to crawl the site and export the canonical column. Filter for pages where the canonical URL differs from the page URL — these are either correctly canonicalized variants or misconfigured pages. The key signal is whether the canonical URL actually exists and returns a 200 — a canonical pointing to a 404 is technically worse than having no canonical at all.
For page builder pages: check the app settings for a canonical URL field on each page. For translation apps: Weglot has canonical configuration in its settings — ensure the primary language canonical is set for all translated pages.
The right order to fix conflicts
- Schema conflicts first. These are the most technically specific and the most likely to directly affect rich result eligibility. Fix schema before addressing performance.
- Critical combination conflicts second. Two SEO apps, two review apps, two popup apps — these are the highest-impact individual fixes. Removing one app from a conflicting pair typically resolves multiple issue types simultaneously.
- Performance degradation third. Address apps in order of PageSpeed impact. High-TBT scripts before CLS contributors.
- Crawl and canonical issues fourth. These require configuration changes rather than app removal and take longer to resolve — but the long-term crawl budget recovery is significant on larger stores.