Message conditions
Message conditions let you control when a message is displayed to a user based on their current context or past behavior. All conditions are evaluated with AND logic — the message is shown only when every condition is met.
You can configure conditions in the message editor under the Conditions section in the lateral panel.
Condition types
URL
Available on: JS SDK only.
Display the message based on the current page URL.
| Operator | Description |
|---|---|
| Contains | URL contains the given fragment, e.g. /pricing |
| Does not contain | URL does not contain the given fragment |
| Equal | URL exactly matches, e.g. https://www.example.com/pricing |
| Not equal | URL does not exactly match |
| Regex | URL matches the given regular expression, e.g. ^/products/.*$ |
Screen
Available on: iOS, Android, React Native, and Flutter SDKs only.
Display the message based on the current screen name, as reported by your app through Screeb.screenTracking(...).
| Operator | Description |
|---|---|
| Contains | Screen name contains the given string |
| Does not contain | Screen name does not contain the given string |
| Equal | Screen name exactly matches, e.g. HomeScreen |
| Not equal | Screen name does not exactly match |
Delay
Display the message after the user has spent a given number of seconds on the current page or screen.
| Field | Description |
|---|---|
| Duration (sec) | Seconds to wait before displaying the message (0–9999) |
Session duration
Display the message after the user has accumulated a given number of seconds on the website or app across all pages (current session).
| Field | Description |
|---|---|
| Duration (sec) | Total seconds spent on the website/app (0–9999) |
Scroll
Available on: JS SDK only.
Display the message when the user has scrolled past (or before) a given percentage of the current page.
| Operator | Description |
|---|---|
| Greater than | Scroll position has exceeded the given percentage |
| Less than | Scroll position is below the given percentage |
Scroll to element
Available on: JS SDK only.
Display the message when a specific element enters the viewport.
| Field | Description |
|---|---|
| CSS selector | A CSS selector identifying the element, e.g. #sign-up-section |
DOM element
Available on: JS SDK only.
Display the message based on the presence of a DOM element on the page.
| Operator | Description |
|---|---|
| Loaded | The element matching the CSS selector exists in the DOM |
| Not loaded | The element matching the CSS selector does not exist in the DOM |
Event count
Display the message based on how many times a user has triggered a custom event tracked with $screeb('event.track', '...').
| Field | Description |
|---|---|
| Events | One or more event names to match |
| Operator | Greater than, less than, equal to, not equal to |
| Count | Number of times the event was triggered |
Example: display the message after the user has triggered Product added to cart more than 3 times.
You can track custom events with the event.track command.
Event sequence
Display the message based on whether a user has (or has not) performed a specific list of events, in order.
| Field | Description |
|---|---|
| Operator | Equal (performed in sequence) or Not equal (not yet performed in sequence) |
| Events | An ordered list of event names |
Example: display the message only after the user has performed Visit Pricing, then Create Account, then Upgrade Plan in that exact order.
Combining conditions
All conditions in the list are combined with AND logic. The message is shown only when every condition is satisfied simultaneously.
Use the Add button to stack multiple conditions. Remove individual conditions with the delete (trash) icon next to each rule.
Debugging conditions
If your message is not being displayed, you can inspect which conditions are failing in the browser console:
$screeb('message.debug');
This prints each active message with its conditions and their pass/fail status. See Troubleshooting for details.