Actually, referrer param is set by a browser, so it is client side related. There are most common situations when referrer can be dropped out such as browser plugin/tool for changing referrer or ssl security feature when browser is not to pass referrer etc.
More reliable way to track referrer is to construct target url the way it contains some kind of requestor id which will be processed on the end along with referrer parameter
Eg: example.com?ruid=1234