Is your country popup an intrusive interstitial?
By Beacon Wave Studio · · 9 min read
Shopify's theme performance documentation has a page titled "Remove or reduce intrusive interstitials on mobile" and another called "Prevent dialogs from hijacking LCP". Both describe a box that appears over the page shortly after it loads. If you run a country popup, that description sounds uncomfortably familiar, and the fair question is whether your "Shopping from Canada?" message is the thing the guidance is warning about.
It depends on three things you control: how much of the screen the popup covers, when it appears, and whether the text inside it is bigger than the content behind it. This post goes through Google's rule, the LCP mechanics Shopify describes, and then the GeoBeacon settings that decide which side of the line a popup lands on. It does not replace the earlier post on redirects and SEO; that one is about where crawlers are sent. This one is about what a shopper sees on the first screen.
What Google means by intrusive
Google's Search Central guidance on interstitials and dialogs separates the two words. An interstitial covers the whole page. A dialog covers part of it, sometimes dimming the rest. Both obstruct the content the visitor came for, which is a problem for the visitor and, Google says, for its ability to understand the page. The recommendation is plain: use a banner that takes a small fraction of the screen instead of a full-page overlay, so people and search engines reach the content as soon as they land.
The exemptions are narrow: age gates and cookie notices that exist because of a legal obligation, and login dialogs on sites whose content is not meant to be indexed. A country popup is in neither group. It is a courtesy, and Google treats courtesies like any other dialog. Small and easy to dismiss is fine. The first and only thing a phone shows is not.
Two details to hold on to. The rule is about content being obstructed, not about the presence of JavaScript. And crawler handling does not replace testing what shoppers actually see, which matters further down.
How a dialog becomes your LCP
Largest Contentful Paint is the moment the largest eligible content element in the viewport finishes rendering. On a product page that is usually the main image; on a collection page, a hero or the first product card. It is one of the three Core Web Vitals, and the one Shopify's performance best practices single out as tracking perceived load speed most closely.
Shopify's page on preventing dialogs from hijacking LCP describes the trap. Scripts inject most dialogs after the initial HTML has loaded. If the dialog is the largest element in the viewport at the moment it appears, the browser records it as the LCP element and the clock resets to that moment. The example given is a hero that renders in 1.5 seconds and a reported LCP of 4 seconds, because a cookie banner larger than the hero appeared then. The fix is either to keep the dialog smaller than the main content, or to show it only after the visitor scrolls, taps or types, since LCP measurement stops at the first scroll or input. A timer does not help; a dialog on a setTimeout is still eligible.
What counts as a candidate matters for a popup. The web.dev description of LCP lists images, video posters, elements with a CSS background image, and block-level elements containing text. A plain background colour is not a candidate, so a dimming backdrop alone does not qualify. The parts of a country popup that can win "largest" are its title and its paragraph of text. A 420-pixel card with a two-line message is a small block. A full-screen welcome with a 36-pixel headline over a viewport-high photo is not.
What GeoBeacon does, in the order it does it
Specifics, because generic reassurance is worthless here. The theme app embed emits a small JSON config and one script tag with the defer attribute, served from Shopify's CDN. Deferred scripts run after the document has been parsed, so the popup code cannot run before the theme's own HTML, product image included, has reached the browser. That does not mean the product image has finished loading or painting. After the initial exclusion checks, the script asks Shopify's own browsing_context_suggestions.json endpoint on your domain for the visitor's country, caches the answer in session storage for six hours, and only then checks whether a rule matches. The popup element does not exist in the page until that point.
The popup itself is a card with a title, a message and two buttons. In the centered position it sits in the middle of the screen, at most 420 pixels wide, over a dimming backdrop whose darkness you set in the theme editor from 0 to 80 percent (40 by default), and it is announced to assistive technology as a modal dialog. In the top or bottom position the card is at most 560 pixels wide, left-aligned, with no backdrop; it still has the dialog role but is not modal, and the page behind it stays clickable. On screens 480 pixels wide or narrower, the centered dialog drops to a full-width sheet at the bottom edge, and the top bar stays at the top, also full width. The centered variant keeps its backdrop on a phone; the bars never have one.
The title renders at 22 pixels and the message at 15, smaller than the main heading on most themes. With a short message, the card's text blocks are unlikely to beat a product image. They can beat a text-only page: a shipping policy, a short blog post, or a collection page with nothing but a heading above the fold. Measure rather than assume, and the section after next explains why measuring needs a real browser.
What GeoBeacon does not do: it does not wait for a scroll or a tap before showing the popup. Shopify's strongest recommendation is gating on interaction, and GeoBeacon shows the message as soon as the country is known, because a visitor about to read prices in the wrong currency benefits from an early answer. That is a deliberate trade, and it is why the size and position settings carry the weight.
Settings that decide which side of the line you are on
- Position. Bottom bar or top bar is the banner shape Google asks for: a strip, no dimming, the product still visible. Centered dialog is the shape Google calls a dialog and Shopify calls an interstitial when it appears on arrival. Use it where the page genuinely cannot serve the visitor, as in the countries you do not ship to case, not for a routine market suggestion.
- Backdrop darkness. If you keep the centered dialog, moving the backdrop toward 0 leaves the page readable under the card. The slider is in the theme editor under the GeoBeacon app embed, next to the colours and corner radius.
- Remember the visitor's choice. The default is 30 days. Whatever the shopper chose, the popup does not come back until the period ends. Even at 0 days the choice is held for about 30 minutes, so the message does not reappear on every page of one session, provided browser storage is available. Field Core Web Vitals reflect eligible real-user visits, so how often the popup appears matters too.
- Copy length. The LCP contest is about rendered size. A one-line title and a one-sentence message make a smaller block than a paragraph about your shipping policy. The popup copy examples post has wording that fits on two lines.
- Exclude paths. Pages where a market suggestion makes no sense, such as a wholesale page or your blog, can be listed in the behaviour settings and GeoBeacon stays quiet there. Checkout, cart and account pages are always excluded.
- Redirect mode. No dialog, so nothing to hijack LCP. But sending an organic visitor to a different page before they see the one they clicked has its own cost for search and, in the EU, for consent; the geo-blocking regulation post explains why popup mode is the one the app marks as recommended.
Why a PageSpeed Insights lab test may miss the popup
GeoBeacon's "Ignore bots and crawlers" setting is on by default. It skips any visitor whose user agent matches a list that includes bot, crawl, spider, lighthouse, headless and preview, plus the social link fetchers, and any browser that reports itself as automated. With that setting enabled, matching Googlebot and Lighthouse visits skip the popup. This is not a guarantee about rankings or interstitial assessment. The script still downloads and runs its checks, so a lab test can measure that work while missing the popup itself. An unchanged lab LCP does not prove that real visitors are unaffected.
The data that does include the popup is field data: the Chrome User Experience Report, which feeds the Core Web Vitals report in Search Console and the top section of PageSpeed Insights. Real shoppers in Chrome see the popup, and their LCP values include whichever element won. So the test has to happen in a real browser.
- Open a product page in Chrome at a phone-sized width, or on a real phone with remote debugging, with GeoBeacon enabled. Add
?geobeacon=DEto the URL, using any two-letter code that matches one of your rules. Forced visits are never remembered, so the popup reappears on every reload while you test. The testing without a VPN post covers this parameter. - Open DevTools, choose the Performance panel and record a reload. Find the LCP marker in the timings track and click it; the panel names the element. If it is your product image or heading, the popup has not replaced the main content as the LCP element in that run. Compare timings with the embed disabled as well: keeping the same element does not mean its render time is unchanged. If LCP points to the popup's title or message, investigate its size and timing.
- If the popup won, switch the position to a bar, shorten the message, or both, and record again. Repeat on your text-heaviest templates, not only the product page.
- Check the Core Web Vitals report in Search Console about four weeks later. That is the field-data view needs enough eligible traffic, and its rolling window changes slowly.
A worked example (hypothetical)
Suppose a UK homeware brand sells from one store with GBP and EUR markets and adds a GeoBeacon rule that suggests the EUR market to visitors from Ireland. The designer prefers the centered dialog with a 60 percent backdrop. On a phone that renders as a full-width bottom sheet with the rest of the page dimmed, which is the arrival overlay Shopify's guidance describes. Even if the product image remains the LCP element, a visitor from Dublin who tapped a Google Shopping result sees the item for a fraction of a second before being asked a question about currency.
Switch the same rule to the bottom bar. The visitor sees the product, the GBP price, and a strip at the foot of the screen offering the EUR store. They can scroll past it. If they accept, the market changes; if they decline, the strip stays away for 30 days. The copy did not change, the rule did not change, and the theme editor change took a minute. That is usually the whole fix.
What this does not fix
A cookie banner or a newsletter overlay from another app answers to the same rules, and GeoBeacon's settings do nothing about it. A theme that lazy-loads its hero image or renders product information with JavaScript has a poor LCP with or without a country popup; Shopify's performance table lists those as high-impact items, and the script dependency post shows how to find out which script is blocking. And a popup that is small, late and polite is still the wrong decision if the rule behind it sends people somewhere they do not want to go.
To judge the size on your own template before any rule fires, install GeoBeacon, which is free, and open the theme editor: the app embed's preview renders the popup with sample text in whichever position you have chosen. The home page shows what the rule editor looks like before you get that far.
Frequently asked questions
Does a geolocation popup count as an intrusive interstitial?
It can. Google's guidance treats any overlay that obstructs the content on arrival as a problem, with narrow exemptions for legally required notices and login walls; a country suggestion is in neither group. A small banner at the top or bottom of the screen that leaves the page readable is the shape Google recommends. A centered dialog with a dimmed page behind it on a phone is the shape it warns about, even when the message is friendly.
Can a country popup change my LCP score?
Yes. If an eligible text block inside the popup becomes the largest contentful element before the first user interaction, its render time can become the page's LCP. A text-heavy popup on a text-only page deserves particular attention. Keeping the message short and using a bar may help, but measure the actual element and timing on your theme rather than assuming the dimensions guarantee a result.
Does GeoBeacon show its popup to Googlebot or PageSpeed Insights?
No. With 'Ignore bots and crawlers' on, which is the default, GeoBeacon skips user agents containing bot, crawl, spider, lighthouse, headless or preview, the social link fetchers, and any browser that reports itself as automated. Googlebot and Lighthouse therefore see the page without the popup. That protects crawling and shared links, but it also means a lab score cannot tell you what the popup does to real visitors; only field data and a test in a normal browser can.
Should I use a bottom bar or a centered dialog for a country popup?
Start with the bottom or top bar for ordinary market suggestions. The product stays visible and clickable, there is no backdrop, and the bar is not announced as a modal dialog. Reserve the centered dialog for cases where the current page genuinely cannot serve the visitor, such as a country you do not ship to, and keep the backdrop light. On screens 480 pixels wide or narrower the centered dialog becomes a full-width sheet at the bottom edge, so on a phone the backdrop is what separates it from the bottom bar.