---
title: Exit-intent trigger
slug: exit-trigger
description: How the exit-intent trigger works in Personizely: desktop mouse detection, mobile fallbacks (Back button, tab switch, scroll up), settings and conditions.
image: https://archbee-image-uploads.s3.amazonaws.com/1y1Fr-DMGy_apx7FwibyA/ORDTWfNKMXiY3ZRv0QSgP_personizely-docs-og.png
docTags: 
createdAt: 2026-10-15T20:35:52.204Z
---

The exit-intent trigger shows a widget when a visitor is about to leave the page. On desktop it detects the mouse heading for the browser's tabs or address bar. On phones and tablets, where there's no mouse, it uses up to three fallback signals: the Back button, the visitor switching away from the tab, or a quick scroll back up the page. It's the usual trigger for exit popups that offer a discount, capture an email or recover an abandoning cart.

**Available on:** all platforms.

## How it works

The trigger starts listening once the widget's [rules](https://docs.personizely.net/rules) have passed on page load. When it fires, the widget is shown if its trigger conditions are met. Like every trigger, it fires **at most once per page view**. After the widget has been shown, the trigger stops listening until the next page load.

Devices whose main input is touch, such as phones and tablets, use the touch behavior, whatever their screen size. A touchscreen laptop used with a trackpad counts as desktop.

### Desktop: mouse movement

The trigger fires when either of these happens:

- The mouse moves **upward** while within **Sensitivity** pixels of the top of the window (default 10 px).
- The mouse leaves the page through the top edge.

Leaving through the sides or the bottom doesn't count.

### Touch devices: fallbacks

Mobile browsers have no cursor, so exit intent is inferred from other signals. You choose which ones under **Mobile fallback**; all three are on by default.

| Fallback        | Fires when                                                                   | Details                                                                                                                                                                                                                                           |
| --------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Back button** | The visitor presses Back                                                     | Only on landing pages, meaning the visitor arrived from another site or directly. The first Back press shows the widget and keeps the visitor on the page; a second Back leaves. Not active when the visitor came from another page of your site. |
| **Focus loss**  | The browser window loses focus, or the visitor comes back to the tab         | Fires on switching to another app or tab and again on returning. If the widget was already shown, nothing else happens.                                                                                                                           |
| **Scroll**      | After scrolling past 50% of the page, the visitor scrolls back up decisively | A quick flick toward the top of the page is the typical pattern. Small adjustments while reading don't count.                                                                                                                                     |

If you turn off all three fallbacks, the trigger **never fires on touch devices**. Use a [device rule](https://docs.personizely.net/widgets-mobile) or a different trigger for mobile.

## Configuration

| Option                                 | What it does                                                                               | Values / default                                    |
| -------------------------------------- | ------------------------------------------------------------------------------------------ | --------------------------------------------------- |
| Sensitivity                            | How close to the top edge (in px) an upward mouse movement must be to count as exit intent | Number, default **10**                              |
| Mobile fallback                        | Which signals stand in for exit intent on touch devices                                    | Back button, Focus loss, Scroll (all on by default) |
| Conditions: Time spent on current page | Only fire if the visitor has been on the page more (or less) than N seconds                | Optional                                            |
| Conditions: Max scroll reached         | Only fire if the visitor has scrolled more (or less) than N%                               | Optional                                            |

## Behavior details and limitations

- **Rules are checked at page load, not at exit time.** Pages, frequency, schedule and product rules are evaluated when the page loads. If they don't pass, the trigger never starts listening. The **Target**, **Query string** and **Widget interaction** rules are re-checked at the moment the trigger fires.
- **One show per page.** Once any trigger has shown the widget, other triggers on that widget stop for the rest of the page view. Use [Frequency](https://docs.personizely.net/frequency) to control how often it appears across pages and sessions.
- **The Back button fallback changes Back-button behavior.** On landing pages the visitor needs two Back presses to leave. This is intended. If you'd rather not interfere with navigation, turn Back button off.
- **The Focus loss fallback can fire on desktop-like moments on mobile.** Opening the share sheet, a payment app or a notification can blur the window. Combine it with a **Time spent on current page** condition to avoid showing the widget to visitors who just arrived.
- **Single-page apps.** On themes that change pages without a full reload, the trigger resets with each detected page change.
- **Conditions must all pass.** If you add both conditions, the widget shows only when both are true at the moment the trigger fires. "Max scroll reached" uses the furthest point the visitor has scrolled to on this page, not their current position. A page too short to scroll counts as 100% scrolled.

## Examples

- **Exit discount on product pages:** Exit intent with **Pages** set to product pages, **Frequency** set to once per session, and a coupon element with a unique code.
- **Cart recovery:** Exit intent on `/cart` with a **Target** of "cart value at least $1", offering free shipping.
- **Mobile-friendly email capture:** Exit intent with only the **Scroll** and **Back button** fallbacks, plus the condition "Time spent on current page more than 15 seconds".

## Troubleshooting

- **Widget never shows on mobile** → no mobile fallback is selected, or the visitor reached the page from another page of your site (so Back button isn't active) and didn't scroll past 50%.
- **Widget shows immediately on mobile** → the Focus loss fallback fired because the visitor switched apps. Add a time condition or turn Focus loss off.
- **Widget doesn't show on desktop** → the visitor left through the side of the window, or another widget's trigger already fired. Check **Sensitivity**: a value below 10 can miss fast mouse movements.

## Related

- [Triggers overview](https://docs.personizely.net/triggers)
- [Inactivity trigger](https://docs.personizely.net/inactivity-trigger)
- [Frequency rule](https://docs.personizely.net/frequency)
- [Mobile behavior](https://docs.personizely.net/widgets-mobile)
- [Coupon and discount codes](https://docs.personizely.net/coupon)
