mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
Set up purchase tracking
This commit is contained in:
@@ -1,22 +1,74 @@
|
||||
var _ = require('lodash');
|
||||
var Amplitude = require('amplitude');
|
||||
var googleAnalytics = require('universal-analytics');
|
||||
|
||||
var ga;
|
||||
var amplitude;
|
||||
|
||||
var analytics = {
|
||||
init: init,
|
||||
track: track
|
||||
trackPurchase: trackPurchase
|
||||
}
|
||||
|
||||
function init(options) {
|
||||
if(!options) { throw 'No options provided' }
|
||||
|
||||
if(options.amplitudeToken) {
|
||||
amplitude = new Amplitude(options.amplitudeToken, options.uuid);
|
||||
amplitude = new Amplitude(options.amplitudeToken);
|
||||
ga = googleAnalytics(options.googleAnalytics);
|
||||
|
||||
return analytics;
|
||||
}
|
||||
|
||||
function trackPurchase(data) {
|
||||
_sendPurchaseDataToAmplitude(data);
|
||||
_sendPurchaseDataToGoogle(data);
|
||||
}
|
||||
|
||||
function _sendPurchaseDataToAmplitude(data) {
|
||||
var amplitudeData = _formatDataForAmplitude(data);
|
||||
amplitudeData.event_type = 'purchase';
|
||||
amplitudeData.revenue = data.purchaseValue;
|
||||
|
||||
amplitude.track(amplitudeData)
|
||||
}
|
||||
|
||||
function _formatDataForAmplitude(data) {
|
||||
var PROPERTIES_TO_SCRUB = ['uuid', 'user', 'purchaseValue'];
|
||||
var event_properties = _.omit(data, PROPERTIES_TO_SCRUB);
|
||||
|
||||
var ampData = {
|
||||
user_id: data.uuid,
|
||||
event_properties: event_properties
|
||||
}
|
||||
|
||||
if(data.user) {
|
||||
ampData.user_properties = _formatUserData(data.user);
|
||||
}
|
||||
|
||||
return ampData;
|
||||
}
|
||||
|
||||
function track(data) {
|
||||
if(!amplitude) throw 'Amplitude not initialized';
|
||||
amplitude.track(data);
|
||||
function _formatUserData(user) {
|
||||
var data = {};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
module.exports = analytics;
|
||||
function _sendPurchaseDataToGoogle(data) {
|
||||
var label = data.paymentMethod;
|
||||
var type = data.purchaseType;
|
||||
var price = data.purchaseValue;
|
||||
var qty = data.quantity;
|
||||
var sku = data.sku;
|
||||
var itemName = data.itemPurchased;
|
||||
var variation = type;
|
||||
if(data.gift) variation += ' - Gift';
|
||||
|
||||
ga.event('commerce', type, label, price)
|
||||
.send();
|
||||
|
||||
ga.transaction(data.uuid, price)
|
||||
.item(price, qty, sku, itemName, variation)
|
||||
.send();
|
||||
}
|
||||
|
||||
module.exports = init;
|
||||
|
||||
Reference in New Issue
Block a user