Exit-intent popups on Shopify
Exit intent is a timing mechanism, not a magic trick. Done well it makes an offer only when a sale is otherwise lost. Done badly it hands discounts to people who were going to buy anyway.
What exit intent actually measures
Exit intent is an inference from behavior, not a certainty. The desktop version watches for the pointer crossing the top edge of the viewport, because that path leads to the address bar, the tabs, and the close button. It is a good proxy and an imperfect one: someone reaching for a bookmark looks identical to someone leaving.
That imperfection is why the rest of the rules matter more than the detection itself.
Mobile changes everything
There is no cursor on a phone, so classic exit intent simply never fires. Any tool that only implements the mouse method is invisible on mobile traffic, which for most stores means invisible to the majority of visitors, and to almost all social traffic.
The signals that do exist on touch devices:
- Fast upward scroll. The flick toward the address bar that usually precedes closing or switching away.
- The back gesture. Parking one history entry lets the first back press surface an offer instead of leaving the store outright.
- Idle with a cart. They stopped without leaving, which is a different shape of the same hesitation.
The four guardrails that protect margin
An exit offer is a discount. Without limits it costs more than it earns. These are the constraints worth insisting on, in any tool you choose:
- Only on an exit signal. A shopper walking to checkout should never see a discount. If the popup can fire on page load or on a timer, it will eventually discount buyers you already had.
- Never on already-discounted products. Stacking a second offer on a sale item is how margin quietly disappears.
- Unique, single-use, short-lived codes. A shared code becomes a public coupon. A per-session code with a visible countdown has no pattern to learn and nothing to post on a coupon site.
- A cart-value floor. On a small basket, a percentage off can cost more than the order is worth. Setting a minimum keeps the offer where it pays.
Measuring it honestly
Most tools report "influenced revenue", which counts any order that touched a campaign. That number is always flattering and rarely useful.
Two better standards to hold a tool to:
- Deterministic attribution. A single-use code appearing on an order is proof that specific offer was used. No modeling, no view-through windows.
- Incrementality. Withhold the offer from a random share of leaving shoppers and compare how many of each group bought. This is the only way to answer whether the discount caused the sale.
Clinch does both, and the second is unusual in this category. If your current tool cannot answer the incrementality question, you are paying for discounts without knowing which ones you needed.
Where to go next
For the wider recovery picture including email flows, see cart abandonment recovery on Shopify. For a comparison of the tools in this space, see the best Shopify exit-intent apps.
Common questions
How is exit intent detected?
On desktop, by tracking the cursor leaving through the top edge of the viewport, which usually means it is heading for the address bar, a tab, or the close button. On mobile there is no cursor, so the common signals are a fast upward scroll, the back gesture, and prolonged inactivity.
Do exit-intent popups work on mobile?
Not with the desktop method. Mouse-based detection never fires on a touch device. Mobile requires touch signals such as a fast scroll up or intercepting the back gesture. Since most social traffic is mobile, a desktop-only tool misses the majority of it.
Do exit popups train customers to expect discounts?
They can. If every visitor sees the same code, shoppers learn to trigger it, and the code often ends up on coupon sites. The fix is codes that are unique per session, single-use, and short-lived, plus never showing an offer to someone who is not leaving.
Will an exit popup hurt my Core Web Vitals?
It should not, if it loads asynchronously after the page renders and stays idle until a signal fires. Problems come from tools that inject render-blocking scripts or heavy assets on every page load.
Try it on your own store
Clinch is free to install. The Free plan costs $0 per month and takes 10% of revenue it actually recovers, so if it recovers nothing you pay nothing.
Add to Shopify · Free to install