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.


  • 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=""></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: [
      trackingId: 'UA-121991291',
      siteId: '123-xyz'

/* Track a page view */

/* 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: ''

API reference

Using Plugins