• Stars
    star
    557
  • Rank 79,968 (Top 2 %)
  • Language
    JavaScript
  • License
    BSD 2-Clause "Sim...
  • Created almost 12 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Node.js module to help you understand how your tool is being used by anonymously reporting usage metrics to Google Analytics

Insight Build Status

Understand how your tool is being used by anonymously reporting usage metrics to Google Analytics or Yandex.Metrica

Install

$ npm install insight

Access data / generate dashboards

Google Analytics (GA)

analytics screenshot

Provider Setup

Google Analytics (GA)

Currently, Insight should be used with GA set up as web tracking due to use of URLs. Future plans include refactoring to work with GA set up for app-based tracking and the Measurement Protocol.

For debugging, Insight can track OS version, Node.js version, and version of the app that implements Insight. Please set up custom dimensions per below screenshot. This is a temporary solution until Insight is refactored into app-based tracking.

GA custom dimensions screenshot

Collected Data

Insight cares deeply about the security of your user's data and strives to be fully transparent with what it tracks. All data is sent via HTTPS secure connections. Insight provides API to offer an easy way for users to opt-out at any time.

Below is what Insight is capable of tracking. Individual implementation can choose to not track some items.

  • The version of the module that implements Insight
  • Module commands/events (e.g. install / search)
  • Name and version of packages involved with command used
  • Version of node.js & OS for developer debugging
  • A random & absolutely anonymous ID

Usage

Google Analytics

const Insight = require('insight');
const pkg = require('./package.json');

const insight = new Insight({
	// Google Analytics tracking code
	trackingCode: 'UA-XXXXXXXX-X',
	pkg
});

// Ask for permission the first time
if (insight.optOut === undefined) {
	insight.askPermission();
}

insight.track('foo', 'bar');
// Recorded in Analytics as `/foo/bar`

insight.trackEvent({
	category: 'eventCategory',
	action: 'eventAction',
	label: 'eventLabel',
	value: 'eventValue'
});
// Recorded in Analytics behavior/events section

Yandex.Metrica

const Insight = require('insight');
const pkg = require('./package.json');

const insight = new Insight({
	// Yandex.Metrica counter id
	trackingCode: 'XXXXXXXXX'
	trackingProvider: 'yandex',
	pkg
});

// Ask for permission the first time
if (insight.optOut === undefined) {
	insight.askPermission();
}

insight.track('foo', 'bar');
// Recorded in Yandex.Metrica as `http://<package-name>.insight/foo/bar`

API

Insight(options)

trackingCode

Required
Type: string

Your Google Analytics trackingCode or Yandex.Metrica counter id.

trackingProvider

Type: string
Default: 'google'
Values: 'google' | 'yandex'

Tracking provider to use.

pkg

Type: object

name

Required
Type: string

version

Type: string
Default: 'undefined'

config

Type: object
Default: An instance of conf

If you want to use your own configuration mechanism instead of the default conf-based one, you can provide an object that has to implement two synchronous methods:

  • get(key)
  • set(key, value)

Instance methods

.track(keyword, ...keyword?)

Accepts keywords which ends up as a path in Analytics.

.track('init', 'backbone') becomes /init/backbone

.trackEvent(options)

Accepts event category, action, label and value as described in the GA event tracking documentation via the options object. Note: Does not work with Yandex.Metrica.

.trackEvent({
	category: 'download',
	action: 'image',
	label: 'logo-image'
});
category

Required
Type: string

Event category: Typically the object that was interacted with (e.g. 'Video').

action

Required
Type: string

Event action: The type of interaction (e.g. 'play').

label

Type: string

Event label: Useful for categorizing events (e.g. 'Fall Campaign').

value

Type: integer

Event value: A numeric value associated with the event (e.g. 42).

.askPermission(message?)

Asks the user permission to opt-in to tracking and sets the optOut property in config. You can also choose to set optOut property in config manually.

askPermission screenshot

Optionally supply your own message. If message is null, default message will be used. This also resolves with the new value of optIn when the prompt is done and is useful for when you want to continue the execution while the prompt is running.

.optOut

Returns a boolean whether the user has opted out of tracking. Should preferably only be set by a user action, eg. a prompt.

More Repositories

1

yeoman

Yeoman - a set of tools for automating development workflow
10,081
star
2

generator-angular

Yeoman generator for AngularJS
JavaScript
5,729
star
3

yo

CLI tool for running Yeoman generators
JavaScript
3,835
star
4

generator-webapp

A gulp.js generator for modern webapps
JavaScript
3,770
star
5

generator-chrome-extension

Scaffold out a Chrome extension
JavaScript
2,617
star
6

update-notifier

Update notifications for your CLI app
JavaScript
1,762
star
7

generator-generator

Generate a Yeoman generator
JavaScript
1,223
star
8

grunt-usemin

[UNMAINTAINED] Replaces references to non-optimized scripts or stylesheets into a set of HTML files (or any templates/views)
JavaScript
1,219
star
9

generator

Rails-inspired generator system that provides scaffolding for your apps
TypeScript
1,204
star
10

yeoman-app

A desktop app that scaffolds projects using Yeoman
JavaScript
988
star
11

generator-webapp_DEPRECATED

Yeoman generator that scaffolds out a front-end web app
JavaScript
974
star
12

generator-polymer

Scaffold out a Polymer project
JavaScript
926
star
13

generator-mobile

Scaffold out a mobile project based on Web Starter Kit
JavaScript
918
star
14

configstore

Easily load and persist config without having to think about where and how
JavaScript
866
star
15

yeoman.io

Yeoman website
CSS
790
star
16

generator-backbone

Scaffold out a Backbone.js project
JavaScript
638
star
17

generator-node

Create a Node.js module
JavaScript
577
star
18

bower-requirejs

[DEPRECATED] Automagically wire-up installed Bower components into your RequireJS config
JavaScript
375
star
19

generator-chromeapp

Scaffold out a Chrome app
JavaScript
310
star
20

stringify-object

Stringify an object/array like JSON.stringify just without all the double-quotes
JavaScript
307
star
21

grunt-filerev

[DEPRECATED] File revving
JavaScript
260
star
22

yosay

Tell Yeoman what to say
JavaScript
206
star
23

grunt-bower-requirejs

[DEPRECATED] Grunt task - Automagically wire-up installed Bower components into your RequireJS config
JavaScript
198
star
24

generator-bootstrap

Yeoman generator for Bootstrap
JavaScript
186
star
25

generator-karma

Yeoman generator for Karma
JavaScript
172
star
26

environment

Yeoman runtime environment
JavaScript
127
star
27

generator-jquery

Generate a jQuery plugin
JavaScript
85
star
28

generator-gruntfile

Create a basic Gruntfile with yo.
JavaScript
74
star
29

doctor

Detect potential issues with users system that could prevent Yeoman from working correctly
JavaScript
61
star
30

yeoman-assert

Assert utility from yeoman
JavaScript
53
star
31

yeoman-generator-list

JavaScript
52
star
32

yeoman-test

Test utilities for Yeoman generators
TypeScript
44
star
33

generator-mocha

Yeoman generator for Mocha
JavaScript
41
star
34

generator-gruntplugin

Create a gruntplugin module with yo, including Nodeunit unit tests.
JavaScript
35
star
35

generator-jasmine

Yeoman generator for Jasmine
JavaScript
34
star
36

yeoman-character

The Yeoman character in your CLI. Like wat.
JavaScript
21
star
37

yeoman-welcome

Yeoman welcome message used in generators
JavaScript
19
star
38

media

Yeoman logo and artwork
16
star
39

generator-commonjs

Generate a CommonJS module
JavaScript
16
star
40

insight-dashboard

[DEPRECATED] Insight into Yeoman
CSS
11
star
41

Hackathons

Running a Yeoman hackathon? Start here for ideas, tips, and goals
10
star
42

html-wiring

[DEPRECATED] Set of utilities to update HTML files
JavaScript
10
star
43

cli-list

Parse comma-separated argument lists.
JavaScript
9
star
44

yeoman-remote

Fetch packages and archives from remote resources with cache support
JavaScript
8
star
45

generator-dummytest

JavaScript
3
star
46

generator-dummy

Dummy generator used for unit testing purpose
JavaScript
2
star
47

yeoman-api

TypeScript
1
star