---
title: Scroll trigger
slug: scroll-trigger
description: How the Scroll trigger works in Personizely: how scroll depth is measured, the time condition, short pages that can't scroll and pages that grow as you scroll.
image: https://archbee-image-uploads.s3.amazonaws.com/1y1Fr-DMGy_apx7FwibyA/ORDTWfNKMXiY3ZRv0QSgP_personizely-docs-og.png
docTags: 
createdAt: 2026-10-16T20:15:01.226Z
---

The Scroll trigger shows a widget when the visitor scrolls to a set percentage of the page. It's a way to reach visitors who are engaging with the content, such as readers halfway through a blog post or shoppers browsing down a collection.

**Available on:** all platforms.

## How it works

The trigger watches the visitor's scrolling. As soon as the scroll position reaches **Scroll distance**, it fires, checks its condition and the trigger-time rules, and shows the widget.

Scroll depth is measured over the scrollable distance of the page: 0% is the top, 100% means the visitor has scrolled all the way to the bottom. Because the last screen of a page never scrolls past the window, 100% is reached only at the very end.

## Configuration

| Option                                 | What it does                                                                                                                                                    | Values / default      |
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| Scroll distance                        | How far down the page (in %) the visitor must scroll                                                                                                            | 1–100, default **30** |
| Conditions: Time spent on current page | Only fire if the visitor has been on the page more (or less) than N seconds; optionally the total time on your site in this session, including the current page | Optional              |

The Scroll trigger doesn't offer the "Max scroll reached" condition, since the trigger already measures scrolling.

## Behavior details and limitations

- **Pages that can't scroll never fire it.** If the page is shorter than the window, there's no scrolling, so the trigger doesn't fire. Add a [Time](https://docs.personizely.net/time-trigger) or [Landing](https://docs.personizely.net/landing-trigger) trigger as a fallback.
- **Pages that grow change the target.** On infinite-scroll collections or pages that load sections as you scroll, the page gets longer, so the same percentage lies further down.
- **It keeps checking.** If the time condition fails when the visitor first reaches the scroll distance, the trigger checks again on their next scroll movement past it.
- **One show per page.** After the widget has been shown, the trigger stops until the next page load.
- **Single-page apps.** On themes that change pages without a full reload, the trigger resets with each detected page change.
- **Close triggers.** If the widget also has a Scroll [close trigger](https://docs.personizely.net/close-triggers) at or below the same percentage, it closes on the visitor's next scroll movement.

## Examples

- **Blog newsletter:** Scroll trigger at 50%, **Pages** `/blogs/**`, condition "Time spent on current page more than 20 seconds".
- **Collection help:** Callout with Scroll trigger at 70% on `/collections/*`, offering a size guide.

## Troubleshooting

- **Widget never shows on some pages** → those pages are too short to scroll. Add a Time trigger to the same widget.
- **Widget shows later than expected** → the page loads more content as the visitor scrolls. Lower the percentage.

## Related

- [Triggers overview](https://docs.personizely.net/triggers)
- [Time trigger](https://docs.personizely.net/time-trigger)
- [Exit-intent trigger](https://docs.personizely.net/exit-trigger)
- [Close triggers](https://docs.personizely.net/close-triggers)
