NPOTag SDK documentation Welcome to the documentation page of NPOTag, a project hosted by the Data Integration, Recommendation and Search (DIAZ) team of the NPO. This SDK allows for event measurement for both AT Internet and Govolte.
The NPO Tag was born out of a need to bring both the Govolte Tracker and the Publieks Onderzoek online measurements closer together.
The NPOTag is a tagging wrapper developed by DIAZ, and forms the basis for the recommendations and data analysis at the NPO.
The NPO Tag is essentially a wrapper around two distinct analytics SDKS, the govolte (gvt.js) SDK used by the NPO DIAZ Team
and the Piano (smarttag.js) SDK used by the NPO Publieks Onderzoek department. Both teams share the same specification for measurements,
the so-called “tagplan”. This plan is managed by the data analysis team and available upon request (data-analyse@npo.nl ). Although the fields are shared,
some values are only available to one of the departments, for example the ProfileId (only available to DIAZ).
Who is this documentation for? This documentation is written for portal owners and developers. It documents the services we offer and the technical steps necessary to activate these services on a portal.
What are you waiting for? Get started!
Release Notes Web
iOS
Android
Changes (non-breaking): Last version proposed a fix that only worked for sdk_version.
This version fixes 3.2.9
click_chapter_1 click_chapter_2 click_chapter_3 These fields are now really correctly sent.
Changes (non-breaking): Fixed some issues with a couple fields not being sent by the tag.
sdk_version click_chapter_1 click_chapter_2 click_chapter_3 These are now correctly sent.
Changes (non-breaking): isLiveStream is added (true or false on stream events) Changes (non-breaking): QoS fields are now sent for every stream event, not only on stream error drmLoadTime and startupTime are sent only on streamLoadComplete event Changes (non-breaking): Quality of stream (QoS) fields Session ID refresh on brand change Session ID refresh after 00:00 Batched events voor web / preparation for phasing out piano Changes (non-breaking): Added a new “scroll_percentage” field that tracks a user’s position in the page as they scroll down. Possible values are 25%, 50%, 75%, 100% error event av_subtype profile_type page heart beat Changes (non-breaking): session_id is set differently than the rest because of the timeout of 30 minutes. This logic also led to a failed storage when localstorage is switched off in the browser. This fix will at least make sure events on the same page share the session. Changes (non-breaking): after abAssign, the experiment and condition values are added to recommendationTracker and streamTracker events Changes (non-breaking): Changes (non-breaking): Added A/B testing functionality via pageTracker.abAssign() Experimental, for web only Changes (non-breaking): Fixed an edge case where the Piano ATVisitorID stored in the Piano plugin and local storage could run out of sync. This should improve correct user identification (preventing known users from erroneously getting classified as new ones), though it is unknown how often this edge case has occurred. Changes (non-breaking): Piano ATVisitorID will now be managed by the NPOTag using localstorage, which avoid issues on platforms that do not support Cookies (SmartTV) Changes (non-breaking): events cached size (used when delivery does not work) is limited to 1000 (~750mb, all events in >99.9% of sessions) Documentation can be found here: https://npotag.npo-data.nl/
Breaking change The newTag() constructor had an optional serializedSessionInfo parameter introduced in 2.2.0. It is removed and now has its own dedicated contructor newTagFromSession() Additional changes Expanded session export with brand an platform info Added option to disable NMOdam Added session export function Added session import function Changed default storage to LocalStorage instead of cookies Minor dependency updates Updated smarttv testing infrastructure for manual tests Added compatibility for old browsers (Chromium 38 baseline) NPM scope has changed from @npo to @npotag! All event property interfaces are now exported for linting convenience and implementation flexibility. A docker-compose test setup to test the demo app in a Chromium 38 environment (simulates smartTV) was added. Bugfix Add browserslist to include plugins for iOS 13 support Bugfix Fixed IOS 13 safari support Fixed bug with LG WebOS 3.5 compatibility Bugfix Updated to Node 16 Fixed concurrency bug in tests / failing CI Fixed stream_position for live events Added global environment variable Vulnerability patches Additional tests Initial release of the new rewritten NPOTag Changes (non-breaking): Added isLiveStream property to tell whether an event is from a live stream QoS fields are now sent for every stream event, not only on stream error drmLoadTime and startupTime are sent only on streamLoadComplete event Changes (non-breaking): Quality of stream (QoS) fields Session ID refresh on brand change Session ID refresh after 00:00 Changes (non-breaking): [TOPSLA-220] Generate and send internally the page identifier
Changes (non-breaking): Added a new “scroll_percentage” field that tracks a user’s position in the page as they scroll down. Possible values are 25%, 50%, 75%, 100% error event av_subtype profile_type page heart beat Updated Piano SDK that should fix tracking promts Updated Piano SDK that should fix duplicate sending of piano events Fixed the usage of user agent string logging Added a maximum of backlogged messages Updated dependencies Updated the source for properties on Apple Watch devices Support for Apple Watch devices
Special thanks: Our colleagues at NOS Bump activesupport and piano dependencies Expanded session export with brand and platform data Bugfix Changed NMO calls so that panel membership is correctly reported Bugfix Updated PianoAnalytics SDK to version 3.0.4 Version 2 release Version 2 release due to interface change:
The streamTracker’s streamPosition argument now requires a Double data type instead of Float. Added features:
Fixed stream position for live streams so that they are now correctly counted in Piano post-processing. Added optional environment field (dev, preprod, prod) Fixed bug where is_new_session was set incorrectly Bugfix PageContext was not sent with click events for At plugin Initial release of the new rewritten NPOTag Changes (non-breaking): Added isLiveStream property to tell whether an event is from a live stream QoS fields are now sent for every stream event, not only on stream error drmLoadTime and startupTime are sent only on streamLoadComplete event Changes (non-breaking): Quality of stream (QoS) fields Session ID refresh on brand change Session ID refresh after 00:00 Changes (non-breaking): Feature/topsla 163 event queue crash TOPSLA-220: Add generated page_id parameter TOPSLA-223: Add R8 rules to keep members of the SDK enums Changes (non-breaking): Added a new “scroll_percentage” field that tracks a user’s position in the page as they scroll down. Possible values are 25%, 50%, 75%, 100% error event av_subtype profile_type page heart beat Added userProfileType in npo tag context Bugfixes:
Handle corrupt datastore file on startup Bugfixes:
Set user to null on logout() Update dependencies Bugfixes:
Fix SQLiteReadOnlyExceptions when trying to create a internal database for the Govolte plugin Fix IOExceptions Unable to rename of db file Expanded session export with brand and platform data Added session export Added option to disable NMOdam Bugfix Changed NMO calls so that panel membership is correctly reported Version 2 release Version 2 release due to interface change:
The streamTracker’s streamPosition argument now requires a Double data type instead of Float. Added features:
Fixed stream position for live streams so that they are now correctly counted in Piano post-processing. Added optional environment field (dev, preprod, prod) Bugfix Fixed error message for empty panelFormat Bugfix fixed contextContentID not being optional Bugfix fixed moshi configuration Initial release of the new rewritten NPOTag