Blink

Blink

    ›User Journeys

    Getting started

    • Overview
    • Quick Start
    • Environments
    • Support

    Panels

    • Basics
    • Panel options
    • Custom content

    User Journeys

    • The basics
    • Conditions
    • Actions
    • Throttles
    • Journey Groups
    • Complete Examples

    Guides

    • How to enable donations

    Blink Javascript SDK

    • Load the SDK
    • Blink managed functions
    • Blink managed variables
    • Reference

      • showDonationModal()
      • promptDonationPopup()
      • promptSubscriptionPopup()
      • isSubscribed()
      • getSubscription()
      • onSubscriptionChange()

    Blink notifications

    • Webhooks
    • Events

      • Subscription created
      • Subscription canceled
      • Subscription reactivated
      • Subscription unpaid
      • Subscription finished
      • Payment created
      • Payment refunded

      Objects

      • Event
      • Subscription
      • Donation
      • Payment
      • Amount
      • User
      • Merchant

    User Journey Throttling

    A User Journey's action will trigger whenever its condition is met. But for most conditions, that may be more than once. For example, consider the following journey:

    {
      "action": {
        "type": "createPG",
        "gateType": "banner",
        "panelType": "newsletter"
      },
      "condition": {
        "type": "pageScroll",
        "percent": 50
      }
    }
    

    This journey will trigger every time the user scrolls, as long as the user is at least 50% scrolled through the page. Therefore, multiple banners will be created stacked on top of each other as the user keeps scrolling down the page, which is likely not what is intended.

    The recommended way to deal with this quirk is through the use of throttles. A throttle is a rule that says the journey should only trigger a limited number (count) of times within a browsing scope (scope) and/or in a certain time period (duration). For example, the throttle rule {"count": 1, "scope": "tab", "duration": 10} means that the action can only happen at most once every 10 seconds within the same browser tab.

    There are 3 supported scopes for throttling rules:

    • memory: within the same page view. Refreshing the page or clicking a link that opens in the same tab refreshes the throttle rule.
    • tab: on the same browser tab. Opening a link in a new tab or closing the current tab and opening a new one refreshes the throttle rule.
    • permanent: within the same browser (as long as the user doesn't clear their cookies)

    A throttling rule that omits the scope field acts as a permanent rule: {"count": 1, "duration": 3600} means that the action can happen at most once an hour (3600 seconds), no matter how many pages the user visits or how many tabs they open.

    A throttling rule that omits the duration field is in effect essentially forever: {"count": 1, "scope": "tab"} means that the action can only happen once per tab, no matter how long the user spends browsing on that tab.

    For the example journey above, the following throttle works pretty well:

    {
      "action": {
        "type": "createPG",
        "gateType": "banner",
        "panelType": "newsletter"
      },
      "condition": {
        "type": "pageScroll",
        "percent": 50
      },
      "throttle": {"count": 1, "scope": "memory"}
    }
    

    This way the banner will only appear once within a page view, which is likely the behaviour you want. It's also possible to provide multiple throttles:

    {
      "throttle": [
        {"count": 1, "scope": "memory"},
        {"count": 2, "duration": 2592000}
      ]
    }
    

    The two throttle rules act independently, and both of them must be satisfied for the action to occur. Now the banner will appear once within a page view, but at most twice a month.

    Common examples

    • {"count": 1, "scope": "memory"}: the action can happen at most once within the same page view. This is useful for a variety of journeys that want to trigger once for every page view, like hiding an article behind a paywall or setting an A/B testing variable used by other journeys.
    • {"count": 2, "duration": 2592000}: the action can happen at most twice a month. This is useful for displaying a promotional popup/banner, while not wanting to disrupt the user's experience more than necessary.
    • {"count": 1, "duration": 15, "scope": "tab"}: the action can happen at most once every 15 seconds on the same tab. This is useful for behind-the-scenes behaviour such as submitting analytics events or pre-fetching content for future pages.
    ← ActionsJourney Groups →
    Blink
    Docs
    Getting StartedPublic API
    Integration
    Donation
    Blink
    Copyright © 2021 Blink Ledger Systems Inc. All rights reserved