https://docs.digitaloptgroup.com/analytics/getting-started
This library is made to work with Digital Optimization Group's Headless A/B testing CMS. It provides a range of event tracking automatically, plus it provides a public api to allow custom event tracking.
At 15kb gzipped it's lighter than Google Analytics.
- a/b test variations actually appearing in a user's viewport (not just assignment)
- time a variation is in a user's viewport
- time on site and time on page
- visibility of the page (is tab visible?)
- mouse distance
- total scrolling distance by page
- scroll depth per page
- errors
- arbitrary
outcomesset up by the user of this library - page views
- orientation changes (mobile devices)
- mousedown activity on a variation
All events are placed on a timeline so that outcomes can be properly attributed to variations actually appearing in the viewport. For example, we shouldn't attribute an order that occured before a variation was in the viewport to that variation when running an a/b test.
npm
npminstall--save @digitaloptgroup/analyticsyarn
yarnadd @digitaloptgroup/analyticsimport{initTracker}from"@digitaloptgroup/js-analytics";constconfig={apiKey: "your-api-key",projectId: "your-project-id",// optional advanced configuration// see advanced further down this READMEvid: "visitor_id",rid: "request_id",startTimestamp: "proxy_startTimestamp"};const{
pathChange,
outcome,
caughtError,
getIntersectionObserver
}=initTracker(config);constpathname="/about-us";pathChange(pathname);Tracking events with outcome is intended as a means to track any custom user actions that you would like to associate with your a/b test variations.
outcome takes two arguments outcomeName and metadata. The name must be a string. The metadata must be an array containing an arbitrary number of objects with the type signature { key: string, value: string }.
constoutcomeName="addToCart";constmetadata=[{key: "sku",value: "product_123"},{key: "price",value: "125.99"}];outcome(outcomeName,metadata);If you would like to report a caught error you may do so with caughtError.
constmetadata=[{key: "type",value: "auth_failed"},{key: "url",value: "/login"}];caughtError(metadata);initIntersectionObserver provides viewport tracking for a/b test variations. It is intended to be used with Digital Optimization Group's Headless CMS.
In addition to the events listed above, this library automatically tracks the following events:
The library will sample mouse position every 250ms and calculate the euclidean distance from prior x and y coordinates. It will report the total every 3 seconds.
The depth and distance of scrolling activity will be reported in 3 second windows.
Orientation change will be reported for mobile devices.
If multiple clicks are recorded within a very small pixel range the number of clicks and the underlying innerHTML will be reported.
Time on page events will be emitted in a decreasing interval.
Time on site events will be emitted in a decreasing interval.
Mousedown events occuring on a tracked variation will be reported.