Triggers
Told uses a three-part trigger system to control survey display:
- Where (SurveyTrigger) — What user action activates the survey (page visit, click, custom event, screen change)
- When (period & display rules) — Time period, frequency, and display behavior
- Who (audience filter) — Which devices, browsers, languages, and user segments see the survey
All three parts are configured in the Publish section of your survey.
Part 1: Where — Trigger conditions
Page visit (web)
Display when a user visits a specific page. Configure using:
| Condition | Description |
|---|---|
path | Match the URL path (e.g., /pricing) |
url | Match the full URL (e.g., https://myapp.com/pricing) |
dynamicUrl | Match a pattern with wildcards: https://myapp.com/users/*/profile |
Operators: isEqualTo, contain, doesNotContain, isNotEqualTo
You can also trigger on all pages (any URL).
Additional options:
- Delay — Wait a number of seconds after page load before showing the survey
- Scroll — Show after the user scrolls a percentage of the page
Screen visit (mobile)
For mobile apps, trigger when the user navigates to a specific screen.
| Condition | Description |
|---|---|
name | Match the screen name sent by the SDK |
Operators: same as web (isEqualTo, contain, doesNotContain, isNotEqualTo)
You can trigger on all screens or a specific screen name. The screen name is the fully qualified destination name from your navigation controller (Android) or the value passed to trackChangePage (iOS).
Click on element (web)
Display when a user clicks on a specific element:
| Variable | Description |
|---|---|
clickId | Match an element's HTML id attribute |
clickClasses | Match an element's CSS classes |
clickElement | Match an HTML element type |
clickText | Match the visible text content |
Custom event
Trigger based on events fired from code. Works with:
- Told SDK events:
told('addEvent', { event: 'purchase_completed', amount: 49.99 }) - Segment events:
analytics.track('purchase_completed', { ... }) - dataLayer events:
dataLayer.push({ event: 'purchase_completed', ... })
Event conditions: You can add conditions on event properties:
| Setting | Description |
|---|---|
eventName | The event name to listen for |
conditions | Array of property conditions (key + operator + value) |
delay | Seconds to wait after event before showing |
Operators for conditions: isEqualTo, contain, doesNotContain, isNotEqualTo
Part 2: When — Period & display rules
Date period
Restrict the survey to a specific date range:
- Begin date — When the survey starts displaying
- End date — When the survey stops displaying
Recurrence
Within the date period, set how often the survey repeats:
- Configure a recurrence interval in days (e.g., every 7 days = weekly)
Display rules
| Rule | Description |
|---|---|
Display only once (seeItOnlyOnce) | The survey appears only the first time conditions are met. Never shows again. |
Reply only once (replyOnlyOnce) | The survey can appear multiple times, but once completed, it stops. |
Stop on close (stopOnClose) | If the user closes the survey (X button), it won't appear again. |
Show until finished (tillFinish) | Keep showing the survey until the user completes it. |
Automatic resume (automaticResume) | If the user left mid-survey, resume from where they stopped. |
Part 3: Who — Audience filter
Control which users see the survey based on their environment:
| Filter | Options |
|---|---|
| Devices | phone, tablet, desktop — select one or more |
| Languages | Filter by browser/device language (is / is not) |
| Countries | Filter by country code (is / is not) |
| Browsers (web) | chrome, safari, firefox, explorer, opera |
| App versions (mobile) | Filter by app version (is / is not) |
| OS (mobile) | IOS, ANDROID |
| Rollout percentage | Show to X% of matching users (0–100, default: 100%) |
For more advanced targeting based on user traits, events, and groups, use Audience targeting.
How triggers combine
- Multiple "where" triggers: A survey can have multiple triggers (e.g., two different page visits). The survey shows when any trigger matches (OR logic).
- "Where" + "When" + "Who": All three parts must be satisfied simultaneously (AND logic). The trigger condition must match, the current date must be within the period, and the user must match the audience filter.