This is an express middleware to enable Google Universal Analytics page tracking on your server. You can use this with server-served pages, or any custom route events.
npm install --save express-ga-middleware
To simply track page views use this -
const app = require('express')();
const expressGa = require('express-ga-middleware');
app.use(expressGa('UA-XXXXXX-X'));
app.get('/', function (req, res) { res.send('hello world') } );
app.listen(4040);
If you also want to generate events, we have a .event() middleware too.
var expGa = expressGa('UA-XXXXXX-X');
//Use globally for all pageviews
app.use(expGa);
//Use event on a path
app.use('/path/of/event', expGa.event({
category: 'cat',
action: 'act',
label: 'lab',
value: 3.5
}),
function (req, res) {
//your path middleware code here
});
The .event() function is available in the req
object too,
inside ga
object.
app.use(expressGa('UA-XXXXXX-X'));
app.get('/', (req, res) => {
req.ga.event({
category: 'cat',
action: 'act',
label: 'lab',
value: 3.5
}, (err) => {
if (err) throw err
})
res.send('Hello World')
})
The middleware automatically tracks the following
Tracked parameter | Description |
---|---|
document path | Part of the URL, after the domain name, i.e. /b/c in http://a.com/b/c |
document referer | The website from which the user came from, if any |
user agent | The device/browser/OS used to browse the page |
ip address | The user's ip Address |
All of this is fetched from the request object. Here is the code basically -
dp: req.originalUrl,
dr: req.get('Referer'),
ua: req.headers['user-agent'],
uip: req.headers['x-forwarded-for'].split(',').pop()
|| req.connection.remoteAddress
|| req.socket.remoteAddress
|| req.connection.socket.remoteAddress
This is a wrapper over the very useful node module universal-analytics
which in turn used the http://www.google-analytics.com/collect
REST API.