Exit Intent Has No Cursor. Stop Designing for One.
Exit Intent Has No Cursor. Stop Designing for One.
Desktop exit intent reads one real event: the cursor crossing the top edge toward tabs or the close button. It is listenable, reasonably reliable, and late — but real.
On mobile that event does not exist. There is no cursor. beforeunload is unreliable on mobile browsers — a shopper can switch apps and close from the app manager without it ever firing — and an iOS back-swipe hands you nothing actionable in time. Anything labeled "mobile exit intent" is inference from behavior. Which behavior the tool picks decides what it catches and what it interrupts.
Most stores never ask which behavior. They should.
The four proxies, honestly ranked
1. Back-button press. Closest to real exit — the visitor is already on the previous page. Whatever you show arrives after the decision. Blocking navigation to show it feels manipulative and converts poorly. Catches some exits, misses everyone who closes, switches apps, or locks the phone.
2. Tab switch / visibility change. Usually distraction, not departure. They come back. Treating it as exit teaches dismissal.
3. Inactivity. Usually reading — on a product page, the behavior you want. Interrupting someone halfway through returns policy is a good way to lose them. Useful only as a supporting signal, never alone.
4. Rapid upward scroll. The only proxy where the visitor is still on the page and able to act. Also noisy: people scroll up to re-check price, find the size chart, reach navigation, or compare images. No reliable in-the-moment way separates "going for the address bar" from "re-reading the price." Frequency capping matters more here than on desktop, because a false positive covers half a small screen.
None is inherently useless. The failure is presenting a proxy as confirmed intent — or stacking it with a timer that fires first while the dashboard still calls the campaign "exit intent."
The timer trap
Many builders allow "any condition" logic: a 20-second delay OR 40% scroll OR upward-scroll exit, once per session. The timer wins almost every time. The popup appears at 20 seconds, the visitor later scrolls up, the team concludes exit intent works on mobile when what they measured was a timer.
Give the exit proxy its own campaign, or require all conditions, then compare properly. Test the same page in two fresh mobile sessions — one performing the exit behavior, one doing nothing. If the popup appears at the same elapsed time in both, a non-exit rule fired it. Name it honestly or remove it.
What replaces exit intent: layered hesitation
Shift the logic from "when are they leaving" to "when are they engaged enough to justify an interruption." On mobile that means engagement-gated, page-aware triggers:
- Require engagement first. No first-pageview fire. Scroll depth (product pages differ from collections and articles), time on page, second view, gallery or variant interaction — something proving interest before anything interrupts.
- Respect page context. The same upward scroll means different things on a product page (re-checking price), cart (second thoughts), and policy page (reading). Split eligibility by surface; do not run one rule everywhere.
- Combine, don't rely on one. Dwell plus scroll plus no cart action beats any single proxy. Idle strengthens a case another behavior started; it never makes the case alone.
- Start subtle, escalate only. In-line reminder, toast, or slide-in first. Full modal last, only for high-intent hesitation (active cart, repeat views). On crowded Shopify themes — sticky add-to-cart, promo bar, chat, reviews — a modal at the wrong moment covers the element that was about to convert.
- Design for thumbs. One action, large dismiss, product still reachable. A technically correct trigger fails when it covers the size selector with an untappable close icon.
Google's intrusive-interstitial guidance reinforces the discipline: popups blocking content shortly after arrival from search on mobile carry ranking risk. Engagement-gated, departure-timed prompts sit closer to safe; timer fallbacks do not. Verify the mobile trigger logic instead of trusting the label.
Measure interruption, not just capture
"Recovered abandoners" cannot be verified — intent is unobservable, so no counterfactual exists per session. Measure incrementality instead with a randomized holdout among sessions meeting the same trigger rule: show to one group, suppress for the other. Compare per-eligible-session purchases or contribution, plus close rate, back-navigation, and rage-taps. Track downstream quality too — seven-day revenue per eligible session, checkout completion, 30-day email revenue from the cohort.
If exposed signups run 4% and control signups through embedded forms run 3.5%, the lift is half a point, not four points. If downstream revenue is flat while interruptions rise, the campaign captures demand that would have occurred anyway — at the cost of experience.
The takeaway
Mobile exit intent is a marketing label for guesses. Some guesses are better than others, and all of them need engagement gates, page context, and a holdout.
Stop intercepting every possible exit. Identify sessions where hesitation justifies an interruption — then show the lightest message that fits the moment, and prove it created value instead of taking credit for it.
Mobile popups firing but mobile revenue flat? Connect your Shopify store and Unico will replace single-signal exit traps with layered hesitation — engagement-gated, page-aware, and measured on incremental revenue per session.


