Overview
Analytics events are simple JSON objects that are emitted by the BeyondWords Player. They contain information about user engagement. They are separate from player events which contain information about the current state of the player. Analytics events can be sent to three possible places:- The BeyondWords dashboard via our ingestion endpoint (metrics.beyondwords.io)
- A custom analytics URL that you have configured (see Analytics > Preferences).
- A Google Analytics account that you have configured (see Analytics > Preferences).
Example event
Example event
Event schema
The type of analytics event. There are four types:
- load: content loaded successfully and the media’s duration is known
- play: the media started playing for the current content item
- play_progress: playback reached the next 10% of the audio’s duration
- ad_link_click: the user clicked on the click-through URL for an advert
The type of device that emitted the event. There are three types:
- phone: the width of the browser was between 0px and 499px
- tablet: the width of the browser was between 500px and 999px
- desktop: the width of the browser was 1000px or greater
- ios: the event was sent from a native ios app (e.g. player-ios)
- android: the event was sent from a native android app (e.g. player-android)
The type of media loaded in the player. There are two types:
- content: the event was emitted during content playback
- ad: the event was emitted during advert playback
The variant of media loaded in the player. There are two types:
- article: the media is for the original article
- summary: the media is for a summary of the article
The numeric ID of the project whose content is loaded into the player.
This field might be null if content wasn’t fetched from the API and is instead set manually in the player.
The string UUID or numeric ID of the content currently loaded into the player.
This field might be null if content wasn’t fetched from the API and is instead set manually in the player.
The string ID that can optionally be associated with the content currently loaded into the player.
This field might be null if the source_id ID wasn’t set in the BeyondWords API.
A numeric ID used by BeyondWords for associating this event with your project.
This field might be null if content wasn’t fetched from the API and is instead set manually in the player.
The numeric ID of the advert that is currently loaded into the player.
This field is null when an advert isn’t playing, i.e. when content is playing.
The numeric ID of the content or advert media field that is currently loaded into the player.
This field is null when VAST adverts are playing.
The format of media loaded in the player. There are two formats:
- audio: the player is playing audio (or will play audio)
- video: the player is playing video (or will play video)
A string UUID associated with the current user and stored in local storage under the ‘beyondwords’ key.
This field is null if advertConsent is set to ‘without-local-storage’.
A string UUID associated with the current player instance.
This ID changes after the page is reloaded and is different for each player instance.
The unix time in milliseconds at which the first analytics event was sent from the current player instance, as reported by the user’s browser.
The duration in seconds of the content or advert media currently loaded into the player.
The duration in seconds that the user has listened to of the currently loaded media.
The percentage that the user has listened to of the currently loaded media.
The speed at which the user is listening to the media, e.g. 0.5, 1 or 2.
Whether playback from segments is enabled, i.e. whether the clickableSections player setting is anything other than “none”.
The value of window.location.href when the event was emitted.
The value of document.referrer when the event was emitted.
This will always be the string “1” but we may use this later, e.g. to run A/B tests.
The version of the NPM package as specified in the package.json file.
Sending your own events
If you are not using the BeyondWords player and have instead built your own player, you can still send analytics to BeyondWords and we will aggregate them and present them in the BeyondWords dashboard. A POST request should be sent to https://metrics.beyondwords.io according to the schema above. Please try to provide all fields so that events can be aggregated and presented correctly to the user. However, if some fields are missing, we will provide sensible defaults. For example,media_variant will default to "article", media_format will
default to "audio" and device_type will default to 'desktop". We recommend
you do not rely on these defaults if you are able to provide the data in the
unlikely event that the defaults change in the future.
Some fields may not be applicable (e.g. player_npm_version). In that case, it
is fine to leave the fields blank and they will be ignored. It may be helpful to
refer to the player implementation
for more information about how a particular field is handled.
To test custom events, there may be a delay before they appear in the BeyondWords
dashboard. You may need to wait an hour or more for the events to appear.
If you are having trouble or are unsure what to set a field to, please contact
[email protected].