Shopify does not let you upload arbitrary files to the site root, and this matters more than it first appears. IndexNow scopes a key to the folder it sits in: a key served at /pages/indexnow can only authorise URLs under /pages/, so it will not cover your products or collections. The page-template method below is therefore only useful if you are indexing /pages/ content. For a whole shop, put Cloudflare in front of your store and serve the key at the root with a Worker.
Step by step
- 1 In Shopify admin, go to Online Store → Themes → … → Edit code.
- 2 Under Templates, click Add a new template, choose "page", name it "indexnow", and select "plain text" if offered.
- 3 Replace the file contents with just your key: a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
- 4 Go to Online Store → Pages → Add page. Title it "indexnow", and set the theme template to "page.indexnow".
- 5 Note the resulting URL, e.g. https://yourdomain.com/pages/indexnow.
- 6 Paste that URL into the "Custom key location" field on your Index-now domain settings, then click Verify.
Template contents (templates/page.indexnow.liquid)
a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
The key shown is an example. Yours is generated when you add the domain.
Watch out for
- IMPORTANT: a key at /pages/indexnow only authorises URLs under /pages/. To submit product and collection URLs you need the key at your site root — see the Cloudflare guide.
- Use your primary domain, not the myshopify.com URL — IndexNow verifies the exact host you submit for.
- Shopify wraps some templates in HTML. If verification reports "HTML response", remove the theme layout with {% layout none %} at the top of the template.
Then what?
Hosting the key file proves you own the domain — it doesn't submit anything on its own. You still need something watching for changes and calling the IndexNow API with the right URLs at the right time. You can build that yourself, or let us run it for $12 a year.
Set up automatic submission