Skip to content

Commit

Permalink
Merge pull request #92 from codeforamerica/add-mixpanel
Browse files Browse the repository at this point in the history
Replace analytics with mixpanel
  • Loading branch information
tdooner committed May 29, 2020
2 parents 7719837 + 7304a16 commit ba19c41
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 36 deletions.
50 changes: 14 additions & 36 deletions analytics.js
Original file line number Diff line number Diff line change
@@ -1,43 +1,21 @@
const redis = require('redis');

const analyticsKey = function() {
const now = (new Date());
return now.toISOString().slice(0, 10);
};
const analyticsFromReq = function(req) {
const shortLink = req.params.wanted;

return [
shortLink,
`${shortLink}|referer|${req.headers['referer'] || ''}`,
`${shortLink}|user_agent|${req.headers['user-agent'] || ''}`,
`${shortLink}|utm_campaign|${req.query['utm_campaign'] || ''}`,
`${shortLink}|utm_medium|${req.query['utm_medium'] || ''}`,
`${shortLink}|utm_source|${req.query['utm_source'] || ''}`,
];
};

let client;
if (process.env.REDIS_URL) {
client = redis.createClient(process.env.REDIS_URL);
client.on('error', (err) => {
console.log("Redis Error: " + err);
});
}
const Mixpanel = require('mixpanel');

module.exports = {
trackRedirect(req) {
const key = analyticsKey();
const analytics = analyticsFromReq(req);
if (!process.env.MIXPANEL_TOKEN) {
return;
}
const mixpanel = Mixpanel.init(process.env.MIXPANEL_TOKEN);

console.log(JSON.stringify({ [key]: analytics }));
const shortLink = req.params.wanted;

if (process.env.REDIS_URL) {
try {
analytics.forEach(metric => client.hincrby(key, metric, 1));
} catch (ex) {
console.log("Analytics Error: " + ex);
}
}
mixpanel.track('redirect', {
short_link: shortLink,
referrer: req.headers['referer'] || '',
user_agent: req.headers['user-agent'] || '',
utm_campaign: req.query['utm_campaign'] || '',
utm_medium: req.query['utm_medium'] || '',
utm_source: req.query['utm_source'] || '',
});
}
};
53 changes: 53 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"consolidate": "^0.13.1",
"ejs": "^2.3.1",
"express": "^4.17.1",
"mixpanel": "^0.11.0",
"redis": "^2.8.0",
"underscore": "^1.8.3"
},
Expand Down

0 comments on commit ba19c41

Please sign in to comment.