Skip to content

Privacy and Tracking#

The eventTrackingOptions property customizes Storyteller's analytics and tracking behavior. It allows certain features to be disabled based on user privacy choices.

Storyteller.sharedInstance.eventTrackingOptions = {
  disabledFunctionalFeatures: [StorytellerTrackedFunctionalFeature.all],
  enableAdTracking: false,
  enableFullVideoAnalytics: false,
  enableFunctionalCookies: false,
  enablePersonalization: false,
  enableRemoteViewingStore: false,
  enableStorytellerTracking: false,
  enableUserActivityTracking: false,
};
const eventTrackingOptions: StorytellerEventTrackingOptions = {
  disabledFunctionalFeatures: [StorytellerTrackedFunctionalFeature.all],
  enableAdTracking: false,
  enableFullVideoAnalytics: false,
  enableFunctionalCookies: false,
  enablePersonalization: false,
  enableRemoteViewingStore: false,
  enableStorytellerTracking: false,
  enableUserActivityTracking: false,
};

Storyteller.sharedInstance.eventTrackingOptions = eventTrackingOptions;

Note that, by default, disabledFunctionalFeatures is set to an empty array, and the rest of the below options are set to true.

Disabled functional features#

disabledFunctionalFeatures accepts an array of the following StorytellerTrackedFunctionalFeature:

Item name Description
all Disables all of the below options.
clipLikes Disables clip likes tracking. If a user likes a Clip, the UI will update, but if they swipe away and come back to that Clip it will appear unliked again.
clipShares Disables clip shares tracking. If a user shares a Clip, the UI will update, but if they swipe away and come back to that Clip, the share count will reset to what it was before the user shared the Clip.
clipViewedStatus Disables Clips viewed/not viewed tracking, and all Clips will appear as not viewed.
pageReadStatus Disables Stories read/unread tracking, and all Stories will appear as unread.
pollVotes Disabled poll votes feature tracking. If a user votes in a Poll, the UI will update, but when they navigate to another page and then back then they can vote in the poll again.
triviaQuizAnswers Disables trivia quiz answers tracking, and hides the results page. If a user answers a Quiz question, the UI will update, but when they navigate to another page and then back then they can answer that question again.

Ad tracking#

Set enableAdTracking to false to:

  • disable sending ad events to Storyteller analytics
  • exclude ad events from the onUserActivityOccurred() delegate method
  • exclude information about the current Story or Clip from any ad requests

Full video analytics#

When enableFullVideoAnalytics is enabled, detailed video information (story titles, clip titles, story IDs, clip IDs, etc.) is included in analytics events sent to the onUserActivityOccurred() delegate method.

When disabled, sensitive video data fields are nullified for VPPA (Video Privacy Protection Act) compliance:

  • storyId, storyTitle, storyDisplayTitle
  • clipId, clipTitle
  • pageId, pageTitle

This setting allows integrators to comply with video privacy regulations while still receiving engagement analytics events. All other analytics data (user interactions, durations, event types, etc.) continues to be provided.

Functional cookies and local storage items#

Set enableFunctionalCookies to false to:

  • disable read/unread tracking
  • disable storing User IDs
  • disable any analytics
  • disable storing non-essential information in local storage

Please refer to the table below for a list of everything we store in local storage. The Stories are contained within iframes, so items that are marked as "Always included?" are used for sharing data between the Stories and the Player, as well as between the Story Pages.

Item name Description Is user data? Always included?
Storyteller.apiKey The API key Storyteller was initialized with. No ❌ Yes ✅
Storyteller.clipLikes The Clips liked by the current user. Yes ✅ No ❌
Storyteller.clipShares The Clips shared by the current user. Yes ✅ No ❌
Storyteller.clipsViewed The Clips viewed by the current user. Yes ✅ No ❌
Storyteller.hasShownInstructions Whether the current user was shown the instructions screen. Yes ✅ No ❌
Storyteller.quizzes The Stories quizzes for the current categories. No ❌ Yes ✅
Storyteller.quizAnswerMap The current user's quiz answers. Yes ✅ No ❌
Storyteller.quizAnsweredCorrectlyMap The current user's quiz scores, used to display their results. Yes ✅ Yes ✅
Storyteller.polls The Stories polls for the current categories. No ❌ Yes ✅
Storyteller.pollAnswerMap The current user's poll answers. Yes ✅ No ❌
Storyteller.recentStoryPlaybackMode The analytics' storyPlaybackMode value for the most recently opened Story. Yes ✅ No ❌
Storyteller.settings The Storyteller tenant settings for the API key provided. No ❌ Yes ✅
Storyteller.storiesReadMap The Stories and Pages viewed by the current user. Yes ✅ No ❌
Storyteller.userAttributes The user attributes set with setUserAttribute. Yes ✅ No ❌
Storyteller.userId The user ID set when initializing Storyteller, or automatically generated by the SDK (if not specified). Yes ✅ No ❌

User personalization#

By default, user attributes and user IDs are included in requests to Storyteller's servers to allow us to personalize the content returned. Set enablePersonalization to false to disable personalization.

Warning

Personalization will always be disabled if enableFunctionalCookies is set to false, since User IDs aren't stored.

Remote viewing store#

When enableRemoteViewingStore is disabled, user IDs are never stored or sent to backend services, and all user viewing activity is only kept locally on the device. This mode ensures the SDK operates in a privacy-enhanced mode designed to address VPPA (Video Privacy Protection Act) compliance concerns.

Storyteller tracking#

By default, we record analytic events on our servers. Set enableStorytellerTracking to false to disable Storyteller analytics. Note that some events are necessary for user functionality and will still be transmitted (but not stored) even when this setting is off.

Warning

Storyteller tracking will always be disabled if enableFunctionalCookies is set to false, since analytics are disabled.

User Activity tracking#

Set enableUserActivityTracking to false to disable calls to the onUserActivityOccurred() delegate method, which allows integrating apps to record our analytics events on their own systems.