Analytics Documentation
A tiny open-source analytics abstraction library for browsers & node.js
Analytics is a lightweight abstraction library for tracking page views, custom events, & identify visitors. It is pluggable & designed to work with any third-party analytics tool or your own backend.
About the library
Companies frequently change analytics requirements based on evolving business needs.
This results in a lot of complexity, maintenance, and extra code when adding/removing analytic services to a site or application.
This library aims to solves that with a simple pluggable abstraction layer.

Driving philosophy
- You should never be locked into an analytics tool
- DX is paramount. Adding & removing analytic tools from your application should be easy
- Respecting visitor privacy settings & allowing for opt-out mechanisms is crucial
- A pluggable API makes adding new business requests easy
To add or remove an analytics provider, adjust the plugins
you load into analytics
.
Features
- Extendable - Bring your own third party tool & plugins
- Test & debug analytics integrations with time travel & offline mode
- Add functionality/modify tracking calls with baked in lifecycle hooks
- Isomorphic. Works in browser & on server
- Queues events to send when analytic libraries are loaded
- Works offline
- See the API docs
How to Install
Install the analytics
package from npm
npm install analytics --save
Or from a CDN as a script tag:
<script src="https://unpkg.com/analytics/dist/analytics.min.js"></script>
Using in your app
Initialize analytics, include your analytic tools, & start tracking events.
See the getting started section for more details.
import Analytics from 'analytics' import googleAnalyticsPlugin from '@analytics/google-analytics' import customerIOPlugin from '@analytics/customerio' /* Initialize analytics */ const analytics = Analytics({ app: 'my-app-name', version: 100, plugins: [ googleAnalyticsPlugin({ trackingId: 'UA-121991291', }), customerIOPlugin({ siteId: '123-xyz' }) ] }) /* Track a page view */ analytics.page() /* Track a custom event */ analytics.track('userPurchase', { price: 20, item: 'pink socks' }) /* Identify a visitor */ analytics.identify('user-id-xyz', { firstName: 'bill', lastName: 'murray', email: 'da-coolest@aol.com' })