When to show your discount offer — delay, scroll, and exit intent — so it converts instead of annoying.
The offer inside your discount popup matters — but when it appears matters just as much. Show it too early and you interrupt a shopper before they care about your store. Show it too late and they've already left. This guide breaks down the best timing for a popup discount on Shopify, with concrete numbers you can set today and a framework for testing your own.
The short answer: for most Shopify stores, trigger a discount popup after a 5–10 second delay or once a visitor scrolls 40–60% of the page — and pair it with an exit-intent offer for people who are about to leave. Show it once per visitor, and adjust for mobile.
A discount popup is an interruption. The question is whether it interrupts at a helpful moment or an annoying one. Fire it the instant someone lands and you're asking for a commitment before you've earned any trust — so most visitors reflexively close it, and some bounce entirely, hurting your bounce rate. Wait for a signal of genuine interest, and the same offer feels like a reward for engagement instead of a toll booth at the door.
Good timing does three things at once: it protects the first impression, it targets shoppers who are actually considering a purchase, and it keeps your conversion rate and email opt-in rate moving in the right direction.
Nearly every discount popup fires on one of five triggers. Here's how they stack up and when to reach for each.
| Trigger | Fires when… | Best for | Watch out for |
|---|---|---|---|
| Immediate / on load | The page finishes loading | Sitewide sales the visitor already expects (Black Friday banners) | Feels pushy; highest close and bounce rates |
| Time delay | After X seconds on the page | List building, welcome offers, general stores | Too short annoys; too long misses fast browsers |
| Scroll depth | Visitor scrolls past a set % of the page | Blog posts, long product pages, content marketing | Needs enough page length to be meaningful |
| Exit intent | Cursor moves toward the tab bar (or fast scroll-up on mobile) | Cart recovery, last-chance discounts | Desktop signal is weaker on touch devices |
| Inactivity | The visitor stops interacting for X seconds | Re-engaging distracted shoppers | Can fire while they're simply reading |
Goal: capture the email of a first-time visitor in exchange for a discount. Give them a moment to see what you sell first.
Goal: recover a shopper who's about to leave with items in mind. This is where exit intent shines.
Goal: turn readers into subscribers. Readers scroll, so use that behavior as the signal.
Goal: announce a promotion the visitor likely came for (e.g. from an ad or email). Here an earlier trigger is fine.
Timing isn't only about the first appearance — it's also about repeats. The fastest way to make a good offer feel like spam is to show it on every page and every visit. Set a frequency cap:
Two-thirds of Shopify traffic is mobile, and the rules shift on small screens:
The numbers above are strong starting points, but your audience is unique. Treat timing as a variable to optimize:
Small timing tweaks compound. Moving from an on-load popup to a 7-second delay routinely lifts opt-in rates while cutting the "close immediately" reflex — and that's before you've touched the offer itself.
For most Shopify stores a 5–10 second delay, or after the visitor scrolls 40–60% of the page, works best. It gives shoppers time to engage before you interrupt them with an offer.
Exit intent generally converts better because it targets visitors who are about to leave anyway, so the discount recovers a sale you were about to lose. A short delayed popup works well for list building on content and product pages.
Show it once per visitor and remember with a cookie so it doesn't reappear on every page or every session. Repeating the same popup annoys shoppers and can hurt conversions.
Yes. On mobile use a slightly longer delay or scroll trigger and a compact format, because Google penalizes intrusive interstitials and small screens are easier to overwhelm.