Docs

Frequency + Delivery

Documentation

Frequency + Delivery

How SpryUI decides when a message can show again.

Runtime lifecycle order

  1. Fetch SDK config and build targeting context from current pathname.
  2. Filter by enabled, targeting, dismissal state, schedule, and frequency caps.
  3. Apply experiment assignment (one variant per experiment/user key).
  4. Resolve banner rail ownership and render winners.
  5. 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) overrides cooldownHours.
  • 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.
  • auto mode picks carousel when rail has multiple banners, otherwise stack.
  • maxVisible applies to stack mode (not carousel rotation).

Dismissal behavior

  • Dismiss button is rendered only when content.dismiss.enabled === true.