Get referring URL for Flask request
Asked Answered
C

2

35

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.

Criner answered 18/2, 2015 at 20:26 Comment(0)
C
47

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.

Caril answered 18/2, 2015 at 20:30 Comment(0)
C
6

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()
Criner answered 1/3, 2015 at 7:21 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.