https://github.com/matthewcallis/wildberry-princess
JavaScript library for abstracting out Google Analytics (analytics.js) and Kissmetrics.
https://github.com/matthewcallis/wildberry-princess
analytics fullstory google-analytics javascript-library kissmetrics segment
Last synced: 12 months ago
JSON representation
JavaScript library for abstracting out Google Analytics (analytics.js) and Kissmetrics.
- Host: GitHub
- URL: https://github.com/matthewcallis/wildberry-princess
- Owner: MatthewCallis
- License: mit
- Created: 2015-03-04T18:28:11.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T09:37:42.000Z (over 3 years ago)
- Last Synced: 2025-07-03T22:05:02.434Z (12 months ago)
- Topics: analytics, fullstory, google-analytics, javascript-library, kissmetrics, segment
- Language: JavaScript
- Homepage:
- Size: 1.13 MB
- Stars: 4
- Watchers: 2
- Forks: 3
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Wildberry Princess
[](https://travis-ci.org/MatthewCallis/wildberry-princess)
[](https://david-dm.org/MatthewCallis/wildberry-princess)
[](https://david-dm.org/MatthewCallis/wildberry-princess#info=devDependencies)
[](https://codeclimate.com/github/MatthewCallis/wildberry-princess)
[](https://coveralls.io/r/MatthewCallis/wildberry-princess?branch=master)

_-- "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
```javascript
// 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
```shell
npm run lint
npm run make
npm run test
npm run report
npm run make-dist-min
```
## Useful Reading
### Google Analytics
- [Analytics.js Field Reference](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference)
- [Cookies and User Identification](https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id)
- [Custom Dimensions and Metrics](https://developers.google.com/analytics/devguides/collection/analyticsjs/custom-dims-mets)
- [Event Tracking](https://developers.google.com/analytics/devguides/collection/analyticsjs/events)
### Segment.io
- [Track (Google Analytics)](https://segment.com/docs/integrations/google-analytics/#track)
- [Track (Segment.io)](https://segment.com/docs/sources/website/analytics.js/#track)
- [Identify](https://segment.com/docs/spec/identify/)
### Customer.io
- [Javascript API](https://customer.io/docs/api/javascript.html)
# Contributors
- [Owen Kim](https://github.com/owenkim) - Segment.io Support
- [Democritos Tsellos](https://github.com/dtsellos03) - FullStory Custom Fields
## 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
