When a user visits our site and signs up, how can I capture which website they came from?
Be it search, a PR website, etc. I don\'t care what page from our site they
request.referrer contains the URL the request came from, although it might not be sent by the client for various reasons.
The attribute takes its value from the Referer
(not a typo!) header:
referrer = request.headers.get("Referer")
or, using the Flask shortcut:
referrer = request.referrer
See this tutorial for an example.
Thanks to the accepted answer, I set up my app to capture an external referrer and store it in the session
. Then when the user signs up I save that value with the user.
from flask import request, g
from werkzeug.urls import url_parse
def referral():
url = request.referrer
# if domain is not mine, save it in the session
if url and url_parse(url).host != "example.com":
session["url"] = url
return session.get("url")
@app.before_request
def before_request():
g.user = current_user
g.url = referral()