Custom intercept invitations

Despite the wide range of customizations available in Digital's intercept types, in certain scenarios it is desirable to build your own invitation UI. Use a custom intercept to take advantage of the Digital SDK's ability to orchestrate in-app engagements, such as targeting, session and quarantine logic, and the Digital self-service survey editor, while allowing your dev team to customize the invitation UI. Custom intercepts are supported by both surveys and App Rating engagements that use the indirect method (excluding direct app rating engagement method).

Use custom intercepts to:

  • extend the SDK's invitation UI, flow, and lifecycle beyond other invitation types
  • change some elements of App Ratings to interfaces which are not necessarily aligned with Digital's look and feel
  • skip feedback invitation
Example custom intercept in an app.

Edit custom intercepts self-service text fields in the Digital Command Center and dynamically feed your app with content and text to provide a platform for dynamic UI string changes. Using a custom intercept, you can completely control when the survey is displayed, the accuracy of quarantine enforcement, analytics reliability, listeners relevancy and pretty much every aspect of the intercept and targeting mechanisms.

Tip: With the ability to customize intercepts comes the responsibility of the app to handle things such as WCAG accessibility, displaying intercept when offline, intercept responsiveness, OS version support, tablet support, and so on. Many of these features are automatically handled by other SDK invite types, so choose a custom intercept only when your needs are not provided by other invitation types.

As such, it is best to treat intercept and custom intercept as separate entities on the same client host. If we compare the different types:

  • Custom Intercept Delegate (iOS) / Custom Intercept Listener (Android)- Ability to listen to SDK on when rules of custom intercepts have been met. Targeting follows these steps:

    1. The SDK determines that the targeting rule met belongs to an "invitation trigger" form which is set to "custom"
    2. Once determined, the SDK treats the session as a custom intercept session
    3. The standard Intercept Listener API / Intercept Delegate API is not fired. In other words, when the event fires, even if the app doesn't display the invite, the SDK treats this as if an intercept was displayed/can only be displayed by the Custom Intercept Trigger API, so that no additional intercepts could be displayed in this session (one intercept per app session logic)
    4. The Custom Intercept API is not able to actually display the survey if targeting was not reached for this engagement, see errors in developer documentation.
  • Custom Intercept Trigger API - App tethers with SDK to display the survey and enforce quarantine.

    While the app is free to show whatever it wants, Digital does not ask the SDK host apps to comply with a set of rules bound to the SDK logic and targeting engine so that the current ecosystem is preserved.

  • The API contains these functions for use in your app:

    Function

    Displays Form

    Used for Session Logic

    Used for Quarantine

    Invitation Accepted

    𐄂

    Invitation Declined

    𐄂

    𐄂

    Invitation Deferred

    𐄂

    𐄂

    Invitation Skipped

    𐄂

Configuration options

A survey with a custom intercept has the following options, that can be dynamically changed from the Digital Control Center without requiring any changes to an app which has integrated the SDK.

Layer 1 1 2 3 4 5
  1. Title sets the title element
  2. Description sets the description element
  3. Provide Feedback Text sets the text used for the provide feedback button
  4. Defer Text sets the text used for the defer button
  5. Decline Text sets the text used for the decline button

None of these fields are mandatory, apps are not required to provide text captions. The custom intercept targeting rules are the same as other invitation types. Multiple invitation types are allowed for a property, for example you can use a custom intercept and generic intercepts such as banner or alert.

Custom Intercept Flow

A survey with a custom intercept follows this flow:

Flow of a custom intercept.
  1. Register to Callback - An application that uses Custom Intercept should register to the Android Custom Intercept Listener or iOS Delegate using the respective Android or iOS APIs.
  2. Targeting Evaluation - The SDK evaluates the targeting rules and if a custom intercept survey or app rating evaluation is true, for example the application needs to display the custom intercept, the SDK reports this event to the app using the custom intercept listener/delegate callback (TargetEvaluationSuccess Method) and provides the relevant configured texts.
  3. Display Invitation - The application displays the invitation to the user and manages the invitation lifecycle and user actions. Customers who wish to leverage the targeting mechanism and automatically display the survey to the end-users without displaying an invitation can skip this step.
  4. Report User Action - The application reports the user actions to the SDK using the customInterceptTrigger API. The action options are: accepted, declined, skipped, and deferred. More details are available in the respective Android or iOS pages.
  5. Show Engagement - When the application reports an “accepted” action, the SDK displays the respective survey or app rating to the user.

Important Notes

  • The standard Intercept Listener API or Intercept Delegate API is not triggered for custom intercepts.
  • When a custom intercept is selected to be displayed, if the app does not display the invite, Digital considers this scenario as if an intercept was displayed. No additional intercepts can be displayed in this session because only one intercept is permitted for each app session.
  • Reporting the user actions is very important to maintain the SDK logic for quarantine, see table below.

General SDK Features Support

  • Translations - The translations feature works as expected in the SDK, for example determining locale. The translations mechanism passes the strings to the app in the Custom Intercept Delegate (iOS) / Custom Intercept Listener (Android) based on the locale determined.
  • Existing SDK Methods - All other SDK APIs works as expected including enable or disable intercept