diff --git a/bedrock/firefox/templates/firefox/welcome/page17/page17-b.html b/bedrock/firefox/templates/firefox/welcome/page17/page17-b.html
index 365d7474193..f704097af2b 100644
--- a/bedrock/firefox/templates/firefox/welcome/page17/page17-b.html
+++ b/bedrock/firefox/templates/firefox/welcome/page17/page17-b.html
@@ -23,7 +23,7 @@
{% set main_title = 'Neues Jahr, neues Smartphone? Hol dir jetzt einen richtig guten Browser. Firefox!'|safe %}
{% set main_tagline = 'Firefox blockierst du ganz einfach Tracker, verwaltest spielend deine Passwörter und passt deine Datenschutzeinstellungen mit wenigen Klicks an.' %}
{% set qr_caption = 'Um loszulegen, scanne den QR-Code' %}
- {% set qr_alt = 'QR-Code zum Scannen für Firefox' %}
+ {% set qr_campaign = 'firefox-welcome-17-de' %}
{% set android_url = play_store_url('firefox', 'firefox-welcome-17b-de') %}
{% set ios_url = app_store_url('firefox', 'firefox-welcome-17b-de') %}
{% elif LANG == "fr" %}
@@ -31,7 +31,7 @@
{% set main_title = 'Nouvelle année, nouveau téléphone ? Téléchargez l’application Firefox.'|safe %}
{% set main_tagline = 'Bloquez les traqueurs, gérez vos mots de passe et personnalisez simplement vos paramètres de confidentialité avec Firefox, où que vous soyez.' %}
{% set qr_caption = 'Scanner le code QR pour commencer' %}
- {% set qr_alt = 'Code QR à scanner pour Firefox' %}
+ {% set qr_campaign = 'firefox-welcome-17-fr' %}
{% set android_url = play_store_url('firefox', 'firefox-welcome-17b-fr') %}
{% set ios_url = app_store_url('firefox', 'firefox-welcome-17b-fr') %}
{% else %}
@@ -39,7 +39,7 @@
{% set main_title = 'New year, new phone? Get the Firefox app.'|safe %}
{% set main_tagline = 'Block trackers, manage passwords and easily customize your privacy settings with Firefox on-the-go.' %}
{% set qr_caption = 'Scan the QR code to get started' %}
- {% set qr_alt = 'QR code to scan for Firefox' %}
+ {% set qr_campaign = 'firefox-welcome-17-en' %}
{% set android_url = play_store_url('firefox', 'firefox-welcome-17b') %}
{% set ios_url = app_store_url('firefox', 'firefox-welcome-17b') %}
{% endif %}
@@ -80,7 +80,7 @@
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu-vpn/laptop.svg b/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu-vpn/laptop.svg
deleted file mode 100644
index fc6224154d7..00000000000
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu-vpn/laptop.svg
+++ /dev/null
@@ -1,40 +0,0 @@
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu-vpn/mobile.svg b/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu-vpn/mobile.svg
deleted file mode 100644
index fdc982bf87f..00000000000
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu-vpn/mobile.svg
+++ /dev/null
@@ -1,45 +0,0 @@
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu-vpn/vpn-header.svg b/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu-vpn/vpn-header.svg
deleted file mode 100644
index 914df3e2236..00000000000
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu-vpn/vpn-header.svg
+++ /dev/null
@@ -1,161 +0,0 @@
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu/qr-de.html b/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu/qr-de.html
deleted file mode 100644
index 54b10e5cdad..00000000000
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu/qr-de.html
+++ /dev/null
@@ -1,24 +0,0 @@
-{#
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at https://mozilla.org/MPL/2.0/.
-#}
-
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu/qr-fr.html b/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu/qr-fr.html
deleted file mode 100644
index 5e5f05fe3d2..00000000000
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu/qr-fr.html
+++ /dev/null
@@ -1,22 +0,0 @@
-{#
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at https://mozilla.org/MPL/2.0/.
-#}
-
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu/qr-uk.html b/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu/qr-uk.html
deleted file mode 100644
index c0ebe404479..00000000000
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115-eu/qr-uk.html
+++ /dev/null
@@ -1,22 +0,0 @@
-{#
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at https://mozilla.org/MPL/2.0/.
-#}
-
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115/addons.svg b/bedrock/firefox/templates/firefox/whatsnew/includes/fx115/addons.svg
deleted file mode 100644
index b5328c2b92f..00000000000
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/fx115/addons.svg
+++ /dev/null
@@ -1,21 +0,0 @@
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/fx118/arrow-blue.svg b/bedrock/firefox/templates/firefox/whatsnew/includes/fx118/arrow-blue.svg
deleted file mode 100644
index 528a9d10878..00000000000
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/fx118/arrow-blue.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/fx118/arrow-white.svg b/bedrock/firefox/templates/firefox/whatsnew/includes/fx118/arrow-white.svg
deleted file mode 100644
index a22c203b531..00000000000
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/fx118/arrow-white.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/fx118/translate-icon.svg b/bedrock/firefox/templates/firefox/whatsnew/includes/fx118/translate-icon.svg
deleted file mode 100644
index 9c68aeed583..00000000000
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/fx118/translate-icon.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/index-account.html b/bedrock/firefox/templates/firefox/whatsnew/index-account.html
index 80cecb6b9a0..ecce6da6942 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/index-account.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/index-account.html
@@ -66,7 +66,7 @@
diff --git a/docs/redirects.rst b/docs/redirects.rst
index 1448d582068..442ca395555 100644
--- a/docs/redirects.rst
+++ b/docs/redirects.rst
@@ -195,3 +195,30 @@ against a remote instance of the site (e.g. production) it will run a lot
quicker by running the tests in parallel. To do this, you can add ``-n auto``
to the command line. Replace ``auto`` with an integer if you want to set the
maximum number of concurrent processes.
+
+Mobile app store redirects
+--------------------------
+
+Occasionally we need to create a link that can auto redirect to either the Apple
+App Store or the Google Play Store depending on user agent. A common use case is
+to embed inside a QR Code, which people can then scan on their phone to get a
+shortcut to the app. To make this easier bedrock has a special redirect URL to
+which you can add product and campaign query strings. When someone hits the
+redirect URL, bedrock will attempt to detect their mobile platform and then auto
+redirect to the appropriate app store.
+
+The base redirect URL is ``https://www.mozilla.org/firefox/browsers/mobile/app/``,
+and to it you can add both a ``product`` and ``campaign`` query parameter. For
+example, the following URL would redirect to either Firefox on the Apple App Store
+or on the Google Play Store, with the specified campaign parameter.
+
+.. code_block::
+
+ https://www.mozilla.org/firefox/browsers/mobile/app/?product=firefox&campaign=firefox-whatsnew
+
+.. note::
+
+ The ``product`` and ``campaign`` parameters are limited to a set of strictly
+ trusted values. To add more product and campaign options, you can add those
+ values to the ``mobile_app`` helper function in
+ `firefox/redirects.py `_.
diff --git a/media/img/firefox/browsers/mobile/qr-firefox.png b/media/img/firefox/browsers/mobile/qr-firefox.png
deleted file mode 100644
index 19fa186eb68..00000000000
Binary files a/media/img/firefox/browsers/mobile/qr-firefox.png and /dev/null differ
diff --git a/media/img/firefox/browsers/mobile/qr-focus.png b/media/img/firefox/browsers/mobile/qr-focus.png
deleted file mode 100644
index d063f00cae9..00000000000
Binary files a/media/img/firefox/browsers/mobile/qr-focus.png and /dev/null differ
diff --git a/media/img/firefox/browsers/mobile/qr-klar.png b/media/img/firefox/browsers/mobile/qr-klar.png
deleted file mode 100644
index c0442c53190..00000000000
Binary files a/media/img/firefox/browsers/mobile/qr-klar.png and /dev/null differ
diff --git a/media/img/firefox/browsers/mobile/qr-variation.svg b/media/img/firefox/browsers/mobile/qr-variation.svg
deleted file mode 100644
index fdd8977304a..00000000000
--- a/media/img/firefox/browsers/mobile/qr-variation.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-android.png b/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-android.png
new file mode 100644
index 00000000000..b1b9cdf9509
Binary files /dev/null and b/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-android.png differ
diff --git a/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-focus.png b/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-focus.png
new file mode 100644
index 00000000000..437d42375d3
Binary files /dev/null and b/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-focus.png differ
diff --git a/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-get-app.png b/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-get-app.png
new file mode 100644
index 00000000000..537da8ec0f3
Binary files /dev/null and b/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-get-app.png differ
diff --git a/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-ios.png b/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-ios.png
new file mode 100644
index 00000000000..873f5c1ba2c
Binary files /dev/null and b/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-ios.png differ
diff --git a/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-klar.png b/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-klar.png
new file mode 100644
index 00000000000..8e3b5658fbe
Binary files /dev/null and b/media/img/firefox/browsers/mobile/qrcode-firefox-browsers-mobile-klar.png differ
diff --git a/media/img/firefox/welcome/qrcode-firefox-welcome-4.png b/media/img/firefox/welcome/qrcode-firefox-welcome-4.png
new file mode 100644
index 00000000000..2e4e8630036
Binary files /dev/null and b/media/img/firefox/welcome/qrcode-firefox-welcome-4.png differ
diff --git a/media/img/firefox/welcome/qrcode-firefox-welcome-6.png b/media/img/firefox/welcome/qrcode-firefox-welcome-6.png
new file mode 100644
index 00000000000..d14267f43d1
Binary files /dev/null and b/media/img/firefox/welcome/qrcode-firefox-welcome-6.png differ
diff --git a/media/img/firefox/welcome/welcome-qr-firefox.png b/media/img/firefox/welcome/welcome-qr-firefox.png
deleted file mode 100644
index 96dc9e4dfc5..00000000000
Binary files a/media/img/firefox/welcome/welcome-qr-firefox.png and /dev/null differ
diff --git a/media/img/firefox/welcome/welcome-qr-lockwise.png b/media/img/firefox/welcome/welcome-qr-lockwise.png
deleted file mode 100644
index 4c31f592da8..00000000000
Binary files a/media/img/firefox/welcome/welcome-qr-lockwise.png and /dev/null differ
diff --git a/media/img/firefox/whatsnew/qrcode-firefox-whatsnew.png b/media/img/firefox/whatsnew/qrcode-firefox-whatsnew.png
new file mode 100644
index 00000000000..c9b986ed3e9
Binary files /dev/null and b/media/img/firefox/whatsnew/qrcode-firefox-whatsnew.png differ
diff --git a/media/img/firefox/whatsnew/qrcode-fxa.png b/media/img/firefox/whatsnew/qrcode-fxa.png
deleted file mode 100644
index 18b8be3579b..00000000000
Binary files a/media/img/firefox/whatsnew/qrcode-fxa.png and /dev/null differ
diff --git a/media/img/firefox/whatsnew/qrcode.png b/media/img/firefox/whatsnew/qrcode.png
deleted file mode 100644
index bcc3165ca6f..00000000000
Binary files a/media/img/firefox/whatsnew/qrcode.png and /dev/null differ
diff --git a/media/img/firefox/whatsnew/whatsnew120-na/qr-code.svg b/media/img/firefox/whatsnew/whatsnew120-na/qr-code.svg
deleted file mode 100644
index bbd152cbef1..00000000000
--- a/media/img/firefox/whatsnew/whatsnew120-na/qr-code.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/media/img/firefox/whatsnew/whatsnew120-na/qr-novideo.png b/media/img/firefox/whatsnew/whatsnew120-na/qr-novideo.png
deleted file mode 100644
index f3228fe8dcc..00000000000
Binary files a/media/img/firefox/whatsnew/whatsnew120-na/qr-novideo.png and /dev/null differ
diff --git a/media/img/firefox/whatsnew/whatsnew120-na/qr-video.png b/media/img/firefox/whatsnew/whatsnew120-na/qr-video.png
deleted file mode 100644
index 5c5495ad443..00000000000
Binary files a/media/img/firefox/whatsnew/whatsnew120-na/qr-video.png and /dev/null differ
diff --git a/media/img/firefox/whatsnew/whatsnew122/qrcode-firefox-whatsnew-122.png b/media/img/firefox/whatsnew/whatsnew122/qrcode-firefox-whatsnew-122.png
new file mode 100644
index 00000000000..0ce1ec518be
Binary files /dev/null and b/media/img/firefox/whatsnew/whatsnew122/qrcode-firefox-whatsnew-122.png differ
diff --git a/media/img/l10n/de/firefox/welcome/page17/qr-code.png b/media/img/l10n/de/firefox/welcome/page17/qr-code.png
deleted file mode 100644
index ef6ac7a617c..00000000000
Binary files a/media/img/l10n/de/firefox/welcome/page17/qr-code.png and /dev/null differ
diff --git a/media/img/l10n/de/firefox/wnp-121/presents-and-qr.svg b/media/img/l10n/de/firefox/wnp-121/presents-and-qr.svg
deleted file mode 100644
index ebdbe1d12a8..00000000000
--- a/media/img/l10n/de/firefox/wnp-121/presents-and-qr.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/media/img/l10n/de/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg b/media/img/l10n/de/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg
new file mode 100644
index 00000000000..6f760c28d71
--- /dev/null
+++ b/media/img/l10n/de/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg
@@ -0,0 +1 @@
+
diff --git a/media/img/l10n/en-GB/firefox/wnp-121/presents-and-qr.svg b/media/img/l10n/en-GB/firefox/wnp-121/presents-and-qr.svg
deleted file mode 100644
index 65a741f6a9b..00000000000
--- a/media/img/l10n/en-GB/firefox/wnp-121/presents-and-qr.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/media/img/l10n/en-GB/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg b/media/img/l10n/en-GB/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg
new file mode 100644
index 00000000000..f8ec1029141
--- /dev/null
+++ b/media/img/l10n/en-GB/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg
@@ -0,0 +1 @@
+
diff --git a/media/img/l10n/en-US/firefox/welcome/page17/qr-code.png b/media/img/l10n/en-US/firefox/welcome/page17/qr-code.png
deleted file mode 100644
index 6f3c7961e5c..00000000000
Binary files a/media/img/l10n/en-US/firefox/welcome/page17/qr-code.png and /dev/null differ
diff --git a/media/img/l10n/en-US/firefox/wnp-121/presents-and-qr.svg b/media/img/l10n/en-US/firefox/wnp-121/presents-and-qr.svg
deleted file mode 100644
index c63eff9969d..00000000000
--- a/media/img/l10n/en-US/firefox/wnp-121/presents-and-qr.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/media/img/l10n/en-US/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg b/media/img/l10n/en-US/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg
new file mode 100644
index 00000000000..d400b8192df
--- /dev/null
+++ b/media/img/l10n/en-US/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg
@@ -0,0 +1 @@
+
diff --git a/media/img/l10n/fr/firefox/welcome/page17/qr-code.png b/media/img/l10n/fr/firefox/welcome/page17/qr-code.png
deleted file mode 100644
index 3549b248480..00000000000
Binary files a/media/img/l10n/fr/firefox/welcome/page17/qr-code.png and /dev/null differ
diff --git a/media/img/l10n/fr/firefox/wnp-121/presents-and-qr.svg b/media/img/l10n/fr/firefox/wnp-121/presents-and-qr.svg
deleted file mode 100644
index 568d4a0258b..00000000000
--- a/media/img/l10n/fr/firefox/wnp-121/presents-and-qr.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/media/img/l10n/fr/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg b/media/img/l10n/fr/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg
new file mode 100644
index 00000000000..79e8fad48fd
--- /dev/null
+++ b/media/img/l10n/fr/firefox/wnp-121/qrcode-firefox-whatsnew-121.svg
@@ -0,0 +1 @@
+
diff --git a/media/js/firefox/whatsnew/whatsnew-120-experiment-na.es6.js b/media/js/firefox/whatsnew/whatsnew-120-experiment-na.es6.js
deleted file mode 100644
index 1e690ff6490..00000000000
--- a/media/js/firefox/whatsnew/whatsnew-120-experiment-na.es6.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/.
- */
-
-import TrafficCop from '@mozmeao/trafficcop';
-import { isApprovedToRun } from '../../base/experiment-utils.es6.js';
-
-const href = window.location.href;
-
-const initTrafficCop = () => {
- if (href.indexOf('v=') !== -1) {
- if (href.indexOf('v=1') !== -1) {
- // UA
- window.dataLayer.push({
- 'data-ex-variant': 'wnp120-video',
- 'data-ex-name': 'wnp-120-experiment-na'
- });
- // GA4
- window.dataLayer.push({
- event: 'experiment_view',
- id: 'wnp-120-experiment-na',
- variant: 'wnp120-video'
- });
- } else if (href.indexOf('v=2') !== -1) {
- // UA
- window.dataLayer.push({
- 'data-ex-variant': 'wnp120-no-video',
- 'data-ex-name': 'wnp-120-experiment-na'
- });
- // GA4
- window.dataLayer.push({
- event: 'experiment_view',
- id: 'wnp-120-experiment-na',
- variant: 'wnp120-no-video'
- });
- }
- } else if (TrafficCop) {
- const murtaugh = new TrafficCop({
- id: 'wnp-120-expiriment-na',
- cookieExpires: 0,
- variations: {
- 'v=1': 0, // Fakespot video
- 'v=2': 100 // no video
- }
- });
- murtaugh.init();
- }
-};
-
-// Avoid entering automated tests into random experiments.
-if (isApprovedToRun()) {
- initTrafficCop();
-}
diff --git a/media/static-bundles.json b/media/static-bundles.json
index 7dedaaf92b0..bcc2fecc09d 100644
--- a/media/static-bundles.json
+++ b/media/static-bundles.json
@@ -1603,12 +1603,6 @@
],
"name": "firefox_whatsnew_120_na"
},
- {
- "files": [
- "js/firefox/whatsnew/whatsnew-120-experiment-na.es6.js"
- ],
- "name": "firefox_whatsnew_120_experiment_na"
- },
{
"files": [
"js/firefox/whatsnew/whatsnew-120-eu.es6.js"