Skip to content

robots.txt.liquid · App routes

Disallowing App-Leftover Routes on Shopify Safely

Apps that get uninstalled often leave crawlable URLs behind — product-review widgets, popup builders, custom landing pages, comparison tools. Google has already indexed them. The uninstall doesn't remove the URLs from Google's index, and the URLs now serve broken or thin content. The clean fix is a Disallow rule in robots.txt.liquid1. Two cautions: (1) never block a live app's routes (you'll break the app), and (2) ask the app vendor first — uninstall cleanup is their responsibility.

Published Verified 2026-05-22

The problem: apps that leave URLs behind

Shopify apps that create storefront pages — review platforms, popup builders, landing-page apps, comparison widgets, custom URL shorteners — install routes into the store's URL space. When the merchant uninstalls the app, those routes don't always come down. The app's database connection breaks (so the route serves broken content) but the URL itself stays in Google's index until Google figures out the page is gone. In the interim, the URL is crawlable, indexable, and broken — a thin-content quality signal that can hurt the entire domain's reputation.

Common app-leftover patterns: /apps/judgeme/... from an uninstalled Judge.me reviews app, /apps/... URLs from any number of third-party tools, custom URL paths from page-builder apps (PageFly, Shogun) that retained routes after uninstall. The exact patterns vary by app vendor and Shopify's app proxy implementation.

How to find app-leftover URLs in your store

Two checks find most app-leftover URLs. (1) Google Search Console > Indexing > Pages. Filter by 'Not indexed' reasons like 'Crawled - currently not indexed' and 'Soft 404'. App-leftover URLs typically show up here. (2) The Google site: search operator. Run site:yourstore.com -inurl:products -inurl:collections -inurl:pages -inurl:blogs in Google's main search. The remaining results — anything that's not a product, collection, page, or blog — are candidates for app leftovers.

Cross-reference the URLs you find against your installed apps list (Settings > Apps). Anything that does not map to a currently-installed app is a leftover from a previous app. Anything that maps to an installed app is a live route that you must not block.

The Disallow pattern for app routes

Add the Disallow lines to Shopify's own * group, inside the default-groups loop in robots.txt.liquid, using the group.user_agent.value == '*' check from Shopify's Customize robots.txt docs. That keeps one * group instead of a second User-agent: * block. Use the most-specific path that catches the leftover routes without affecting any live app — typically the app's prefix path (e.g. /apps/oldapp/). Keep the group.sitemap lines, and check the rendered /robots.txt before pushing to live: open it in a browser, then test a leftover URL and a live one with Search Console's URL Inspection tool.

liquid robots.txt.liquid with custom disallow rules for app leftovers
{% for group in robots.default_groups -%}
{{ group.user_agent }}
{% for rule in group.rules -%}
{{ rule }}
{% endfor -%}
{% if group.user_agent.value == '*' -%}
Disallow: /apps/oldreviewapp/
Disallow: /apps/oldlandingbuilder/
{% endif -%}
{% if group.sitemap != blank -%}
{{ group.sitemap }}
{% endif %}
{% endfor -%}

Google's robots.txt documentation3 notes that robots.txt blocks prevent crawling but do not remove URLs from the index. URLs already indexed and now blocked may persist in search results as URL-only listings for weeks. Search Console's Removals tool won't make that permanent: it hides a URL temporarily, and "a successful request lasts only about six months"4. Permanent removal takes a 404 or 410 response, or a noindex, and Google has to recrawl the URL to see it. Google's removal guidance says not to use robots.txt for this, because a blocked URL can't be recrawled4. Use Removals to hide the URL quickly, and let Google recrawl the dead URL before the Disallow goes in.

Never block a live app's routes

The biggest mistake when adding app-route disallow rules: blocking a path that is also used by an active app. The Disallow rule prevents Google from crawling — but it doesn't break the app for users. What it does is hide the app's storefront pages from search, which is sometimes catastrophic. Cross-reference every Disallow rule against your installed apps list before adding it. Test on a development theme first. Run Google Search Console's URL Inspection tool on a representative URL to confirm the block applies only to the intended path.

The alternative: ask the app vendor to remove the routes

Before editing robots.txt.liquid, contact the app vendor. Uninstall cleanup is the app vendor's responsibility, and many vendors have a documented uninstall hook that removes their storefront routes when the merchant uninstalls the app. If the vendor confirms the routes should have been removed and weren't, they can typically fix the leftover via their backend without you touching robots.txt.liquid. This is the cleanest path because it solves the root cause rather than papering over it.

If the vendor cannot or will not remove the routes — common with smaller apps or apps where the vendor has gone out of business — the robots.txt.liquid block is the practical fix. Audit the rules quarterly: if you reinstall an app later or change vendors, an outdated Disallow rule can break your new setup.

For the underlying robots.txt.liquid mechanics and the safe editing pattern, see the cluster hub. For the ThemeKit-vs-admin-upload preservation gotcha that affects every robots.txt.liquid edit, see /shopify-seo/robots-txt-themekit/.