sails-affiliate-tracker
v0.0.1
Published
A simple http middleware package to track your websites affiliates visitors in a sails application
Downloads
8
Maintainers
Readme
sails-affiliate-tracker
sails-affiliate-tracker is middleware that can be used to track your application affiliate's by checking if an affiliate code is present in the URL.
It will assign a cookie '{referral:1234}' to the request, if one does not already exist, based on a user ID found from the username in the URL after a Users.find({username:username}) query.
This is quite a rigid package and will only work if you want your affiliate URL structures in the format of: http://mydomain.com/{unique-affiliate-username} or http://mydomain.com/page1/page2/etc/{unique-affiliate-username}. It will not work for query strings, although it could be modified quite easily to do so. I just do not have the need to do so.
However, it does have some nifty features for SEO, in that it will NOT perform a redirect to serve the original page. Instead it will modify the req.url to remove the affiliates username and pass that through behind the scenes - meaning your normal routes apply and controller logic for that page is executed.
One other SEO thing it will do is provide your views with a parameter for canonical links, should it be required. You use it like this in your view files:
<% if(typeof req.affiliateTracker !== 'undefined' && typeof req.affiliateTracker.canon !== 'undefined'){ %>
<link rel="canonical" href="<%= sails.getBaseurl() + req.affiliateTracker.canon %>" />
<% } %>
Installation
Via git:
$ git clone git://github.com/mrpetef10/sails-affiliate-tracker.git ~/.node_libraries/sails-affiliate-tracker
Via npm:
$ npm install sails-affiliate-tracker
Setup
There are a couple of things you must do to set this up first.
Require this in your config/http.js config file and add an entry 'affiliateTracker' after cookieParser:
middleware: {
affiliateTracker: require('sails-affiliate-tracker'),
/***************************************************************************
*
- The order in which middleware should be run for HTTP request. (the Sails *
- router is invoked by the "router" middleware below.) *
*
***************************************************************************/
order: [ ....., ....., 'cookieParser', 'affiliateTracker', ....., ....., ],
Since I am still new to working with node.js/sails.js I am unsure how to actually pass custom config vars to this middleware (I would welcome anyone to create a pull request with an update to add this in!). Due to that you need to go into the node_modules/sails-affiliate-tracker/index.js file, go to line 42 and change the regex to your specific affiliate URL format. I set mine to use:
// Will match /page1/user-mrpetef10 // or /page1/user-anotherusername var regex = /^user-[\w]{5,22}$/i;
I set it in this way so that it is easily extractable from URLs and I could still if I want to in future link to my users profile pages without concern of this breaking it.
Not the best way to creating this I know, however it is an initial version that took around 15 mins to put together.