Display modes, triggers, and targeting
In-product behavior is stored in studyConfig on the study record. Configure these in the Build tab alongside questions (in-product settings panel).
Display modes
Section titled “Display modes”| Mode | Description |
|---|---|
| MODAL | Center overlay dialog (default) |
| BANNER | Horizontal bar (top or bottom placement rules) |
| EMBEDDED | Inline in a container (targetSelector / placement CSS selector) |
| TOAST | Small corner notification style |
Each mode supports dimensions (width/height) — defaults apply per mode if not customized.
Placement rules (embedded / banner)
Section titled “Placement rules (embedded / banner)”| Placement | Description |
|---|---|
TOP | Top of page |
BOTTOM | Bottom of page |
AFTER_SECTION | After a CSS selector match |
INSIDE_CONTAINER | Inside a matched container |
Visibility options:
- Show only when target is visible
- Hide after answer
- Hide on mobile below a breakpoint (default 768px)
Page targeting
Section titled “Page targeting”Control which URLs can show the survey.
Include rules
Section titled “Include rules”Match when URL:
- Contains, equals, or starts with a string
- Matches a regex
- Has a URL parameter name/value pair
Combine rules with OR or AND logic.
Exclude rules
Section titled “Exclude rules”Same rule types as include. Exclude wins when matched (typical pattern: show on /app/* but exclude /app/settings).
Triggers
Section titled “Triggers”A survey shows only when targeting passes and at least one trigger fires:
| Trigger type | Parameters |
|---|---|
| TIME_ON_PAGE | Seconds on current page |
| ELEMENT_EVENT | Click, hover, or input change on a CSS selector; optional text contains filter |
| SCROLL_DEPTH | Percentage scrolled; optional scroll container selector |
| EXIT_INTENT | Cursor leaves viewport (desktop pattern) |
| CUSTOM_JS_EVENT | Event name fired via FromUsers.trackEvent() |
Combine multiple triggers according to your trigger logic configuration in the builder.
Frequency caps
Section titled “Frequency caps”Limit how often users see the survey:
| Cap | Behavior |
|---|---|
| ONCE_EVER | One impression per browser/storage profile |
| ONCE_PER_SESSION | Once per browser session |
| CUSTOM | Minimum interval — value + unit (minutes, hours, days) |
Legacy field frequency (ONCE, DAILY, WEEKLY, MONTHLY) may still exist on older studies.
Quarantine
Section titled “Quarantine”Quarantine rule — after any in-product survey is shown, block other surveys for a cooldown period (value + minutes/hours/days). Reduces survey fatigue.
Impressions
Section titled “Impressions”When the SDK displays a survey, FromUsers records an impression (visible in results as impression counts).
Dynamic values
Section titled “Dynamic values”Use Logic & Variables for:
- URL parameters (
?plan=pro) - Data layer / analytics variables
- Cookies
- Session variables
- Formulas (
IF,SUM, etc.)
The SDK DynamicValuesCapturer resolves only variables defined on the study.