I’m looking for a Shopify app that can block visitors from selected countries while still allowing legitimate search engine crawlers to fully index my store.
I’m currently using Locksmith for country blocking, but we’ve confirmed that when the country restriction is enabled, Google’s Rich Results Test cannot see my Product schema, Review schema, or other structured data. Disabling the restriction immediately allows Google to detect the schema again, so the issue appears to be that the crawler is seeing the blocked page instead of the product page.
Has anyone successfully used a Shopify app that blocks visitors by country while still allowing Googlebot (and other legitimate search engine crawlers) to crawl product pages normally?
Ideally, I’m looking for replies from people who have actually verified this using Google’s Rich Results Test or Google Search Console, rather than relying on app descriptions or marketing claims.
If you’ve found a solution, I’d really appreciate knowing which app you’re using and how you confirmed that search engines can still access your product pages and structured data.
This is likely happening because the app is blocking Googlebot along with visitors from the selected countries.
A few country-blocking apps allow you to whitelist search engine crawlers, but you’ll need to verify that Googlebot is actually receiving the full product page—not a blocked page. The best way to confirm this is by using Google’s Rich Results Test and checking Google Search Console’s URL Inspection tool.
If the app doesn’t support crawler whitelisting, you may need a custom solution (for example, at the CDN or server level) that blocks visitors by country while allowing legitimate search engine bots to access and index your store normally.
Has anyone successfully implemented this and verified it with Rich Results Test or Search Console?
Worth checking one thing before you go app shopping: are you blocking the US?
Googlebot crawls almost entirely from US IP ranges. If the US is in your blocked list, the crawler is getting the locked page for the same reason a US shopper would, and no amount of app switching fixes that. If the US is not blocked, then it is the app serving its gate before the product template renders, which is what you are seeing with the schema disappearing.
The other reason I would be careful with crawler whitelisting is that it means showing Googlebot a page you do not show a human from the same country. That is cloaking territory. Verifying the crawler by reverse DNS rather than user agent is the technically correct way to do it, since the user agent is trivially spoofed, but the policy risk does not go away just because the detection is solid.
If what you actually want is to stop people in those countries from buying rather than from reading, that is a different tool. Shopify Markets can turn off selling for a country while the pages stay fully crawlable and indexable. You keep the schema, you keep the rankings, and you close the checkout instead of the door.
What is driving the block, fraud orders or shipping you cannot fulfil there?
The schema vanishing is just Locksmith doing its job - and it’s why swapping apps probably won’t help. Locksmith blocks at the theme level, so when a lock is on, it shows the lock page instead of your product page. Googlebot hits that same gate and gets the lock page, which is why your Product/Review schema disappears. There’s no way to let crawlers through inside Locksmith.
Two quick things to check first:
Like @lumine said, is the US on your blocked list? Googlebot crawls almost entirely from US IPs, so if the US is blocked, Google gets the gate just like a US shopper would - and no new app fixes that.
To actually confirm what Google sees, go to Search Console → URL Inspection → Test Live URL → View Crawled Page. It crawls from Google’s own servers and shows you the exact HTML + a screenshot Googlebot got. If you see the gate page there, that’s your proof. It’s more reliable than the Rich Results Test, which just tells you schema is missing without saying why.
Quick note on the “custom CDN” idea above: that isn’t really an option on regular Shopify (only Plus with a special setup), since Shopify runs the storefront through its own CDN.
Honestly, the bigger question: do you want to stop orders or stop people reading? If it’s orders, don’t block at all - just remove that country’s shipping zone. People can still browse, Google still indexes everything, schema stays intact, and there’s no cloaking risk. They just can’t check out. (Don’t do it by unpublishing products from a market, though. That throws 404s on those pages, and Google will drop them.)
So, what’s driving the block? Fraud, sanctions, or shipping you can’t do there? That’ll decide whether shipping zones are enough or you really need to gate people out.
Hi @devcoders, thank you for the clear breakdown. You’re right that the issue is Googlebot hitting the lock page — I’ve confirmed this via Search Console URL Inspection, which showed the gate page rather than the product template. The schema disappears entirely because Locksmith blocks at theme level before the product page renders.
I did look into crawler whitelisting apps (specifically Blockify, which confirmed Googlebot whitelisting in writing), but as @lumine correctly flagged, that approach carries cloaking risk regardless of how solid the detection method is. A CDN-level solution would be the clean fix, but that requires Shopify Plus — not viable on my current plan.
I’ve landed on a different approach: scoping the block to the specific collection I need to protect rather than the whole store, and accepting the SEO trade-off on those pages only while the situation is time-sensitive. Thanks again for pointing me in the right direction.
Hi @lumine, this is the most technically precise response in the thread and I appreciate it. To answer your question directly: the US is not on my blocked list, so that isn’t the cause. The block is South Africa only, and the issue is exactly what you described — Locksmith serving the gate before the product template renders, which is why the schema vanishes.
Your point about cloaking is well taken and ultimately decisive for me. Even reverse-DNS verified crawler whitelisting doesn’t eliminate the policy risk, and a manual action against the domain would be far worse than temporarily losing rich results on a handful of pages.
The reason for the block is neither fraud nor shipping — it’s competitive intelligence protection around an undisclosed mineral deposit. Shopify Markets (blocking checkout rather than the page) wouldn’t solve that use case, since the goal is to prevent the product information itself from being visible to local competitors. It’s an unusual situation, and your framing helped me think through it clearly.
Hi @Ellie, thank you — your explanation of exactly why the schema disappears (Locksmith blocking at theme level before the product template renders) was the clearest in the thread and confirmed what I was seeing in Search Console URL Inspection.
To answer your question: the block isn’t about fraud, sanctions, or shipping. It’s about protecting competitive intelligence around a new mineral deposit — so blocking checkout via shipping zones wouldn’t be sufficient, as the product information itself needs to stay off local competitors’ radar.
Your point about unpublishing from a market causing 404s is something I wasn’t aware of — that’s a useful flag and I’ll make sure to avoid that approach.
I’ve concluded that there’s no clean solution on standard Shopify that avoids cloaking risk, and I’m proceeding with a scoped Locksmith block on the specific collection only, accepting the SEO trade-off on those pages for the time being. The rest of the store remains fully crawlable. Thanks for the thorough and practical response.
Update for the community — Blockify’s response on the cloaking question
Following advice in this thread, I sent Blockify a direct question asking whether allowing Googlebot to bypass a country block while human visitors from the same country see a blocked page constitutes cloaking under Google’s spam policies.
After escalating internally, here is the key part of their response:
“Google does explain how it defines cloaking in its Spam Policies for Google Web Search. They state: ‘Cloaking refers to the practice of presenting different content to users and search engines with the intent to manipulate search rankings and mislead users.’ Based on this definition, cloaking refers to showing different product or service content to Google than to your visitors. Blocking certain traffic to prevent spam, bots, or hacking attempts is a different use case and is not described as cloaking in Google’s documentation.”
They also confirmed they have no official documentation from Google or Shopify specifically addressing this scenario, and that no merchants have reported penalties from using this feature — though they acknowledged that is anecdotal rather than a formal confirmation.
My read on this: The intent clause in Google’s definition is real and potentially significant. If the block is for legitimate business reasons rather than to manipulate rankings, it may fall outside Google’s definition of cloaking. However, intent is assessed by Google, not the merchant or the app.
Curious whether @lumine or others see this intent-based distinction as meaningful in practice, or whether Google’s enforcement tends to ignore intent and focus purely on the technical behaviour.
Hi there @ElementalTreasure
Country-blocking apps sometimes operate by intercepting requests prior to the page load, and this can occasionally interfere with crawling and structured data exposure. Rather than basic IP blocking, a better option is to implement a bot verification solution on the app or edge level that allows for exemptions to your crawlers. Run your configuration through Google Search Console URL Inspection and Rich Results Test to make sure product schema is still vissible. Be sure the rules for the block are around access to the customers and not around the ability to index.
Hi @ElementalTreasure
There’s something that hasn’t come up yet in this thread: if Google successfully crawls and indexes your product pages, the product information will be visible in South African Google search results regardless of whether the URL is blocked for direct visitors. Titles, prices, descriptions can all surface in SERPs, featured snippets, even cached pages — a competitor can find what you’re selling without ever loading your store.
Country-blocking the Shopify storefront prevents direct access, not search discovery. Those are two different things, and conflating them leads to solutions that can’t actually close the gap.
Worth getting clear on what you’re actually trying to achieve:
If the goal is blocking direct store traffic from SA (preventing purchases, limiting exposure of the storefront) — Locksmith handles that, and the schema visibility trade-off is just the cost of doing it.
If the goal is keeping the mineral deposit product details off local competitors’ radar entirely — the blocking approach doesn’t get you there once Google has indexed the pages. The content is already discoverable.
The only architecture that covers both: noindex those specific product pages, accept no Rich Results or structured data benefits, and route sales through a private or B2B channel. Real competitive protection, but no Google visibility.
Your call on avoiding cloaking was the right one. Just worth being clear-eyed that a country block — even a perfectly implemented one — doesn’t prevent search exposure. Those are controlled separately.