Skip to main content

Triggers

Told uses a three-part trigger system to control survey display:

  1. Where (SurveyTrigger) — What user action activates the survey (page visit, click, custom event, screen change)
  2. When (period & display rules) — Time period, frequency, and display behavior
  3. 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:

ConditionDescription
pathMatch the URL path (e.g., /pricing)
urlMatch the full URL (e.g., https://myapp.com/pricing)
dynamicUrlMatch 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.

ConditionDescription
nameMatch 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:

VariableDescription
clickIdMatch an element's HTML id attribute
clickClassesMatch an element's CSS classes
clickElementMatch an HTML element type
clickTextMatch 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:

SettingDescription
eventNameThe event name to listen for
conditionsArray of property conditions (key + operator + value)
delaySeconds 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

RuleDescription
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:

FilterOptions
Devicesphone, tablet, desktop — select one or more
LanguagesFilter by browser/device language (is / is not)
CountriesFilter 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 percentageShow 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.