Documentation
Frequency + Delivery
How SpryUI decides when a message can show again.
Runtime lifecycle order
- Fetch SDK config and build targeting context from current pathname.
- Filter by enabled, targeting, dismissal state, schedule, and frequency caps.
- Apply experiment assignment (one variant per experiment/user key).
- Resolve banner rail ownership and render winners.
- Track impressions and interaction events for rendered messages.
Frequency caps
perSession: positive integer cap per session key.total: positive integer lifetime cap per message.- Cooldown precedence:
cooldownMinutes(if > 0) overridescooldownHours. - Frequency checks use persisted display history when persistence is enabled.
Snippetjson
{
"frequency": {
"perSession": 2,
"total": 5,
"cooldownMinutes": 30
}
}Banner delivery
- Banner defaults:
mode:auto,transition:slide,intervalMs:6000,maxVisible:2. automode pickscarouselwhen rail has multiple banners, otherwisestack.maxVisibleapplies to stack mode (not carousel rotation).
Dismissal behavior
- Dismiss button is rendered only when
content.dismiss.enabled === true.