google-analytics-electron v0.1.2
Google Analytics - Measurement Protocol API
The main purpose of this was to be used with Electron built apps.
Features
- Pageview
- Event
- Screenview
- Transaction
- Social
- Exception
- Refund
- Item
- User Timing Tracking
- Custom function for the rest (send)
Getting started
Installation
npm i google-analytics-electron
Init
Analytics(trackingID, { userAgent, debug, version })
import Analytics from 'google-analytics-electron' const analytics = new Analytics('UA-XXXXXXXX-X')
Pageview
Analytics#pageview(hostname, url, title)
return analytics.pageview('http://example.com', '/home', 'Example') .then((response) => { return response }) .catch((err) => { return err })
If you want to keep the session you need to specify the
clientID
.Event
Analytics#event(evCategory, evAction, { evLabel, evValue })
const analytics = new Analytics('UA-XXXXXXXX-X', { clientID: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' }) return analytics.event('Video', 'play', { evLabel: 'holiday', evValue: 300}) .then((response) => { return response }) .catch((err) => { return err })
Screenview
Analytics#screen(screenName)
const analytics = new Analytics('UA-XXXXXXXX-X', { appName: 'test', appVersion: '1.0.0', appID: 'com.app.test', appInstallerID:'com.app.installer' }) return analytics.screen('Test') .then((response) => { return response }) .catch((err) => { return err })
Transaction
Analytics#transaction(trnID, { trnAffil, trnRev, trnShip, trnTax, currCode } = {})
return analytics.transaction(123) .then((response) => { return response }) .catch((err) => { return err })
Social
Analytics#social(socialAction, socialNetwork, socialTarget)
return analytics.social('like', 'facebook', 'home') .then((response) => { return response }) .catch((err) => { return err })
Exception
Analytics#exception(exDesc, exFatal)
return analytics.exception('IOException', 1) .then((response) => { return response }) .catch((err) => { return err })
Refund
Analytics#refund(transactionID, evCategory = 'Ecommerce', evAction = 'Refund', nonInteraction = 1)
return analytics.refund('T123') .then((response) => { return response }) .catch((err) => { return err })
Item
Analytics#item(trnID, itemName, { itemPrice, itemQty, itemSku, itemVariation, currCode } = {})
return analytics.item('123', 'Test item') .then((response) => { return response }) .catch((err) => { return err })
User Timing Tracking
Analytics#timingTrk(timingCtg, timingVar, timingTime, { timingLbl, dns, pageDownTime, redirTime, tcpConnTime, serverResTime } = {})
return analytics.timingTrk('Category', 'jsonLoader', 123) .then((response) => { return response }) .catch((err) => { return err })
Send (for everything else for now)
Analytics#send(hitType, params)
return analytics.send('social', { sa: 'social', sn: 'facebook', st: 'home' }) .then((response) => { return response }) .catch((err) => { return err })
Tests
cross-env TRACKING_ID='UA-XXXXXXXX-X' npm test
License
MIT