Mozilla VPN Affiliate Attribution¶
The affiliate attribution flow for the Mozilla VPN landing page comprises an integration between the Commission Junction (CJ) affiliate marketing event system, bedrock, and the VPN product team’s CJ micro service (CJMS). For a more detailed breakdown you can view the full flow diagram, but at a high level the logic that bedrock is responsible for is as follows:
On page load, bedrock looks for a
cjeventquery parameter in the page URL.
If found, we validate the query param value and then
POSTit together with a Firefox Account
flow_idto the CJMS.
The CJMS responds with an affiliate marketing ID and expiry time, which we then set as a first-party cookie. This cookie is used to maintain a relationship between the
cjeventvalue and an individual
flow_id, so that successful subscriptions can be properly attributed to CJ.
If a website visitor later returns to the landing page with an affiliate marketing cookie already set, then we update the
cjeventvalue (if a new one exists) via
PUTon their repeat visit. This ensures that the most recent CJ referral is attributed if/when someone decides to purchase a subscription.
The CJMS then responds with an updated ID / expiry time for the affiliate marketing cookie.
To facilitate an opt-out of attribution, we display a cookie notification with an opt-out button at the top of the landing page when the flow initiates.
If someone clicks “Reject” to opt-out, we generate a new
flow_id(invalidating the existing
flow_idin the CJMS database) and then delete the affiliate marketing cookie, replacing it with a “reject” preference cookie that will prevent attribution from initiating on repeat visits. This preference cookie will expire after 1 month.
If someone clicks “OK” or closes the opt-out notification by clicking the “X” icon, here we assume the website visitor is OK with attribution. We set an “accept” preference cookie that will prevent displaying the opt-out notification on future visits (again with a 1 month expiry) and allow attribution to flow.
To query what version of CJMS is currently deployed at the endpoint bedrock
points to, you can add
__version__ at the end of the base URL to see
the release number and commit hash. For example: