Skip to content

JavaScript library for abstracting out Google Analytics (analytics.js) and Kissmetrics.

License

Notifications You must be signed in to change notification settings

MatthewCallis/wildberry-princess

Repository files navigation

Wildberry Princess

Build Status Dependency Status devDependency Status Test Coverage Coverage Status

Wildberry Princess

-- "I found this note stabbed to my door! ... man."

Wildberry Princess is a JavaScript library for abstracting out Google Analytics (analytics.js), KissMetrics, Segment.io, FullStory, Customer.io and perhaps other analytics platforms in the future.

Usage

// Google Analytics initialized somewhere...
// Kissmetrics initialized somewhere...
// Segment.io initialized somewhere...
// FullStory initialized somewhere...
// Customer.io initialized somewhere...

// Setup
const analytics = new WildberryPrincess({
  useGoogleAnalytics: true,
  useKissMetrics: false,
});

// Set dimensions and users.
if (current_user_id != null) {
  analytics.identify({ id: current_user_id, name: 'Name', email: 'email@domain.tld' });
}

if (app_id != null) {
  analytics.set('dimension1', app_id);
}

// Track user actions, specifically clicks, where the label is the text content (button, div, tab, etc.) or form input name (input, select, textarea).
// analytics.trackUserActions(selector, category, action, label, value)
analytics.trackUserActions('button', 'Button');
analytics.trackUserActions('input, select, textarea', 'Form Input');
analytics.trackUserActions('tab', 'Tab');

// Send events anywhere, like Backbone model actions.
// analytics.trackEvent(category, action, label, value)
analytics.trackEvent('Model', 'Destroy', this.constructorName);

// Track page views. Currently
// NOTE: KissMetrics is not included here to avoid event bloat 🤑
apptentive.analytics.trackPageView('/fake-page', 'A Cool Fake Title');

// Send eCommerce data.
const transaction_id = `${this.model.id}_${Date.now()}`;
const transaction = {
  id: transaction_id,
  affiliation: 'Candy Kingdom',
  revenue: price,
  shipping: '0',
  tax: '0',
};
const item = {
  id: transaction_id,
  name,
  category,
  price,
  quantity: 1,
};

analytics.trackEcommerce('clear');
analytics.trackEcommerce('addTransaction', transaction);
analytics.trackEcommerce('addItem', item);
analytics.trackEcommerce('send');

For more advanced use, please refer to the source.

Testing

npm run lint
npm run make
npm run test
npm run report
npm run make-dist-min

Useful Reading

Google Analytics

Segment.io

Customer.io

Contributors

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

It's gunna be so flippin' awesome!