Skip to content

feat(settings): swap Monitor promo for VPN#20404

Open
MagentaManifold wants to merge 1 commit intomainfrom
FXA-12815
Open

feat(settings): swap Monitor promo for VPN#20404
MagentaManifold wants to merge 1 commit intomainfrom
FXA-12815

Conversation

@MagentaManifold
Copy link
Copy Markdown
Contributor

Because

  • we want to promote VPN

This pull request

  • swaps Monitor promo for VPN

Issue that this pull request solves

Closes: FXA-12815

Checklist

Put an x in the boxes that apply

  • My commit is GPG signed.
  • If applicable, I have modified or added tests which pass locally.
  • I have added necessary documentation (if appropriate).
  • I have verified that my changes render correctly in RTL (if appropriate).
  • I have manually reviewed all AI generated code.

How to review (Optional)

  • Key files/areas to focus on:
  • Suggested review order:
  • Risky or complex parts:

Screenshots (Optional)

Please attach the screenshots of the changes made in case of change in user interface.

image

Other information (Optional)

Any other information that is important to this pull request.

Copilot AI review requested due to automatic review settings April 20, 2026 16:43
@MagentaManifold MagentaManifold requested review from a team as code owners April 20, 2026 16:43
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the FxA Settings product promotion from Mozilla Monitor to Mozilla VPN, including UI assets/localization and corresponding Glean telemetry so impressions and CTA clicks are tracked under new VPN-specific event names.

Changes:

  • Replace Monitor promo UI/content with VPN promo (new SVG, new Fluent strings, updated props/wiring in Settings pages/sidebar).
  • Rename Glean metrics/events from promo_monitor_* to promo_vpn_* across the shared metrics definitions and settings event recorder.
  • Update/adjust unit tests and Storybook stories to reflect the new promo and telemetry.

Reviewed changes

Copilot reviewed 14 out of 16 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/fxa-shared/metrics/glean/web/index.ts Renames event map entries from Monitor promo to VPN promo.
packages/fxa-shared/metrics/glean/web/event.ts Minor generated import ordering change.
packages/fxa-shared/metrics/glean/web/accountPref.ts Updates generated event metric definitions for VPN promo view/submit.
packages/fxa-shared/metrics/glean/fxa-ui-metrics.yaml Renames/updates metrics definitions for VPN promo events.
packages/fxa-settings/src/lib/glean/index.ts Routes new VPN promo event names to the correct Glean metric recorders.
packages/fxa-settings/src/lib/glean/index.test.ts Updates telemetry plumbing tests for new VPN promo event names.
packages/fxa-settings/src/components/Settings/Sidebar/index.tsx Switches sidebar promo prop/wiring from Monitor to VPN.
packages/fxa-settings/src/components/Settings/ProductPromo/vpn-text-logo.svg Adds VPN logo asset used by the promo.
packages/fxa-settings/src/components/Settings/ProductPromo/monitor-text-logo.svg Removes old Monitor logo asset.
packages/fxa-settings/src/components/Settings/ProductPromo/index.tsx Replaces Monitor promo UI/logic with VPN promo content and CTA telemetry.
packages/fxa-settings/src/components/Settings/ProductPromo/index.test.tsx Updates component tests for VPN content, link, and telemetry call.
packages/fxa-settings/src/components/Settings/ProductPromo/index.stories.tsx Updates Storybook stories to use VPN promo props and labels.
packages/fxa-settings/src/components/Settings/ProductPromo/en.ftl Replaces Monitor promo strings with VPN promo strings.
packages/fxa-settings/src/components/Settings/PageSettings/index.tsx Wires VPN promo state and view telemetry into the settings page.
packages/fxa-settings/src/components/Settings/PageSettings/index.test.tsx Updates settings page tests for VPN promo view telemetry behavior.
packages/fxa-settings/src/components/App/index.test.tsx Updates mocked Glean shape to reference promoVpnView.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/fxa-settings/src/components/Settings/ProductPromo/index.tsx Outdated
@MagentaManifold MagentaManifold marked this pull request as draft April 20, 2026 17:49
@MagentaManifold MagentaManifold marked this pull request as ready for review April 21, 2026 17:57
Because:

* we wanna promote VPN

This commit:

* swaps Monitor promo for VPN

Closes FXA-12815
* @param {'moz-account'} utmSource - The source of the traffic.
* @param {'bento' | 'sidebar' | 'settings' } utmTerm - The search term or keyword associated with the campaign.
* @param {'fx-desktop' | 'fx-mobile' | 'monitor' | 'monitor-free' | 'relay' | 'vpn' | 'get-free-scan-global' | 'get-year-round-protection-us' } utmContent - The specific content or product that the link is associated with.
* @param {'permanent' | 'settings-promo' | 'connect-device'} utmCampaign - The name of the marketing campaign.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed types here since they are already in the function signature

({ name }) =>
name === MozServices.Monitor || name === MozServices.MonitorStage
const hasVpn = attachedClients.some(
({ name }) => name === MozServices.MozillaVPN
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't have a service name for VPN on stage... Should we add one? Not a big deal, except that QA won't be able to test this behavior on stage

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The service name on stage may be Firefox Private Network - Stage (from admin panel data), but I haven't tried to connect a stage client previously. Not sure if that's possible and if QA already has test steps.

}

const VPN_PROMO_URL = constructHrefWithUtm(
LINK.VPN,
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similarly we don't have a link to the stage VPN website. (This does not affect functionality or QA testing at all, since QA doesn't have to sign in from this link)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'moz-account',
'settings',
'vpn',
'promo'
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utm params differ from the ticket description because we want to be somewhat consistent with bento menu's. These are what Ross gave me.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

promo instead of settings-promo?

@vpomerleau vpomerleau self-requested a review April 21, 2026 19:05
Copy link
Copy Markdown
Contributor

@vpomerleau vpomerleau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we can set this up for QA validation on stage that would be ideal

}

const VPN_PROMO_URL = constructHrefWithUtm(
LINK.VPN,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

({ name }) =>
name === MozServices.Monitor || name === MozServices.MonitorStage
const hasVpn = attachedClients.some(
({ name }) => name === MozServices.MozillaVPN
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The service name on stage may be Firefox Private Network - Stage (from admin panel data), but I haven't tried to connect a stage client previously. Not sure if that's possible and if QA already has test steps.

'moz-account',
'settings',
'vpn',
'promo'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

promo instead of settings-promo?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants