Mozilla :abbr:`VPN (Virtual Private Network)` Affiliate Attribution
The affiliate attribution flow for the Mozilla :abbr:`VPN (Virtual Private Network)` landing page comprises an integration between the Commission Junction (CJ) affiliate marketing event system, bedrock, and the :abbr:`VPN (Virtual Private Network)` 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
cjevent
query parameter in the page URL. - If found, we validate the query param value and then
POST
it together with a Firefox Accountflow_id
to 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
cjevent
value and an individualflow_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
flow_id
andcjevent
value (if a new one exists) viaPUT
on 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 existingflow_id
in 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.
Note
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:
https://stage.cjms.nonprod.cloudops.mozgcp.net/__version__