I have an ecommerce website that works in a classical way: people sign up, buy a product with their CC.
It uses the default Django auth system for users and registration and session framework.
Now I want to implement a referral system to my system where people can invite other people by giving their referral link (ie mysite.com/referral/123123/
) and if a person signs up AND buys an item, the inviter gets 5$.
How can this the implemented ? For instance:
After the new user enters the site with the referral link, how can I keep track of this user with the referrer ? Saving his referrer to the session ?
What modification should I do to the built-in django user model to track these referrers and referred ones?
I have done this a while back and figured my notes could help someone looking for this:
Create referral urls
Whenever you issue a referral url to your user, store it in a table. In my case I had urls for different purposes ('invite your friends', 'share this item' etc.) So I stored the type of referral as well. Add an entry point to your site like http://example.com/ref/jklejis to process the incoming url. If you don't like to have an obvious 'referral' url you could use middleware to simply capture a special url parameter on any url to your site and process it that way i.e. http://example.com/items/123?r=jklejis
Track referred visitor
As soon as a visitor visits from a referral I plant a cookie and any further requests by that user are tracked by a piece of middleware that tracks the actions in a table. I then run a job to parse the 'action' table to issue credits to users. I had no real-time requirements here, but if you do then use a signal to specific actions to kick off your code.
I recently came across this project which seems to be still 'alpha' but it does something similar and could get you started: https://github.com/pinax/pinax-referrals