A popup is a trade. The shopper hands over an email address, and you hand back a reason to do it: a discount, early access, a restock alert. When that popup opens the instant the page renders, you ask for your half of the trade before the shopper has seen a single product photo or price. That is the mistake behind most complaints about email popups, and it is a timing problem, not a design problem.
Why a popup that fires on page load costs you signups
A shopper who just landed has one question: is this store worth my time? A full-screen overlay in the first second answers a different question, which is whether you want their email address. It becomes the first thing they know about the brand, and it frames everything after it.
On mobile it gets worse. The popup lands while the page is still painting, so the shopper sees an overlay over a half-loaded product grid. The close button sits wherever the design put it, often a small target near an edge, and a missed tap opens the offer instead of dismissing it. Plenty of shoppers leave rather than fight the screen.
There is a list-quality issue as well. An address collected before the shopper knows what you sell is an address collected for the coupon, not for the store. You still have the signup, but the relationship starts on a transaction: they hear from you, expect a discount, and unsubscribe when the discounts stop.
None of that means you should remove the popup. It means the moment it appears should come later, after the shopper has shown some interest. That is what a trigger does.
The triggers worth using instead
A trigger is the condition that decides when a popup appears. A delay is one kind of trigger, and on its own the weakest one, because a clock cannot tell an engaged reader from a bounce. Three other triggers do more of the work.
Exit intent
Exit intent fires when the shopper signals they are leaving. On desktop that is the cursor moving toward the browser’s top edge; on mobile, popup apps approximate it with a fast scroll back up or a back-button signal. The offer arrives at the last moment a discount, a free shipping nudge or a restock promise can still change a decision.
Use it for a cart-saver, a last-chance discount, or a “still deciding?” offer. Do not make it your only trigger, because a shopper who never intends to leave never sees it, and someone leaving for a good reason will not be saved by a popup.
Scroll depth
Scroll depth fires once the shopper has read a set distance down the page. It is the closest thing to proof of interest: they have moved past the hero, past the first product row, into the part of the page where they are comparing options.
This should be your first trigger on the homepage and on long product pages. Set it so the popup waits until after the shopper has seen something worth signing up for, and remember that on a short page a high scroll depth means the popup never fires at all.
Time delay
A delay fires after a number of seconds on the page. It is predictable, which is why so many setups use it, and blind, which is why so many of those popups feel pushy. A shopper deep in a product description gets interrupted, and someone who bounces quickly never sees the popup.
If you want a delay, make it a second condition rather than the whole rule: a delay plus scroll depth, or a short delay that applies only to returning visitors.
Cart value and page rules
Cart value fires when the cart reaches an amount you set. Page rules decide where a popup is allowed at all: homepage only, product pages only, never over the cart. Together they keep an email capture from blocking a shopper who is already deep in the buying process.
Cart value is also where non-email offers live. If the offer is an add-on rather than a signup, the upsell popup at add to cart guide covers how to place it on the cart page and at the checkout click.
Setting up triggers without editing theme files
Any popup has to load on your storefront, which means something has to be added to the theme. There are two ways to do that, and the difference shows up months later.
The first is pasting code into the theme’s Liquid files. It works, and it gives you full control, but you own the maintenance. A theme update, a redesign or a switch to a new theme means checking the code again, and a broken snippet can take the popup down without anyone noticing.
The second is an app that installs as a theme app extension. Nothing in the theme files is edited, the app adds its own block you switch on or off from the theme editor, and it goes away when you uninstall. If you expect to change themes at some point, this is the route that survives the change.
PopupGenius works this way: PopupGenius installs as a theme app extension, so triggers, targeting and design stay in the app, no theme files are touched, and the popup can be switched off with one toggle in the theme editor.
Whichever route you take, work in this order:
- Decide the offer and the exact trigger before you open the builder.
- Set the targeting: new visitors or everyone, which pages are allowed, and what happens after a dismissal.
- Build the popup and set the discount, if the offer includes one.
- Preview on a real phone, tap the close button yourself, and check the popup does not cover the add-to-cart button.
- Publish, then place a test order to confirm any discount applies at checkout without a code.
Choosing the right trigger for each page
Homepage
Most homepage visitors have no product in mind yet, so the popup has to earn a signup with something general: a welcome discount, early access, a quiz. Scroll depth past the hero works well here, and exit intent catches the visitor who browsed and decided against you. Avoid a delay that fires before the shopper has scrolled at all.
Product pages
A shopper on a product page is comparing. They are reading the description, checking the photos, looking for delivery details. Fire on scroll depth after the description or the reviews, or on exit intent when they move to leave. Tie the offer to what they are looking at rather than a generic newsletter ask, because the product is what they care about.
This is also the page where a purchase incentive beats an email ask. If the plan is to show related products instead, the cross-sell specific products guide explains how to choose what appears.
Cart page and checkout
The shopper who reaches the cart has already decided something. An email popup here pulls attention away from the purchase they were about to make. Use cart-page triggers for offers that increase the order instead: an add-on, a bundle, a free shipping threshold. With PopupGenius on Shopify you add an order-total condition, so the add-on offer only appears once the cart is worth it.
A free gift works the same way, and the free gift with purchase guide covers the setup, including how the gift gets added without a code.
Testing two timings before you commit
No blog post can tell you the right trigger for your store, because it depends on your traffic, your offer and how your shoppers browse. Test it.
Pick two variants and split traffic between them:
- exit intent against scroll depth
- a short delay against no delay
- a page rule against showing everywhere
Keep the offer, the design and the copy identical between the two, or you will not know which change did the work. Run the test long enough to cover a normal week rather than one busy afternoon.
Compare views, adds to cart, purchases and attributed revenue per variant, not just the number of signups. A variant that collects fewer emails but produces more orders is the better popup. PopupGenius splits traffic between two variants and reports those figures for each, so a timing change can be judged on orders rather than on signups alone.
Timing mistakes that make a popup feel pushy
- Firing on page load, especially on mobile. This is the one that starts most of these conversations.
- Using the same popup on every page. A newsletter offer on the cart competes with the purchase.
- Showing the email ask to people who already subscribed. Target known customers out of the capture popup, or you look like you are not paying attention.
- Re-showing the popup immediately after a dismissal. Give a dismissed visitor a gap before they see it again.
- Setting the trigger so high it never fires. A scroll depth near the bottom of a short page means you built a popup nobody sees.
- Judging the test on signups alone. Orders are the outcome that pays for the traffic.
- Copy that asks without offering. “Join our newsletter” asks for something; “Get 10% off your first order” names the trade.
FAQ
How long should a Shopify email popup delay be before it appears?
There is no single number that fits every store, and a delay is the bluntest trigger available. If you want one, keep it short and pair it with scroll depth so the shopper has read something first. Better still, test two timings against each other and let your own order data decide.
Should the popup fire at the same point on mobile and desktop?
No. Exit intent is harder to read on a phone, since there is no cursor heading for the browser edge, so scroll depth or a delay after scrolling tends to behave better there. Preview on a real device and check the close button is easy to hit with a thumb.
Will delaying the popup cost me signups?
It may cost you signups from shoppers who would have handed over an email without looking at anything. What you get back is a list built from people who saw something they liked. The only way to know the net effect for your store is to test a load-time popup against a delayed one and compare purchases, not just email addresses.