Get referring URL for Flask request
Question:
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 visited, I just want to know which marketing efforts are giving us the most signups.
I know Google Analytics can probably do this but I’d like to have something internal for reference as well.
Answers:
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()
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 visited, I just want to know which marketing efforts are giving us the most signups.
I know Google Analytics can probably do this but I’d like to have something internal for reference as well.
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()