From 242f61b81e6a2067316f86a41c589f6d0c5873ea Mon Sep 17 00:00:00 2001
From: Stephanie Hobson
Date: Mon, 29 Jul 2024 20:26:59 -0700
Subject: [PATCH] Update analytics documentation, and reflect docs in code
remove mixed data-cta and data-link
remove UA dataLayer pushes
Remove or rename unused UA data attributes
doc updates
---
.../includes/banners/fundraiser.html | 2 +-
.../includes/protocol/footer/footer.html | 72 +--
.../protocol/navigation/menus/firefox.html | 16 +-
.../protocol/navigation/menus/innovation.html | 8 +-
.../protocol/navigation/menus/products.html | 16 +-
.../protocol/navigation/menus/whoweare.html | 16 +-
.../includes/protocol/navigation/nav-cta.html | 2 +-
.../protocol/navigation/navigation.html | 2 +-
bedrock/base/templates/macros-protocol.html | 4 +-
bedrock/base/templates/macros.html | 3 +-
.../templates/product-all-unified-macros.html | 4 +-
bedrock/base/tests/test_macros.py | 6 +-
.../careers/templates/careers/benefits.html | 2 +-
bedrock/careers/templates/careers/home.html | 10 +-
.../careers/templates/careers/locations.html | 2 +-
bedrock/careers/templates/careers/teams.html | 2 +-
bedrock/contentful/api.py | 2 +-
.../templates/includes/contentful/cta.html | 10 +-
bedrock/contentful/tests/data.py | 2 +-
.../contentful/tests/test_contentful_api.py | 9 +-
.../templates/firefox/all-unified.html | 6 +-
.../firefox/browsers/browser-history.html | 6 +-
.../firefox/browsers/chromebook.html | 4 +-
.../firefox/browsers/compare/brave.html | 4 +-
.../firefox/browsers/compare/edge.html | 4 +-
.../firefox/browsers/compare/index.html | 2 +-
.../firefox/browsers/compare/opera.html | 4 +-
.../firefox/browsers/compare/safari.html | 4 +-
.../firefox/browsers/mobile/index.html | 14 +-
.../firefox/browsers/what-is-a-browser.html | 4 +-
.../challenge-the-default/landing-base.html | 6 +-
.../templates/firefox/channel/desktop.html | 4 +-
.../templates/firefox/developer/index.html | 10 +-
.../firefox/developer/whatsnew-mdnplus.html | 4 +-
.../firefox/family/includes/agreement.html | 2 +-
.../family/includes/download-firefox.html | 4 +-
.../firefox/family/includes/modules/faq.html | 32 +-
.../firefox/family/includes/resources.html | 2 +-
bedrock/firefox/templates/firefox/faq.html | 6 +-
.../firefox/features/includes/subnav.html | 8 +-
.../templates/firefox/features/index.html | 2 +-
.../templates/firefox/features/translate.html | 2 +-
.../templates/firefox/includes/macros.html | 2 +-
bedrock/firefox/templates/firefox/index.html | 20 +-
.../templates/firefox/new/basic/thanks.html | 6 +-
.../new/desktop/download-ms-store.html | 6 +-
.../firefox/new/desktop/download.html | 24 +-
.../templates/firefox/new/desktop/thanks.html | 12 +-
.../templates/firefox/nightly/firstrun.html | 6 +-
.../templates/firefox/nightly/whatsnew.html | 2 +-
.../firefox/nothing-personal/index.html | 4 +-
bedrock/firefox/templates/firefox/pocket.html | 4 +-
.../firefox/set-as-default/landing.html | 2 +-
bedrock/firefox/templates/firefox/switch.html | 6 +-
.../templates/firefox/welcome/page1.html | 2 +-
.../templates/firefox/welcome/page10.html | 2 +-
.../templates/firefox/welcome/page11.html | 2 +-
.../templates/firefox/welcome/page12.html | 2 +-
.../templates/firefox/welcome/page13.html | 2 +-
.../templates/firefox/welcome/page14.html | 2 +-
.../firefox/welcome/page15/base.html | 4 +-
.../templates/firefox/welcome/page16.html | 2 +-
.../firefox/welcome/page17/page17-a.html | 2 +-
.../firefox/welcome/page17/page17-c.html | 2 +-
.../templates/firefox/welcome/page18.html | 4 +-
.../templates/firefox/welcome/page2.html | 4 +-
.../templates/firefox/welcome/page4.html | 2 +-
.../templates/firefox/welcome/page6.html | 2 +-
.../templates/firefox/welcome/page8.html | 10 +-
.../templates/firefox/welcome/page9.de.html | 2 +-
.../templates/firefox/welcome/page9.fr.html | 2 +-
.../whatsnew/includes/mofo-donate-cta.html | 2 +-
.../firefox/whatsnew/whatsnew-fx125-eu.html | 2 +-
.../firefox/whatsnew/whatsnew-fx125-na.html | 4 +-
.../firefox/whatsnew/whatsnew-fx126-eu.html | 2 +-
.../firefox/whatsnew/whatsnew-fx126-na.html | 2 +-
.../whatsnew/whatsnew-fx126beta-de.html | 2 +-
.../whatsnew/whatsnew-fx126beta-en-CA.html | 2 +-
.../whatsnew/whatsnew-fx126beta-en-GB.html | 2 +-
.../whatsnew/whatsnew-fx126beta-en-US.html | 2 +-
.../whatsnew/whatsnew-fx126beta-fr.html | 2 +-
.../firefox/whatsnew/whatsnew-fx127-eu.html | 2 +-
.../firefox/whatsnew/whatsnew-fx127-na.html | 2 +-
.../whatsnew/whatsnew-fx128-eu-addons.html | 2 +-
.../whatsnew/whatsnew-fx128-eu-donate.html | 2 +-
.../firefox/whatsnew/whatsnew-fx128-na.html | 2 +-
.../firefox/whatsnew/whatsnew-fx129-na.html | 4 +-
.../2021/includes/modal-blog.html | 18 +-
.../foundation/annualreport/2021/index.html | 26 +-
.../mozorg/templates/mozorg/about/index.html | 2 +-
.../templates/mozorg/about/manifesto.html | 4 +-
.../templates/mozorg/home/home-new.html | 16 +-
.../mozorg/home/includes/ctd-promo-de.html | 4 +-
.../mozorg/home/includes/featured-vpn.html | 2 +-
.../home/includes/mofo-donate-promo.html | 2 +-
.../includes/mozilla-account-promo.html | 2 +-
bedrock/mozorg/tests/test_helper_misc.py | 4 +-
.../templates/newsletter/includes/form.html | 2 +-
.../newsletter/opt-out-confirmation.html | 8 +-
.../pocket/firefox/new-tab-learn-more.html | 2 +-
bedrock/pocket/templates/pocket/home.html | 2 +-
.../templates/pocket/pocket-and-firefox.html | 4 +-
.../products/templates/products/landing.html | 32 +-
.../templates/products/mozsocial/invite.html | 2 +-
.../templates/products/vpn/download.html | 22 +-
.../templates/products/vpn/features.html | 16 +-
.../products/vpn/includes/macros.html | 20 +-
.../products/vpn/includes/subnav-refresh.html | 8 +-
.../products/vpn/landing-refresh.html | 6 +-
.../templates/products/vpn/landing.html | 12 +-
.../products/vpn/pricing-refresh.html | 8 +-
.../templates/products/vpn/pricing.html | 2 +-
.../vpn/resource-center/base-article.html | 4 +-
bedrock/products/tests/test_helper_misc.py | 12 +-
docs/abtest.rst | 10 -
docs/attribution/0001-analytics.rst | 495 ++++++++----------
docs/attribution/0004-mozilla-accounts.rst | 2 +-
docs/l10n.rst | 2 +-
docs/mozilla-accounts.rst | 2 +-
media/js/base/banners/mozilla-banner.es6.js | 7 -
media/js/base/core-datalayer-init.js | 5 -
.../base/protocol/init-lang-switcher.es6.js | 6 -
media/js/base/send-to-device.es6.js | 6 -
.../all/all-downloads-unified-init.es6.js | 6 -
.../challenge-the-default.es6.js | 28 -
media/js/firefox/family/banner.es6.js | 7 -
.../firefox/new/common/thanks-direct.es6.js | 12 -
media/js/firefox/new/desktop/download.js | 6 -
media/js/firefox/set-as-default/thanks.js | 15 -
media/js/firefox/share-page.es6.js | 7 -
media/js/firefox/welcome/welcome6.es6.js | 6 -
media/js/firefox/welcome/welcome8.js | 12 -
media/js/firefox/whatsnew/whatsnew-125-eu.js | 28 -
media/js/firefox/whatsnew/whatsnew-125-na.js | 28 -
media/js/firefox/whatsnew/whatsnew-126.js | 28 -
media/js/firefox/whatsnew/whatsnew-126beta.js | 28 -
media/js/firefox/whatsnew/whatsnew-127-eu.js | 28 -
media/js/firefox/whatsnew/whatsnew-127-na.js | 28 -
media/js/newsletter/newsletter-init.es6.js | 5 -
.../vpn/landing-experiment-headlines.es6.js | 15 -
.../vpn/resource-center-article.es6.js | 6 -
.../spec/firefox/all/all-downloads-unified.js | 2 +-
142 files changed, 584 insertions(+), 990 deletions(-)
diff --git a/bedrock/base/templates/includes/banners/fundraiser.html b/bedrock/base/templates/includes/banners/fundraiser.html
index a6c8b2d65ad..e0fb8e39d33 100644
--- a/bedrock/base/templates/includes/banners/fundraiser.html
+++ b/bedrock/base/templates/includes/banners/fundraiser.html
@@ -70,6 +70,6 @@
{{ title }}
{{ tagline }}
- {{ button }}
+ {{ button }}
{% endcall %}
{% endblock %}
diff --git a/bedrock/base/templates/includes/protocol/footer/footer.html b/bedrock/base/templates/includes/protocol/footer/footer.html
index b35d9204873..8938b9b16f1 100644
--- a/bedrock/base/templates/includes/protocol/footer/footer.html
+++ b/bedrock/base/templates/includes/protocol/footer/footer.html
@@ -10,7 +10,7 @@
diff --git a/bedrock/base/templates/includes/protocol/navigation/menus/innovation.html b/bedrock/base/templates/includes/protocol/navigation/menus/innovation.html
index fd7e2e14aea..fa11b398a31 100644
--- a/bedrock/base/templates/includes/protocol/navigation/menus/innovation.html
+++ b/bedrock/base/templates/includes/protocol/navigation/menus/innovation.html
@@ -15,7 +15,7 @@
- Read more
+ Read more
@@ -266,7 +266,7 @@
- Read more about our benefits
+ Read more about our benefits
@@ -276,7 +276,7 @@
See yourself on one of our teams?
- Find your role
+ Find your role
@@ -379,7 +379,7 @@
- View all teams
+ View all teams
@@ -410,7 +410,7 @@
- Read more about the future of work at Mozilla
+ Read more about the future of work at Mozilla
diff --git a/bedrock/careers/templates/careers/locations.html b/bedrock/careers/templates/careers/locations.html
index 5c97f6df8c2..7d652139a4c 100644
--- a/bedrock/careers/templates/careers/locations.html
+++ b/bedrock/careers/templates/careers/locations.html
@@ -15,7 +15,7 @@ We’ll meet you where you are — office optional
choose where they do it.
diff --git a/bedrock/careers/templates/careers/teams.html b/bedrock/careers/templates/careers/teams.html
index cfd23a0f299..6077c2430fd 100644
--- a/bedrock/careers/templates/careers/teams.html
+++ b/bedrock/careers/templates/careers/teams.html
@@ -15,7 +15,7 @@ Meet Mozilla’s teams
builders and creators working together to keep the internet open and
accessible to all.
diff --git a/bedrock/contentful/api.py b/bedrock/contentful/api.py
index 67a9ba5903a..edddeb5463e 100644
--- a/bedrock/contentful/api.py
+++ b/bedrock/contentful/api.py
@@ -296,7 +296,7 @@ def render(self, node):
rel = ' rel="external noopener"'
# add analytics
cta_text = _make_plain_text(node)
- data_cta = f' data-cta-type="link" data-cta-text="{cta_text}"'
+ data_cta = f' data-cta-text="{cta_text}"'
return f'{self._render_content(node)} '
diff --git a/bedrock/contentful/templates/includes/contentful/cta.html b/bedrock/contentful/templates/includes/contentful/cta.html
index 5d4397e0bdb..b0703798fcb 100644
--- a/bedrock/contentful/templates/includes/contentful/cta.html
+++ b/bedrock/contentful/templates/includes/contentful/cta.html
@@ -16,7 +16,7 @@
{% elif action == 'Explore Firefox' %}
- {{ label }}
+ {{ label }}
{% elif action == 'Create a Firefox Account' %}
@@ -30,18 +30,18 @@
{% elif action == 'Get Pocket' %}
- {{ label }}
+ {{ label }}
{% elif action == 'Get Mozilla VPN' %}
- {{ label }}
+ {{ label }}
{% elif action == 'Try Relay' %}
- {{ label }}
+ {{ label }}
{% elif action == 'Get MDN Plus' %}
- {{ label }}
+ {{ label }}
{% endif %}
diff --git a/bedrock/contentful/tests/data.py b/bedrock/contentful/tests/data.py
index 23dd9e00899..91b0f4ce14f 100644
--- a/bedrock/contentful/tests/data.py
+++ b/bedrock/contentful/tests/data.py
@@ -27,7 +27,7 @@
"entries": [
{
"component": "text",
- "body": ' Virtual private networks (VPNs) and secure web proxies are solutions for better privacy and security online, but it can be confusing to figure out which one is right for you. Here\u2019s a look at how these services protect you and how to choose the best option for when you\u2019re online.
\nStop ISPs from spying on you \nWhen you use Firefox , Enhanced Tracking Protection automatically blocks many third party web trackers from following you around the web. But here\u2019s an interesting fact: your internet service provider (ISP) that you are paying for an internet connection \u2014 can still observe and track you.
\nBecause your internet traffic moves to and from your devices (computer, phone, tv, tablet) through your ISP, they can see where you go online. An ISP can see what sites you visit, how long you\u2019re on them, your location and information about your devices. An ISP may not know the specifics of what you did on those sites (like what you bought, searched for or read) thanks to encryption, but they could make inferences about you based on the sites that you visited. That personal data can be used to create detailed profiles about you. Why would ISPs do that? In short: this data is valuable.
\nISPs can use this information for their own ad targeting or for monetization opportunities that could include sharing your information with third parties interested in data mining, marketing and targeted advertising, which means less privacy and more tracking. Browsing in private mode doesn\u2019t prevent ISPs from seeing where you go online. But sending your web traffic through a web proxy or VPN can make it much harder.
\nWhen should you choose a VPN or a secure proxy? \nVPNs and secure web proxies have shared goals: they secure connections. They can, and do, mask your original IP address and protect web traffic that you send between you and your VPN or secure proxy provider. But when would you want to use a VPN vs a proxy?
\n \n\nSecure web proxy: browser-level protection \nA secure web proxy works for tasks that you might do only in your browser. This can amount to a lot of activity like shopping, paying bills, logging into social media and reading emails. A secure web proxy serves as an intermediary between your browser and the internet. Your web browsing data will pass through a secure tunnel to the internet directly from your browser, masking your IP address, so the web server you are contacting doesn\u2019t know exactly where you are in the world. And that makes you harder to track and target.
\nA proxy is useful when you\u2019re browsing the web on a public WiFi. When a proxy is enabled, it will stop eavesdroppers on the same network from spying on your browsing activity or reading your transactions on unencrypted sites. It sounds harmless, but public WiFi networks can be like a backdoor for hackers .
\nFirefox Private Network is an easy to install browser extension that provides a secure, encrypted tunnel to the web to protect your browser connection anywhere you use Firefox. It\'s fast and easy to turn on whenever you need it for extra security in your browser
\nVPNs: device-level protection \nVPNs do more than proxies in that a proxy only protects what you do in your browser, whereas a VPN protects all your traffic, including your browser, wherever you have a VPN installed and enabled. VPNs provide added security and privacy for all your online activity \u2014 an important consideration if you want to keep your activity to yourself and make it more difficult for data hungry trackers and ISPs to create a profile of you across all your devices, like your phone, computer and tablet.
\nA VPN works by creating a secure \u201ctunnel\u201d between your device and the internet at large. It protects your privacy in two key ways:
\nConcealing your IP address, protecting your identity and obscuring your location. Encrypting your traffic between you and your VPN provider so that no one on your local network can decipher or modify it. \nA VPN also offers security on open and public WiFi connections. Open WiFi can be risky, and it\u2019s impossible to be sure that someone else isn\u2019t connecting to the same network to snoop on what you\u2019re doing. Even if your traffic is encrypted, they can still see which sites you are visiting. And if you\u2019re using an app that doesn\u2019t have encryption \u2014 and even today, many don\u2019t \u2014 then they can see everything you are doing in that app. Mozilla VPN is a fast, secure, trustworthy service that can help close the security gap for you. Mozilla VPN also lets you choose your \u201clocation\u201d (where your traffic appears to be coming from) from more than 30 countries.
\nChoose a trustworthy service \nThe most important thing to consider when picking either a VPN or a proxy service is choosing a trustworthy company. Be sure you understand the terms you\u2019re agreeing to. Many claim to be great and focused on privacy, but a large number of them fall short on their promise. Not all proxy and VPN services are secure and private. Some will log your online activities so they can sell your data and information to marketing firms themselves. Other services will try to convince you to install malware on your devices.
\nWe\u2019ve done the legwork to ensure that both the Mozilla VPN and Firefox Private Network proxy extension actually respect your privacy, and it\u2019s something we\u2019re willing to stake our reputation on. Mozilla has a reputation for building products that help you keep your information safe. We follow our easy to read, no-nonsense Data Privacy Principles which allow us to focus only on the information we need to provide a service. And since we are backed by a mission-driven company, you can trust that the dollars you spend for this product will not only ensure you have top-notch security, but also are making the internet better for everyone.
\n',
+ "body": 'Virtual private networks (VPNs) and secure web proxies are solutions for better privacy and security online, but it can be confusing to figure out which one is right for you. Here\u2019s a look at how these services protect you and how to choose the best option for when you\u2019re online.
\nStop ISPs from spying on you \nWhen you use Firefox , Enhanced Tracking Protection automatically blocks many third party web trackers from following you around the web. But here\u2019s an interesting fact: your internet service provider (ISP) that you are paying for an internet connection \u2014 can still observe and track you.
\nBecause your internet traffic moves to and from your devices (computer, phone, tv, tablet) through your ISP, they can see where you go online. An ISP can see what sites you visit, how long you\u2019re on them, your location and information about your devices. An ISP may not know the specifics of what you did on those sites (like what you bought, searched for or read) thanks to encryption, but they could make inferences about you based on the sites that you visited. That personal data can be used to create detailed profiles about you. Why would ISPs do that? In short: this data is valuable.
\nISPs can use this information for their own ad targeting or for monetization opportunities that could include sharing your information with third parties interested in data mining, marketing and targeted advertising, which means less privacy and more tracking. Browsing in private mode doesn\u2019t prevent ISPs from seeing where you go online. But sending your web traffic through a web proxy or VPN can make it much harder.
\nWhen should you choose a VPN or a secure proxy? \nVPNs and secure web proxies have shared goals: they secure connections. They can, and do, mask your original IP address and protect web traffic that you send between you and your VPN or secure proxy provider. But when would you want to use a VPN vs a proxy?
\n \n\nSecure web proxy: browser-level protection \nA secure web proxy works for tasks that you might do only in your browser. This can amount to a lot of activity like shopping, paying bills, logging into social media and reading emails. A secure web proxy serves as an intermediary between your browser and the internet. Your web browsing data will pass through a secure tunnel to the internet directly from your browser, masking your IP address, so the web server you are contacting doesn\u2019t know exactly where you are in the world. And that makes you harder to track and target.
\nA proxy is useful when you\u2019re browsing the web on a public WiFi. When a proxy is enabled, it will stop eavesdroppers on the same network from spying on your browsing activity or reading your transactions on unencrypted sites. It sounds harmless, but public WiFi networks can be like a backdoor for hackers .
\nFirefox Private Network is an easy to install browser extension that provides a secure, encrypted tunnel to the web to protect your browser connection anywhere you use Firefox. It\'s fast and easy to turn on whenever you need it for extra security in your browser
\nVPNs: device-level protection \nVPNs do more than proxies in that a proxy only protects what you do in your browser, whereas a VPN protects all your traffic, including your browser, wherever you have a VPN installed and enabled. VPNs provide added security and privacy for all your online activity \u2014 an important consideration if you want to keep your activity to yourself and make it more difficult for data hungry trackers and ISPs to create a profile of you across all your devices, like your phone, computer and tablet.
\nA VPN works by creating a secure \u201ctunnel\u201d between your device and the internet at large. It protects your privacy in two key ways:
\nConcealing your IP address, protecting your identity and obscuring your location. Encrypting your traffic between you and your VPN provider so that no one on your local network can decipher or modify it. \nA VPN also offers security on open and public WiFi connections. Open WiFi can be risky, and it\u2019s impossible to be sure that someone else isn\u2019t connecting to the same network to snoop on what you\u2019re doing. Even if your traffic is encrypted, they can still see which sites you are visiting. And if you\u2019re using an app that doesn\u2019t have encryption \u2014 and even today, many don\u2019t \u2014 then they can see everything you are doing in that app. Mozilla VPN is a fast, secure, trustworthy service that can help close the security gap for you. Mozilla VPN also lets you choose your \u201clocation\u201d (where your traffic appears to be coming from) from more than 30 countries.
\nChoose a trustworthy service \nThe most important thing to consider when picking either a VPN or a proxy service is choosing a trustworthy company. Be sure you understand the terms you\u2019re agreeing to. Many claim to be great and focused on privacy, but a large number of them fall short on their promise. Not all proxy and VPN services are secure and private. Some will log your online activities so they can sell your data and information to marketing firms themselves. Other services will try to convince you to install malware on your devices.
\nWe\u2019ve done the legwork to ensure that both the Mozilla VPN and Firefox Private Network proxy extension actually respect your privacy, and it\u2019s something we\u2019re willing to stake our reputation on. Mozilla has a reputation for building products that help you keep your information safe. We follow our easy to read, no-nonsense Data Privacy Principles which allow us to focus only on the information we need to provide a service. And since we are backed by a mission-driven company, you can trust that the dollars you spend for this product will not only ensure you have top-notch security, but also are making the internet better for everyone.
\n',
"width_class": "mzp-t-content-md",
}
],
diff --git a/bedrock/contentful/tests/test_contentful_api.py b/bedrock/contentful/tests/test_contentful_api.py
index ecceabdf957..440663a8364 100644
--- a/bedrock/contentful/tests/test_contentful_api.py
+++ b/bedrock/contentful/tests/test_contentful_api.py
@@ -520,7 +520,7 @@ def test_LinkRenderer__mozilla_link(mock_get_current_request):
output = LinkRenderer({"text": TextRenderer}).render(mozilla_mock_hyperlink_node)
expected = (
'Example '
+ ' data-cta-text="Example" rel="external noopener">Example'
)
assert output == expected
@@ -534,10 +534,7 @@ def test_LinkRenderer__mozilla_link__existing_utm(mock_get_current_request):
mozilla_mock_hyperlink_node = deepcopy(mock_hyperlink_node)
mozilla_mock_hyperlink_node["data"]["uri"] = "https://mozilla.org/test/page/?utm_source=UTMTEST"
output = LinkRenderer({"text": TextRenderer}).render(mozilla_mock_hyperlink_node)
- expected = (
- 'Example '
- )
+ expected = 'Example '
assert output == expected
@@ -549,7 +546,7 @@ def test_LinkRenderer__non_mozilla():
"text": TextRenderer,
}
).render(mock_hyperlink_node)
- == 'Example '
+ == 'Example '
)
diff --git a/bedrock/firefox/templates/firefox/all-unified.html b/bedrock/firefox/templates/firefox/all-unified.html
index ab968cbfc95..dca61a4ba4f 100644
--- a/bedrock/firefox/templates/firefox/all-unified.html
+++ b/bedrock/firefox/templates/firefox/all-unified.html
@@ -151,7 +151,7 @@ {{ ftl('firefox-all-choose-which-firefox') }}
- {{ ftl('download-button-using-debian', attrs='href="https://support.mozilla.org/kb/install-firefox-linux#w_install-firefox-deb-package-for-debian-based-distributions" rel="external noopener" data-cta-type="link" data-cta-text="You can set up our APT repository instead"'|safe) }}
+ {{ ftl('download-button-using-debian', attrs='href="https://support.mozilla.org/kb/install-firefox-linux#w_install-firefox-deb-package-for-debian-based-distributions" rel="external noopener" data-cta-text="You can set up our APT repository instead"'|safe) }}
@@ -173,7 +173,7 @@
{{ ftl('firefox-all-choose-which-firefox') }}
}
) }}
- {{ ftl('firefox-all-product-send-link') }}
+ {{ ftl('firefox-all-product-send-link') }}
@@ -208,7 +208,7 @@ {{ ftl('firefox-all-choose-which-firefox') }}
}
) }}
- {{ ftl('firefox-all-product-send-link') }}
+ {{ ftl('firefox-all-product-send-link') }}
diff --git a/bedrock/firefox/templates/firefox/browsers/browser-history.html b/bedrock/firefox/templates/firefox/browsers/browser-history.html
index 0497a643058..040d2c2278d 100644
--- a/bedrock/firefox/templates/firefox/browsers/browser-history.html
+++ b/bedrock/firefox/templates/firefox/browsers/browser-history.html
@@ -26,17 +26,17 @@
diff --git a/bedrock/firefox/templates/firefox/browsers/chromebook.html b/bedrock/firefox/templates/firefox/browsers/chromebook.html
index a8730a0cd5d..7db61cbf5cd 100644
--- a/bedrock/firefox/templates/firefox/browsers/chromebook.html
+++ b/bedrock/firefox/templates/firefox/browsers/chromebook.html
@@ -55,7 +55,7 @@
@@ -115,7 +115,7 @@
{{ ftl('browsers-chromebook-is-it-hard') }}
}
) }}
-
{{ ftl('browsers-chromebook-install-firefox-as', url='href="https://support.mozilla.org/kb/run-firefox-chromeos?utm_source=www.mozilla.org-firefox-browsers-chromebook&utm_medium=referral&utm_campaign=seo" rel="external noopener" data-cta-text="Install Firefox for Chromebook" data-cta-type="link"'|safe) }}
+
{{ ftl('browsers-chromebook-install-firefox-as', url='href="https://support.mozilla.org/kb/run-firefox-chromeos?utm_source=www.mozilla.org-firefox-browsers-chromebook&utm_medium=referral&utm_campaign=seo" rel="external noopener" data-cta-text="Install Firefox for Chromebook" '|safe) }}
diff --git a/bedrock/firefox/templates/firefox/browsers/compare/brave.html b/bedrock/firefox/templates/firefox/browsers/compare/brave.html
index f61d78fa5f7..95bcc3cd958 100644
--- a/bedrock/firefox/templates/firefox/browsers/compare/brave.html
+++ b/bedrock/firefox/templates/firefox/browsers/compare/brave.html
@@ -20,8 +20,8 @@
{{ ftl('compare-shared-we-also-offer-easy') }}
- {{ ftl('compare-shared-edit-pdfs-on-the-go', pdf='href="%s" data-link-text="Edit PDFs" data-link-type="link"'|safe|format(url('firefox.features.pdf-editor'))) }}
- {{ ftl('compare-shared-translate-a-web-page', translate='href="%s" data-link-text="Translate a web page" data-link-type="link"'|safe|format(url('firefox.features.translate'))) }}
+ {{ ftl('compare-shared-edit-pdfs-on-the-go', pdf='href="%s" data-link-text="Edit PDFs"'|safe|format(url('firefox.features.pdf-editor'))) }}
+ {{ ftl('compare-shared-translate-a-web-page', translate='href="%s" data-link-text="Translate a web page"'|safe|format(url('firefox.features.translate'))) }}
{{ ftl('compare-shared-its-easy-to-switch') }}
diff --git a/bedrock/firefox/templates/firefox/browsers/compare/edge.html b/bedrock/firefox/templates/firefox/browsers/compare/edge.html
index bebb97d1e48..cb8e5ee50d2 100644
--- a/bedrock/firefox/templates/firefox/browsers/compare/edge.html
+++ b/bedrock/firefox/templates/firefox/browsers/compare/edge.html
@@ -18,8 +18,8 @@
{{ ftl('compare-shared-we-also-offer-easy') }}
- {{ ftl('compare-shared-edit-pdfs-on-the-go', pdf='href="%s" data-link-text="Edit PDFs" data-link-type="link"'|safe|format(url('firefox.features.pdf-editor'))) }}
- {{ ftl('compare-shared-translate-a-web-page', translate='href="%s" data-link-text="Translate a web page" data-link-type="link"'|safe|format(url('firefox.features.translate'))) }}
+ {{ ftl('compare-shared-edit-pdfs-on-the-go', pdf='href="%s" data-link-text="Edit PDFs"'|safe|format(url('firefox.features.pdf-editor'))) }}
+ {{ ftl('compare-shared-translate-a-web-page', translate='href="%s" data-link-text="Translate a web page"'|safe|format(url('firefox.features.translate'))) }}
{{ ftl('compare-edge-and-we-make-it-easy-for-you') }}
diff --git a/bedrock/firefox/templates/firefox/browsers/compare/index.html b/bedrock/firefox/templates/firefox/browsers/compare/index.html
index d5171262c0e..c20d416651d 100644
--- a/bedrock/firefox/templates/firefox/browsers/compare/index.html
+++ b/bedrock/firefox/templates/firefox/browsers/compare/index.html
@@ -14,7 +14,7 @@
ga_title
) -%}
-
+
{{ title }}
{{ ftl('ui-learn-more') }}
diff --git a/bedrock/firefox/templates/firefox/browsers/compare/opera.html b/bedrock/firefox/templates/firefox/browsers/compare/opera.html
index e3afc1786f7..a3a24aa7777 100644
--- a/bedrock/firefox/templates/firefox/browsers/compare/opera.html
+++ b/bedrock/firefox/templates/firefox/browsers/compare/opera.html
@@ -16,8 +16,8 @@
{{ ftl('compare-shared-firefox-also-has-built-in') }}
- {{ ftl('compare-shared-edit-pdfs-on-the-go', pdf='href="%s" data-link-text="Edit PDFs" data-link-type="link"'|safe|format(url('firefox.features.pdf-editor'))) }}
- {{ ftl('compare-shared-translate-a-web-page', translate='href="%s" data-link-text="Translate a web page" data-link-type="link"'|safe|format(url('firefox.features.translate'))) }}
+ {{ ftl('compare-shared-edit-pdfs-on-the-go', pdf='href="%s" data-link-text="Edit PDFs"'|safe|format(url('firefox.features.pdf-editor'))) }}
+ {{ ftl('compare-shared-translate-a-web-page', translate='href="%s" data-link-text="Translate a web page"'|safe|format(url('firefox.features.translate'))) }}
{{ ftl('compare-opera-firefox-offers-a-wide-range-of') }}
diff --git a/bedrock/firefox/templates/firefox/browsers/compare/safari.html b/bedrock/firefox/templates/firefox/browsers/compare/safari.html
index 22608278c39..8769058eeac 100644
--- a/bedrock/firefox/templates/firefox/browsers/compare/safari.html
+++ b/bedrock/firefox/templates/firefox/browsers/compare/safari.html
@@ -17,8 +17,8 @@
{{ ftl('compare-safari-but-firefox-also-has-built-in') }}
- {{ ftl('compare-shared-edit-pdfs-on-the-go', pdf='href="%s" data-link-text="Edit PDFs" data-link-type="link"'|safe|format(url('firefox.features.pdf-editor'))) }}
- {{ ftl('compare-shared-translate-a-web-page', translate='href="%s" data-link-text="Translate a web page" data-link-type="link"'|safe|format(url('firefox.features.translate'))) }}
+ {{ ftl('compare-shared-edit-pdfs-on-the-go', pdf='href="%s" data-link-text="Edit PDFs"'|safe|format(url('firefox.features.pdf-editor'))) }}
+ {{ ftl('compare-shared-translate-a-web-page', translate='href="%s" data-link-text="Translate a web page"'|safe|format(url('firefox.features.translate'))) }}
{{ ftl('compare-safari-firefox-offers-a-wide-range-of') }}
diff --git a/bedrock/firefox/templates/firefox/browsers/mobile/index.html b/bedrock/firefox/templates/firefox/browsers/mobile/index.html
index 23e186fdbb5..83cfb8a824d 100644
--- a/bedrock/firefox/templates/firefox/browsers/mobile/index.html
+++ b/bedrock/firefox/templates/firefox/browsers/mobile/index.html
@@ -83,14 +83,14 @@ {{ ftl('browsers-mobile-go-your-own-way') }}
'height': '263'
}
) }}
-
+
{{ ftl('browsers-mobile-infinitely-customizable-private') }}
{{ ftl('browsers-mobile-download') }}
- {{ ftl('ui-learn-more') }}
+ {{ ftl('ui-learn-more') }}
@@ -154,7 +154,7 @@
) %}
{{ ftl('browsers-mobile-see-how-firefox-for-desktop-compare-v2') }}
{{ ftl('browsers-mobile-see-how-firefox-for-desktop-strong-v2') }}
- {{ ftl('browsers-mobile-compare') }}
+ {{ ftl('browsers-mobile-compare') }}
{% endcall %}
diff --git a/bedrock/firefox/templates/firefox/browsers/what-is-a-browser.html b/bedrock/firefox/templates/firefox/browsers/what-is-a-browser.html
index cd640ba7eeb..e66f60e56bc 100644
--- a/bedrock/firefox/templates/firefox/browsers/what-is-a-browser.html
+++ b/bedrock/firefox/templates/firefox/browsers/what-is-a-browser.html
@@ -21,13 +21,13 @@
diff --git a/bedrock/firefox/templates/firefox/challenge-the-default/landing-base.html b/bedrock/firefox/templates/firefox/challenge-the-default/landing-base.html
index 389399b0afc..5ac4c942479 100644
--- a/bedrock/firefox/templates/firefox/challenge-the-default/landing-base.html
+++ b/bedrock/firefox/templates/firefox/challenge-the-default/landing-base.html
@@ -36,8 +36,8 @@
{% endblock %}
{% macro cta_group(position) -%}
- {{ cta_default }}
- {{ cta_mobile }}
+ {{ cta_default }}
+ {{ cta_mobile }}
{{ download_firefox_thanks(button_class='not-firefox', alt_copy=cta_download, download_location=position, locale_in_transition=True) }}
{%- endmacro %}
@@ -390,7 +390,7 @@ {{ cred_community_title }}
diff --git a/bedrock/firefox/templates/firefox/faq.html b/bedrock/firefox/templates/firefox/faq.html
index e1310c6eaf1..ad0c80c3c73 100644
--- a/bedrock/firefox/templates/firefox/faq.html
+++ b/bedrock/firefox/templates/firefox/faq.html
@@ -22,16 +22,16 @@
diff --git a/bedrock/firefox/templates/firefox/features/includes/subnav.html b/bedrock/firefox/templates/firefox/features/includes/subnav.html
index 42a80a0544b..143b0551a69 100644
--- a/bedrock/firefox/templates/firefox/features/includes/subnav.html
+++ b/bedrock/firefox/templates/firefox/features/includes/subnav.html
@@ -10,19 +10,19 @@
diff --git a/bedrock/firefox/templates/firefox/features/index.html b/bedrock/firefox/templates/firefox/features/index.html
index 3cf462d2488..c7362bf3487 100644
--- a/bedrock/firefox/templates/firefox/features/index.html
+++ b/bedrock/firefox/templates/firefox/features/index.html
@@ -15,7 +15,7 @@
desc
) -%}
-
+
{{ title }}
{{ desc }}
{{ ftl('ui-learn-more') }}
diff --git a/bedrock/firefox/templates/firefox/features/translate.html b/bedrock/firefox/templates/firefox/features/translate.html
index f0ef1168320..df7ff83a0ed 100644
--- a/bedrock/firefox/templates/firefox/features/translate.html
+++ b/bedrock/firefox/templates/firefox/features/translate.html
@@ -57,5 +57,5 @@ {{ ftl('features-translate-what-languages-are-currently') }}
{{ ftl('features-translate-and-more-languages-are-in') }}
{{ ftl('features-translate-firefox-speaks-your-language') }}
-{{ ftl('features-translate-the-firefox-translations-feature', download='href="%s" data-cta-type="link" data-cta-text="Get started in your preferred language"'|safe|format(url('firefox.new'))) }}
+{{ ftl('features-translate-the-firefox-translations-feature', download='href="%s" data-cta-text="Get started in your preferred language"'|safe|format(url('firefox.new'))) }}
{% endblock %}
diff --git a/bedrock/firefox/templates/firefox/includes/macros.html b/bedrock/firefox/templates/firefox/includes/macros.html
index 7b85cd98128..c1d83d66322 100644
--- a/bedrock/firefox/templates/firefox/includes/macros.html
+++ b/bedrock/firefox/templates/firefox/includes/macros.html
@@ -69,7 +69,7 @@
- {{ ftl('download-button-using-debian', attrs='href="https://support.mozilla.org/kb/install-firefox-linux#w_install-firefox-deb-package-for-debian-based-distributions" rel="external noopener" data-cta-type="link"
+
{{ ftl('download-button-using-debian', attrs='href="https://support.mozilla.org/kb/install-firefox-linux#w_install-firefox-deb-package-for-debian-based-distributions" rel="external noopener"
data-cta-text="You can set up our APT repository instead"')}}
diff --git a/bedrock/firefox/templates/firefox/index.html b/bedrock/firefox/templates/firefox/index.html
index 4d1ed68d665..36a0cae4a77 100644
--- a/bedrock/firefox/templates/firefox/index.html
+++ b/bedrock/firefox/templates/firefox/index.html
@@ -75,21 +75,21 @@ {{ ftl('firefox-browsers-seriously-private-browsing') }}
{# Old IE users need to click a download button, the JS on the thank you page doesn't get them the right download if we send them there directly #}
{# Download link should be locale neutral see issue 7982 #}
- {{ ftl('firefox-browsers-download-for-desktop') }}
+ {{ ftl('firefox-browsers-download-for-desktop') }}
- {{ ftl('ui-learn-more') }}
+ {{ ftl('ui-learn-more') }}
diff --git a/bedrock/firefox/templates/firefox/new/basic/thanks.html b/bedrock/firefox/templates/firefox/new/basic/thanks.html
index d479392fd80..38de65a8a2e 100644
--- a/bedrock/firefox/templates/firefox/new/basic/thanks.html
+++ b/bedrock/firefox/templates/firefox/new/basic/thanks.html
@@ -50,9 +50,9 @@ {{ ftl('firefox-new-download-interr
{% if ftl_has_messages('firefox-new-if-you-see-a-prompt', 'firefox-new-visit-support-for-more') %}
- {{ ftl('firefox-new-if-you-see-a-prompt', attrs='href="https://support.mozilla.org/kb/windows-10-warns-me-use-microsoft-verified-app%s" rel="external noopener" data-cta-type="link" data-cta-text="Get help with your installation"'|safe|format(referrals)) }}
+ {{ ftl('firefox-new-if-you-see-a-prompt', attrs='href="https://support.mozilla.org/kb/windows-10-warns-me-use-microsoft-verified-app%s" rel="external noopener" data-cta-text="Get help with your installation"'|safe|format(referrals)) }}
- {{ ftl('firefox-new-visit-support-for-more') }}
+ {{ ftl('firefox-new-visit-support-for-more') }}
{% endif %}
@@ -65,7 +65,7 @@ {{ ftl('firefox-new-download-interr
class="mzp-c-button mzp-t-product">{{ ftl('download-button-linux-64-v2') }}
{% set attrs = 'href="https://support.mozilla.org/kb/install-firefox-linux%s#w_install-firefox-deb-package-for-debian-based-distributions" rel="external noopener"
- data-cta-type="link" data-cta-text="You can set up our APT repository instead"'|safe|format(referrals) %}
+ data-cta-text="You can set up our APT repository instead"'|safe|format(referrals) %}
{{ ftl('download-button-using-debian', attrs=attrs) }}
{# Edge-case platform support messaging #}
diff --git a/bedrock/firefox/templates/firefox/new/desktop/download-ms-store.html b/bedrock/firefox/templates/firefox/new/desktop/download-ms-store.html
index a2005b86c96..c3f70412a7b 100644
--- a/bedrock/firefox/templates/firefox/new/desktop/download-ms-store.html
+++ b/bedrock/firefox/templates/firefox/new/desktop/download-ms-store.html
@@ -13,7 +13,7 @@
{% macro custom_nav_cta() %}
{% set ms_store_href = ms_store_url(product='firefox', campaign=ms_store_attribution_code, handler='ms-windows-store') %}
@@ -26,7 +26,7 @@
class_name='mzp-t-product mzp-t-secondary mzp-t-md',
optional_attributes= {
'data-cta-text' : 'Get Mozilla VPN',
- 'data-cta-type' : 'button',
+ 'data-cta-type' : 'vpn',
'data-cta-position' : 'navigation'
}
) }}
@@ -44,7 +44,7 @@
{{ ms_store_button(href=ms_store_href) }}
diff --git a/bedrock/firefox/templates/firefox/new/desktop/download.html b/bedrock/firefox/templates/firefox/new/desktop/download.html
index fdb3ec80fec..2fea4e344f3 100644
--- a/bedrock/firefox/templates/firefox/new/desktop/download.html
+++ b/bedrock/firefox/templates/firefox/new/desktop/download.html
@@ -77,7 +77,7 @@
{% if outdated %}
- {% set update_url = 'href="%s" data-cta-type="link" data-cta-text="Update to the latest version"'|safe|format(('https://support.mozilla.org/kb/update-firefox-latest-release' + referrals)) %}
+ {% set update_url = 'href="%s" data-cta-text="Update to the latest version"'|safe|format(('https://support.mozilla.org/kb/update-firefox-latest-release' + referrals)) %}
{% if ftl_has_messages('firefox-desktop-out-of-date') %}
- See Release Notes
+ See Release Notes
{% endif %}
@@ -275,7 +275,7 @@ {{ ftl('firefox-desktop-download-we-block-the-ad') }}
{{ ftl('firefox-desktop-download-for-everyone') }}
{{ ftl('firefox-desktop-download-available-in-over') }}
-
{{ ftl('firefox-desktop-download-review-system-req') }}
+
{{ ftl('firefox-desktop-download-review-system-req') }}
@@ -505,7 +505,7 @@ {{ ftl('firefox-desktop-download-challenging-the-stat
}
) }}
{{ ftl('firefox-desktop-download-your-privacy-comes') }}
- {% set internet_attrs = 'href="%s" data-cta-type="link" data-cta-text="Personal Data Promise"'|safe|format(url('firefox.privacy.index')) %}
+ {% set internet_attrs = 'href="%s" data-cta-text="Personal Data Promise"'|safe|format(url('firefox.privacy.index')) %}
{{ ftl('firefox-desktop-download-as-the-internet', attrs=internet_attrs) }}
@@ -525,7 +525,7 @@ {{ ftl('firefox-desktop-download-works-with-google')
{{ download_picture('contain-mr1', '131', 138) }}
{{ ftl('firefox-desktop-download-facebook-container') }}
- {% set addon_attrs = 'href="https://addons.mozilla.org/firefox/addon/facebook-container/%s" rel="external noopener" data-cta-type="link" data-cta-text="Download this browser extension"'|safe|format(referrals) %}
+ {% set addon_attrs = 'href="https://addons.mozilla.org/firefox/addon/facebook-container/%s" rel="external noopener" data-cta-text="Download this browser extension"'|safe|format(referrals) %}
{{ ftl('firefox-desktop-download-download-this-browser', attrs=addon_attrs) }}
@@ -540,14 +540,14 @@ {{ ftl('firefox-desktop-download-sync-your-devices')
{{ download_picture('screenshots-mr1', '131', 138) }}
{{ ftl('firefox-desktop-download-screenshots') }}
- {% set screenshot_attrs = 'href="https://support.mozilla.org/kb/firefox-screenshots%s" rel="external noopener" data-cta-type="link" data-cta-text="screenshot"'|safe|format(referrals) %}
+ {% set screenshot_attrs = 'href="https://support.mozilla.org/kb/firefox-screenshots%s" rel="external noopener" data-cta-text="screenshot"'|safe|format(referrals) %}
{{ ftl('firefox-desktop-download-grab-a-high', attrs=screenshot_attrs) }}
{{ download_picture('etp', '134', 138) }}
{{ ftl('firefox-desktop-download-enhanced-tracking-protection') }}
- {% set automatically_attrs = 'href="https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop%s" rel="external noopener" data-cta-type="link" data-cta-text="block many trackers"'|safe|format(referrals) %}
+ {% set automatically_attrs = 'href="https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop%s" rel="external noopener" data-cta-text="block many trackers"'|safe|format(referrals) %}
{{ ftl('firefox-desktop-download-firefox-automatically', attrs=automatically_attrs) }}
@@ -563,7 +563,7 @@ {{ ftl('firefox-desktop-download-picture-in-picture')
- {% set questions_attrs = 'href="https://support.mozilla.org/products/firefox%s&utm_content=mozilla-support" rel="external noopener" data-cta-type="link" data-cta-text="Mozilla support"'|safe|format(referrals) %}
+ {% set questions_attrs = 'href="https://support.mozilla.org/products/firefox%s&utm_content=mozilla-support" rel="external noopener" data-cta-text="Mozilla support"'|safe|format(referrals) %}
{{ ftl('firefox-desktop-download-questions', attrs=questions_attrs) }}
diff --git a/bedrock/firefox/templates/firefox/new/desktop/thanks.html b/bedrock/firefox/templates/firefox/new/desktop/thanks.html
index 07dd45f7bb4..26dcd1c4eea 100644
--- a/bedrock/firefox/templates/firefox/new/desktop/thanks.html
+++ b/bedrock/firefox/templates/firefox/new/desktop/thanks.html
@@ -56,19 +56,19 @@ {{ ftl('firefox-desktop-download-interr
{% if ftl_has_messages('firefox-desktop-download-if-you-see-a-prompt', 'firefox-desktop-download-visit-support-for-more') %}
- {{ ftl('firefox-desktop-download-if-you-see-a-prompt', attrs='href="https://support.mozilla.org/kb/windows-10-warns-me-use-microsoft-verified-app%s" rel="external noopener" data-cta-type="link" data-cta-text="Get help with your installation"'|safe|format(referrals)) }}
+ {{ ftl('firefox-desktop-download-if-you-see-a-prompt', attrs='href="https://support.mozilla.org/kb/windows-10-warns-me-use-microsoft-verified-app%s" rel="external noopener" data-cta-text="Get help with your installation"'|safe|format(referrals)) }}
- {{ ftl('firefox-desktop-download-visit-support-for-more') }}
+ {{ ftl('firefox-desktop-download-visit-support-for-more') }}
{% endif %}
- {% set support_mac_attrs = 'href="https://support.mozilla.org/kb/how-download-and-install-firefox-mac%s" rel="external noopener" data-cta-type="link" data-cta-text="Get help with your installation"'|safe|format(referrals) %}
+ {% set support_mac_attrs = 'href="https://support.mozilla.org/kb/how-download-and-install-firefox-mac%s" rel="external noopener" data-cta-text="Get help with your installation"'|safe|format(referrals) %}
{{ ftl('firefox-desktop-download-get-help', attrs=support_mac_attrs) }}
- {% set support_windows_attrs = 'href="https://support.mozilla.org/kb/how-download-and-install-firefox-windows%s" rel="external noopener" data-cta-type="link" data-cta-text="Get help with your installation"'|safe|format(referrals) %}
+ {% set support_windows_attrs = 'href="https://support.mozilla.org/kb/how-download-and-install-firefox-windows%s" rel="external noopener" data-cta-text="Get help with your installation"'|safe|format(referrals) %}
{{ ftl('firefox-desktop-download-get-help', attrs=support_windows_attrs) }}
- {% set attrs = 'href="https://support.mozilla.org/kb/install-firefox-linux%s#w_install-firefox-deb-package-for-debian-based-distributions" rel="external noopener" data-cta-type="link" data-cta-text="You can set up our APT repository instead"'|safe|format(referrals) %}
+ {% set attrs = 'href="https://support.mozilla.org/kb/install-firefox-linux%s#w_install-firefox-deb-package-for-debian-based-distributions" rel="external noopener" data-cta-text="You can set up our APT repository instead"'|safe|format(referrals) %}
{{ ftl('download-button-using-debian', attrs=attrs) }}
- {% set support_else_attrs = 'href="https://support.mozilla.org/products/firefox/install-and-update-firefox%s" rel="external noopener" data-cta-type="link" data-cta-text="Get help with your installation"'|safe|format(referrals) %}
+ {% set support_else_attrs = 'href="https://support.mozilla.org/products/firefox/install-and-update-firefox%s" rel="external noopener" data-cta-text="Get help with your installation"'|safe|format(referrals) %}
{{ ftl('firefox-desktop-download-get-help', attrs=support_else_attrs) }}
diff --git a/bedrock/firefox/templates/firefox/nightly/firstrun.html b/bedrock/firefox/templates/firefox/nightly/firstrun.html
index 48deb52625d..54cb752befe 100644
--- a/bedrock/firefox/templates/firefox/nightly/firstrun.html
+++ b/bedrock/firefox/templates/firefox/nightly/firstrun.html
@@ -61,7 +61,7 @@ {{ ftl('nightly-firstrun-choose-an-area') }}
base_el='li'
) %}
{{ ftl('nightly-firstrun-find-and-file-bugs') }}
- {{ ftl('nightly-firstrun-start-testing') }}
+ {{ ftl('nightly-firstrun-start-testing') }}
{% endcall %}
{% call picto(
@@ -78,7 +78,7 @@ {{ ftl('nightly-firstrun-choose-an-area') }}
base_el='li'
) %}
{{ ftl('nightly-firstrun-file-bugs-and-work') }}
- {{ ftl('nightly-firstrun-start-coding') }}
+ {{ ftl('nightly-firstrun-start-coding') }}
{% endcall %}
{% call picto(
@@ -95,7 +95,7 @@ {{ ftl('nightly-firstrun-choose-an-area') }}
base_el='li'
) %}
{{ ftl('nightly-firstrun-make-firefox-available') }}
- {{ ftl('nightly-firstrun-start-localizing') }}
+ {{ ftl('nightly-firstrun-start-localizing') }}
{% endcall %}
diff --git a/bedrock/firefox/templates/firefox/nightly/whatsnew.html b/bedrock/firefox/templates/firefox/nightly/whatsnew.html
index 1f4b9b871dd..bd20dbe2893 100644
--- a/bedrock/firefox/templates/firefox/nightly/whatsnew.html
+++ b/bedrock/firefox/templates/firefox/nightly/whatsnew.html
@@ -52,7 +52,7 @@ ¿Quieres ayudar en España?
¿Quieres implicarte en uno de los proyectos open source más importantes en el mundo y ayudarnos a crear una web más abierta para todos?
- ¡Entra en el chat y hablemos!
+ ¡Entra en el chat y hablemos!
diff --git a/bedrock/firefox/templates/firefox/nothing-personal/index.html b/bedrock/firefox/templates/firefox/nothing-personal/index.html
index 48de1cdf347..964b6502d83 100644
--- a/bedrock/firefox/templates/firefox/nothing-personal/index.html
+++ b/bedrock/firefox/templates/firefox/nothing-personal/index.html
@@ -29,9 +29,9 @@
Feeling browser-curious? We won’t tell. >>>>>
-
Learn more
+
Learn more
-
Set as default
+
Set as default
{{ download_firefox_thanks(alt_copy='Download Firefox', dom_id='protocol-nav-download-firefox', button_class='mzp-t-primary mzp-t-lg c-download-firefox-cta', download_location='primary') }}
diff --git a/bedrock/firefox/templates/firefox/pocket.html b/bedrock/firefox/templates/firefox/pocket.html
index 777b2ea8a91..7b992d32940 100644
--- a/bedrock/firefox/templates/firefox/pocket.html
+++ b/bedrock/firefox/templates/firefox/pocket.html
@@ -45,7 +45,7 @@
An Award-Winning App From Firefox
Over 10 million users rely on Pocket to discover and savor the best articles, news, stories and videos. And as a member of the Firefox family, privacy is paramount.
- {{ pocket_fxa_button(entrypoint=_entrypoint, button_text='Try Pocket Now', optional_parameters={'s': _source}, optional_attributes={'data-cta-text': 'Try Pocket Now', 'data-cta-type': 'activate pocket', 'data-cta-position': 'primary'}) }}
+ {{ pocket_fxa_button(entrypoint=_entrypoint, button_text='Try Pocket Now', optional_parameters={'s': _source}, optional_attributes={'data-cta-text': 'Try Pocket Now', 'data-cta-type': 'pocket', 'data-cta-position': 'primary'}) }}
{% endcall %}
{% call split(
@@ -114,7 +114,7 @@
},
optional_attributes={
'data-cta-text': 'Try Pocket Now',
- 'data-cta-type': 'activate pocket',
+ 'data-cta-type': 'pocket',
'data-cta-position': 'secondary'
}
) }}
diff --git a/bedrock/firefox/templates/firefox/set-as-default/landing.html b/bedrock/firefox/templates/firefox/set-as-default/landing.html
index 675b8471929..f2db546c2cf 100644
--- a/bedrock/firefox/templates/firefox/set-as-default/landing.html
+++ b/bedrock/firefox/templates/firefox/set-as-default/landing.html
@@ -35,7 +35,7 @@
) %}
diff --git a/bedrock/firefox/templates/firefox/switch.html b/bedrock/firefox/templates/firefox/switch.html
index c474b8b8099..3ecdef21e84 100644
--- a/bedrock/firefox/templates/firefox/switch.html
+++ b/bedrock/firefox/templates/firefox/switch.html
@@ -57,13 +57,13 @@
{{ ftl('switch-spread-the-word') }}
{% set share_url = settings.CANONICAL_URL + canonical_path %}
diff --git a/bedrock/firefox/templates/firefox/welcome/page11.html b/bedrock/firefox/templates/firefox/welcome/page11.html
index 2e883cf0f4b..e2b4b1dab45 100644
--- a/bedrock/firefox/templates/firefox/welcome/page11.html
+++ b/bedrock/firefox/templates/firefox/welcome/page11.html
@@ -74,7 +74,7 @@ {{ ftl('welcome-page11-it-protects-your-credit') }
class_name='mzp-t-product mzp-t-xl',
optional_attributes= {
'data-cta-text' : 'Get Mozilla VPN',
- 'data-cta-type' : 'button',
+ 'data-cta-type' : 'vpn',
'data-cta-position' : 'primary-cta',
}
) }}
diff --git a/bedrock/firefox/templates/firefox/welcome/page12.html b/bedrock/firefox/templates/firefox/welcome/page12.html
index c56052d97a2..bf6b70ab29a 100644
--- a/bedrock/firefox/templates/firefox/welcome/page12.html
+++ b/bedrock/firefox/templates/firefox/welcome/page12.html
@@ -65,7 +65,7 @@ Access global info & entertainment
class_name='mzp-t-product mzp-t-xl',
optional_attributes= {
'data-cta-text' : 'Get Mozilla VPN',
- 'data-cta-type' : 'button',
+ 'data-cta-type' : 'vpn',
'data-cta-position' : 'primary-cta',
}
) }}
diff --git a/bedrock/firefox/templates/firefox/welcome/page13.html b/bedrock/firefox/templates/firefox/welcome/page13.html
index 3c281f895f2..e7dee6c760d 100644
--- a/bedrock/firefox/templates/firefox/welcome/page13.html
+++ b/bedrock/firefox/templates/firefox/welcome/page13.html
@@ -76,7 +76,7 @@ {{ ftl('welcome-page13-cover-your-work') }}
class_name='mzp-t-product mzp-t-xl',
optional_attributes= {
'data-cta-text' : 'Get Mozilla VPN',
- 'data-cta-type' : 'button',
+ 'data-cta-type' : 'vpn',
'data-cta-position' : 'primary-cta',
}
) }}
diff --git a/bedrock/firefox/templates/firefox/welcome/page14.html b/bedrock/firefox/templates/firefox/welcome/page14.html
index 2ebbdbe9958..b40c0bb64d8 100644
--- a/bedrock/firefox/templates/firefox/welcome/page14.html
+++ b/bedrock/firefox/templates/firefox/welcome/page14.html
@@ -48,7 +48,7 @@ {% if show_coupon %}{{ ftl('welcome-page14-page-title'
page_anchor="#pricing",
optional_attributes= {
'data-cta-text' : 'Get Mozilla VPN',
- 'data-cta-type' : 'button',
+ 'data-cta-type' : 'vpn',
'data-cta-position' : 'primary-cta',
}
)}}
diff --git a/bedrock/firefox/templates/firefox/welcome/page15/base.html b/bedrock/firefox/templates/firefox/welcome/page15/base.html
index 3a68035e1f6..38fb123a83e 100644
--- a/bedrock/firefox/templates/firefox/welcome/page15/base.html
+++ b/bedrock/firefox/templates/firefox/welcome/page15/base.html
@@ -69,7 +69,7 @@ {{ var_2_main_title }}
class_name='mzp-t-product mzp-t-xl',
optional_attributes= {
'data-cta-text' : 'Try Mozilla VPN',
- 'data-cta-type' : 'button'
+ 'data-cta-type' : 'vpn',
}
)}}
@@ -113,7 +113,7 @@ {{ var_1_main_title }}
class_name='mzp-t-product mzp-t-xl',
optional_attributes= {
'data-cta-text' : 'Try Mozilla VPN',
- 'data-cta-type' : 'button'
+ 'data-cta-type' : 'vpn',
}
)}}
diff --git a/bedrock/firefox/templates/firefox/welcome/page16.html b/bedrock/firefox/templates/firefox/welcome/page16.html
index 5a8a4ff99f9..050857e82eb 100644
--- a/bedrock/firefox/templates/firefox/welcome/page16.html
+++ b/bedrock/firefox/templates/firefox/welcome/page16.html
@@ -92,7 +92,7 @@ This Cybersecurity Month, take 20% off your first year<
},
optional_attributes= {
'data-cta-text' : 'Get Mozilla VPN',
- 'data-cta-type' : 'button',
+ 'data-cta-type' : 'vpn',
'data-cta-position' : 'primary-cta',
}
)}}
diff --git a/bedrock/firefox/templates/firefox/welcome/page17/page17-a.html b/bedrock/firefox/templates/firefox/welcome/page17/page17-a.html
index 086238c63d2..f9fec2c133f 100644
--- a/bedrock/firefox/templates/firefox/welcome/page17/page17-a.html
+++ b/bedrock/firefox/templates/firefox/welcome/page17/page17-a.html
@@ -90,7 +90,7 @@ {{ main_title }}
class_name='mzp-t-product mzp-t-xl',
optional_attributes= {
'data-cta-text' : 'Get Mozilla VPN',
- 'data-cta-type' : 'button',
+ 'data-cta-type' : 'vpn',
'data-cta-position' : 'primary-cta',
}
)}}
diff --git a/bedrock/firefox/templates/firefox/welcome/page17/page17-c.html b/bedrock/firefox/templates/firefox/welcome/page17/page17-c.html
index 2477a4359b1..9f1944a1d68 100644
--- a/bedrock/firefox/templates/firefox/welcome/page17/page17-c.html
+++ b/bedrock/firefox/templates/firefox/welcome/page17/page17-c.html
@@ -75,7 +75,7 @@
{{ main_title }}
-
{{ main_cta }}
+
{{ main_cta }}
{{ main_tagline }}
diff --git a/bedrock/firefox/templates/firefox/welcome/page18.html b/bedrock/firefox/templates/firefox/welcome/page18.html
index d9c4eac3a74..c95b06e7429 100644
--- a/bedrock/firefox/templates/firefox/welcome/page18.html
+++ b/bedrock/firefox/templates/firefox/welcome/page18.html
@@ -51,8 +51,8 @@
Shop summer sales with confidence
New in Firefox: Review Checker analyzes
product reviews and checks them for authenticity. Click on the price tag
icon when you shop on Amazon, Best Buy, or Walmart.
- Learn more
-
Try it now
+
Learn more
+
Try it now
{{ resp_img('img/firefox/welcome/page18/fakespot-rc.png',
srcset={
diff --git a/bedrock/firefox/templates/firefox/welcome/page2.html b/bedrock/firefox/templates/firefox/welcome/page2.html
index 56ae494b812..7bc975ff3e0 100644
--- a/bedrock/firefox/templates/firefox/welcome/page2.html
+++ b/bedrock/firefox/templates/firefox/welcome/page2.html
@@ -33,7 +33,7 @@
) %}
- {{ pocket_fxa_button(entrypoint=_entrypoint, button_text=ftl('welcome-page2-activate-pocket'), optional_parameters={'s': _source, 'utm_campaign': _utm_campaign}, optional_attributes={'data-cta-text': 'Activate Pocket', 'data-cta-type': 'activate pocket', 'data-cta-position': 'primary'}) }}
+ {{ pocket_fxa_button(entrypoint=_entrypoint, button_text=ftl('welcome-page2-activate-pocket'), optional_parameters={'s': _source, 'utm_campaign': _utm_campaign}, optional_attributes={'data-cta-text': 'Activate Pocket', 'data-cta-type': 'pocket', 'data-cta-position': 'primary'}) }}
{% endcall %}
{% endblock %}
@@ -78,7 +78,7 @@
{{ ftl('welcome-page2-discover-new-stories') }}<
{% block secondary_cta %}
- {{ pocket_fxa_button(entrypoint=_entrypoint, button_text=ftl('welcome-page2-activate-pocket'), optional_parameters={'s': _source, 'utm_campaign': _utm_campaign}, optional_attributes={'data-cta-text': 'Activate Pocket', 'data-cta-type': 'activate pocket', 'data-cta-position': 'secondary'}) }}
+ {{ pocket_fxa_button(entrypoint=_entrypoint, button_text=ftl('welcome-page2-activate-pocket'), optional_parameters={'s': _source, 'utm_campaign': _utm_campaign}, optional_attributes={'data-cta-text': 'Activate Pocket', 'data-cta-type': 'pocket', 'data-cta-position': 'secondary'}) }}
{% endblock %}
diff --git a/bedrock/firefox/templates/firefox/welcome/page4.html b/bedrock/firefox/templates/firefox/welcome/page4.html
index 6d61bb9957d..7cb619d2bc5 100644
--- a/bedrock/firefox/templates/firefox/welcome/page4.html
+++ b/bedrock/firefox/templates/firefox/welcome/page4.html
@@ -109,7 +109,7 @@
{{ ftl('welcome-page4-go-faster-do-more', fallba
{% block secondary_cta %}
diff --git a/bedrock/firefox/templates/firefox/welcome/page6.html b/bedrock/firefox/templates/firefox/welcome/page6.html
index a243aeac3a2..934d5d2850f 100644
--- a/bedrock/firefox/templates/firefox/welcome/page6.html
+++ b/bedrock/firefox/templates/firefox/welcome/page6.html
@@ -36,7 +36,7 @@
diff --git a/bedrock/firefox/templates/firefox/welcome/page8.html b/bedrock/firefox/templates/firefox/welcome/page8.html
index 4757f0a0f9c..27aaa346ab0 100644
--- a/bedrock/firefox/templates/firefox/welcome/page8.html
+++ b/bedrock/firefox/templates/firefox/welcome/page8.html
@@ -30,7 +30,7 @@
heading_level=1
) %}
-
+
{{ ftl('welcome-page8-view-your-protection-report') }}
@@ -47,7 +47,7 @@
{{ ftl('welcome-page8-enhanced-tracking-protection') }}
{{ ftl('welcome-page8-automatically-block-sites') }}
-
+
{{ ftl('welcome-page8-see-whats-blocked') }}
@@ -63,12 +63,12 @@
{% if LANG == "en-US" %}
See if your personal info has been exposed in a data breach. We’ll automatically remove it from sites selling it and continuously monitor your identity for future leaks.
-
+
Check for breaches now
{% else %}
{{ ftl('welcome-page8-see-what-youve-been') }}
-
+
{{ ftl('welcome-page8-go-to-monitor') }}
{% endif %}
@@ -83,7 +83,7 @@
{{ ftl('welcome-page8-facebook-container') }}
diff --git a/bedrock/firefox/templates/firefox/welcome/page9.de.html b/bedrock/firefox/templates/firefox/welcome/page9.de.html
index 029abf0e8ba..1a5af416f6c 100644
--- a/bedrock/firefox/templates/firefox/welcome/page9.de.html
+++ b/bedrock/firefox/templates/firefox/welcome/page9.de.html
@@ -40,7 +40,7 @@
Schnell, zuverlässig und extra sicher mit 30 Tage Geld-zurück-Garantie.
- Hol dir Mozilla VPN
+ Hol dir Mozilla VPN
{% endcall %}
{% endblock %}
diff --git a/bedrock/firefox/templates/firefox/welcome/page9.fr.html b/bedrock/firefox/templates/firefox/welcome/page9.fr.html
index 5fbcd0d3611..91a282c8d53 100644
--- a/bedrock/firefox/templates/firefox/welcome/page9.fr.html
+++ b/bedrock/firefox/templates/firefox/welcome/page9.fr.html
@@ -40,7 +40,7 @@
Rapide, fiable et ultra sécurisé avec une garantie de remboursement de 30 jours.
- Installer Mozilla VPN
+ Installer Mozilla VPN
{% endcall %}
{% endblock %}
diff --git a/bedrock/firefox/templates/firefox/whatsnew/includes/mofo-donate-cta.html b/bedrock/firefox/templates/firefox/whatsnew/includes/mofo-donate-cta.html
index eff8f559947..678a328fb9c 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/includes/mofo-donate-cta.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/includes/mofo-donate-cta.html
@@ -19,7 +19,7 @@
{% endif %}
-
diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-CA.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-CA.html
index 931b44a3b29..ae298f457b3 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-CA.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-CA.html
@@ -39,7 +39,7 @@
Say ‘Bonjour ’ to Firefox translations
Click the Translate this page icon in Firefox’s address bar and enjoy content across the web.
-
Try it now
+
Try it now
diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-GB.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-GB.html
index c1d0acccea1..586ec55a4a5 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-GB.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-GB.html
@@ -39,7 +39,7 @@ Say ‘Bonjour ’ to Firefox translations
Click the Translate this page in Firefox’s address bar and enjoy content from around the world.
-
Try it now
+
Try it now
diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-US.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-US.html
index 3da347697c9..b1472c3c5b0 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-US.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-en-US.html
@@ -39,7 +39,7 @@ Say ‘Hola ’ to Firefox translations
Click the Translate this page icon in Firefox’s address bar and enjoy content across the web.
-
Try it now
+
Try it now
diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-fr.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-fr.html
index aab4530a45d..15bac95fdf3 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-fr.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx126beta-fr.html
@@ -39,7 +39,7 @@ Dites ‘Hello ’ à Firefox translations Cliquez sur l'icône Traduire cette page dans la barre d'adresse de Firefox et profitez de plus de contenu sur le Web.
- Essayer maintenant
+ Essayer maintenant
diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx127-eu.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx127-eu.html
index b4a6a617405..e74481675db 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx127-eu.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx127-eu.html
@@ -95,7 +95,7 @@ {{ main_title }}
{{ tagline_one }}
{{ tagline_two }}
- {{ cta }}
+ {{ cta }}
diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx127-na.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx127-na.html
index 89635ad48de..a3409519aa3 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx127-na.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx127-na.html
@@ -40,7 +40,7 @@
Join our community
-
+
Connect with Mozilla
diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-eu-addons.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-eu-addons.html
index 2f3f96fd61f..b9de693b8e2 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-eu-addons.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-eu-addons.html
@@ -92,7 +92,7 @@ {{ main_title }}
-
+
{{ page_cta }}
diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-eu-donate.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-eu-donate.html
index 9065373801c..4a6885327af 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-eu-donate.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-eu-donate.html
@@ -99,7 +99,7 @@ {{ main_title }}
-
+
{{ page_cta }}
❤️
diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-na.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-na.html
index 2d3e6d1b73f..f032eb586fe 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-na.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx128-na.html
@@ -30,7 +30,7 @@
World-class multitasking
Picture-In-Picture lets you watch every cartwheel and handspring without putting your life on pause. Just click the Picture-in-Picture button to pop out any video.
-
+
Learn more
diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx129-na.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx129-na.html
index d01dc1aab75..26cbb26fc10 100644
--- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx129-na.html
+++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx129-na.html
@@ -31,13 +31,13 @@ Webpages, simplified.
-
+
Always use Firefox
-
+
Learn more
diff --git a/bedrock/foundation/templates/foundation/annualreport/2021/includes/modal-blog.html b/bedrock/foundation/templates/foundation/annualreport/2021/includes/modal-blog.html
index 3645eb44e5b..6b054a0cad1 100644
--- a/bedrock/foundation/templates/foundation/annualreport/2021/includes/modal-blog.html
+++ b/bedrock/foundation/templates/foundation/annualreport/2021/includes/modal-blog.html
@@ -28,7 +28,7 @@ The fight continues in Washington
platforms.
-
+
Learn more
@@ -47,7 +47,7 @@ Leading by Example
the targeting behind every paid ad we place.
-
+
Learn more
@@ -67,7 +67,7 @@ Crowdsourcing research into YouTube’s AI
accountable.
-
+
Learn more
@@ -87,7 +87,7 @@ Sounding the alarm on period trackers
news media.
-
+
Learn more
@@ -107,7 +107,7 @@ Total Cookie Protection
Firefox is our next step towards creating a better internet where privacy is the default.
-
+
Learn more
@@ -127,7 +127,7 @@ Battling misinformation in Kenya
to confront it.
-
+
Learn more
@@ -148,7 +148,7 @@ Making voice technology for everyone
voice clips and newly added languages from Central Kurdish to Norwegian Nyorsk.
-
+
Learn more
@@ -168,7 +168,7 @@ Keeping your online lives private
your browsing activity and your multiple online lives between tabs.
-
+
Learn more
@@ -188,7 +188,7 @@ Listening to the future of AI
make online life healthier for everyone.
-
+
Learn more
diff --git a/bedrock/foundation/templates/foundation/annualreport/2021/index.html b/bedrock/foundation/templates/foundation/annualreport/2021/index.html
index 6cafef4e65d..f19dedb8e41 100644
--- a/bedrock/foundation/templates/foundation/annualreport/2021/index.html
+++ b/bedrock/foundation/templates/foundation/annualreport/2021/index.html
@@ -114,13 +114,13 @@ Mozilla’s next chapter: A word from
2021 Audited Financial Statement
-
+
Download PDF
2021 Form 990
-
+
Download PDF
@@ -146,7 +146,7 @@ Building a different kind of tech industry,
-
+
{% call split(
block_class='mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
@@ -231,7 +231,7 @@
We’ve added nearly 200 of these people in the last two years. And we’re looking for more.
-
+
{% call split(
block_class='mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
@@ -386,7 +386,7 @@
-
+
{% call split(
block_class='mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
@@ -410,7 +410,7 @@ The fight continues in Washington
{% endcall %}
-
+
{% call split(
block_class='mzp-l-split-reversed mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
@@ -434,7 +434,7 @@ Leading by example
{% endcall %}
-
+
{% call split(
block_class='mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
@@ -458,7 +458,7 @@ Crowdsourcing research into YouTube’s AI
{% endcall %}
-
+
{% call split(
block_class='mzp-l-split-reversed mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
@@ -482,7 +482,7 @@ Sounding the alarm on period trackers
{% endcall %}
-
+
{% call split(
block_class='mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
@@ -506,7 +506,7 @@ Rolling out cookie protection for all
{% endcall %}
-
+
{% call split(
block_class='mzp-l-split-reversed mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
@@ -530,7 +530,7 @@ Battling misinformation in Kenya
{% endcall %}
-
+
{% call split(
block_class='mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
@@ -554,7 +554,7 @@ Making voice technology for everyone
{% endcall %}
-
+
{% call split(
block_class='mzp-l-split-reversed mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
@@ -578,7 +578,7 @@ Keeping your online lives private
{% endcall %}
-
+
{% call split(
block_class='mzp-l-split-body-narrow mzp-t-split-nospace',
image=resp_img(
diff --git a/bedrock/mozorg/templates/mozorg/about/index.html b/bedrock/mozorg/templates/mozorg/about/index.html
index fa5cae42d56..324d7babf53 100644
--- a/bedrock/mozorg/templates/mozorg/about/index.html
+++ b/bedrock/mozorg/templates/mozorg/about/index.html
@@ -30,7 +30,7 @@
{{ ftl('about-mozilla-makes-browsers-apps') }}
{{ ftl('about-our-mission-keep-the-internet') }}
-
+
{{ ftl('about-read-our-mission') }}
diff --git a/bedrock/mozorg/templates/mozorg/about/manifesto.html b/bedrock/mozorg/templates/mozorg/about/manifesto.html
index 1b1f7a0531d..d0cc8768b33 100644
--- a/bedrock/mozorg/templates/mozorg/about/manifesto.html
+++ b/bedrock/mozorg/templates/mozorg/about/manifesto.html
@@ -77,7 +77,7 @@ {{ ftl('manifesto-pledge-for-a-healthy-internet')
include_cta=True,
) %}
-
+
{{ ftl('manifesto-share-on-x') }}
@@ -131,7 +131,7 @@ {{ principle_number_10 }}
diff --git a/bedrock/mozorg/templates/mozorg/home/home-new.html b/bedrock/mozorg/templates/mozorg/home/home-new.html
index eae057eeb3c..a52db2e450f 100644
--- a/bedrock/mozorg/templates/mozorg/home/home-new.html
+++ b/bedrock/mozorg/templates/mozorg/home/home-new.html
@@ -140,7 +140,7 @@ {{ ftl('home-mozilla-makes-privacy') }}
),
body=True,
) %}
- {{ ftl('home-cta-get-firefox') }}
+
{{ ftl('home-cta-get-firefox') }}
{% endcall %}
@@ -158,7 +158,7 @@
{{ ftl('home-mozilla-makes-privacy') }}
),
body=True,
) %}
-
{{ ftl('home-cta-get-pocket') }}
+
{{ ftl('home-cta-get-pocket') }}
{% endcall %}
@@ -176,7 +176,7 @@
{{ ftl('home-mozilla-makes-privacy') }}
),
body=True,
) %}
-
{{ ftl('home-cta-get-fakespot') }}
+
{{ ftl('home-cta-get-fakespot') }}
{% endcall %}
@@ -194,7 +194,7 @@
{{ ftl('home-mozilla-makes-privacy') }}
),
body=True,
) %}
-
{{ ftl('home-cta-get-relay') }}
+
{{ ftl('home-cta-get-relay') }}
{% endcall %}
@@ -212,7 +212,7 @@
{{ ftl('home-mozilla-makes-privacy') }}
),
body=True,
) %}
-
{{ ftl('home-cta-get-vpn') }}
+
{{ ftl('home-cta-get-vpn') }}
{% endcall %}
@@ -230,7 +230,7 @@
{{ ftl('home-mozilla-makes-privacy') }}
),
body=True,
) %}
-
{{ ftl('home-cta-get-monitor')}}
+
{{ ftl('home-cta-get-monitor')}}
{% endcall %}
@@ -271,8 +271,8 @@
{{ ftl('home-join-us-in-shaping') }}
{% endcall %}
{% endif %}
- {% set moz_ventures = 'href="%s" data-cta-type="link" data-cta-text="Mozilla Ventures"'|safe|format(('https://mozilla.vc/'+utm_params)) %}
- {% set moz_ai = 'href="%s" data-cta-type="link" data-cta-text="Mozilla AI"'|safe|format(('https://mozilla.ai/'+utm_params)) %}
+ {% set moz_ventures = 'href="%s" data-cta-text="Mozilla Ventures"'|safe|format(('https://mozilla.vc/'+utm_params)) %}
+ {% set moz_ai = 'href="%s" data-cta-text="Mozilla AI"'|safe|format(('https://mozilla.ai/'+utm_params)) %}
{% call split(
diff --git a/bedrock/mozorg/templates/mozorg/home/includes/ctd-promo-de.html b/bedrock/mozorg/templates/mozorg/home/includes/ctd-promo-de.html
index 4f73dc161f4..a37f157e3a3 100644
--- a/bedrock/mozorg/templates/mozorg/home/includes/ctd-promo-de.html
+++ b/bedrock/mozorg/templates/mozorg/home/includes/ctd-promo-de.html
@@ -35,7 +35,7 @@
Dein Browser ist soooooo Standard
(Wir haben auch ein paar wirklich gute Argumente.)
-
Ich schau mir Firefox mal an
+
Ich schau mir Firefox mal an
{% endcall %}
@@ -69,7 +69,7 @@ Und was machen wir jetzt?
Wir könnten dich nach deinem Lieblingsdino fragen, ein kleines Gedicht für dich schreiben, oder dir unseren Mobile Browser zeigen.
- Zeigt mir den Mobile Browser
+ Zeigt mir den Mobile Browser
{% endcall %}
diff --git a/bedrock/mozorg/templates/mozorg/home/includes/featured-vpn.html b/bedrock/mozorg/templates/mozorg/home/includes/featured-vpn.html
index d9e2d2e0494..ebd9651a84d 100644
--- a/bedrock/mozorg/templates/mozorg/home/includes/featured-vpn.html
+++ b/bedrock/mozorg/templates/mozorg/home/includes/featured-vpn.html
@@ -11,6 +11,6 @@
{{ ftl('home-featured-product') }}
{{ ftl('home-feature-blur-your-location') }}
- {{ ftl('home-cta-get-vpn') }}
+ {{ ftl('home-cta-get-vpn') }}
diff --git a/bedrock/mozorg/templates/mozorg/home/includes/mofo-donate-promo.html b/bedrock/mozorg/templates/mozorg/home/includes/mofo-donate-promo.html
index f85d586105c..ced9237d133 100644
--- a/bedrock/mozorg/templates/mozorg/home/includes/mofo-donate-promo.html
+++ b/bedrock/mozorg/templates/mozorg/home/includes/mofo-donate-promo.html
@@ -11,6 +11,6 @@
{{ ftl('home-mofo-build-our-movement') }}
{{ ftl('home-mofo-donate-to-mofo-today') }}
- {{ ftl('home-mofo-donate') }}
+ {{ ftl('home-mofo-donate') }}
diff --git a/bedrock/mozorg/templates/mozorg/includes/mozilla-account-promo.html b/bedrock/mozorg/templates/mozorg/includes/mozilla-account-promo.html
index 764bd2de417..d33d93d1f4a 100644
--- a/bedrock/mozorg/templates/mozorg/includes/mozilla-account-promo.html
+++ b/bedrock/mozorg/templates/mozorg/includes/mozilla-account-promo.html
@@ -47,7 +47,7 @@ {{ ftl('moz-account-promo-title', class=gradient_class) }}
}}
{% set fxa_link = fxa_link_fragment(entrypoint=_entrypoint, action='signin') %}
- {% set sign_in_url = fxa_link ~ ' class="js-fxa-cta-link js-fxa-product-button" data-cta-type="link" data-cta-text="Accounts Learn More"'|safe %}
+ {% set sign_in_url = fxa_link ~ ' class="js-fxa-cta-link js-fxa-product-button" data-cta-text="Accounts Learn More"'|safe %}
{% set learn_more_url = 'href="'|safe ~ url('mozorg.account') ~ '"'|safe %}
{{ ftl('moz-account-already-have-v2', fallback='moz-account-already-have', sign_in_url=sign_in_url, learn_more_url=learn_more_url) }}
diff --git a/bedrock/mozorg/tests/test_helper_misc.py b/bedrock/mozorg/tests/test_helper_misc.py
index e0029f674af..f7f438057ed 100644
--- a/bedrock/mozorg/tests/test_helper_misc.py
+++ b/bedrock/mozorg/tests/test_helper_misc.py
@@ -1012,13 +1012,13 @@ def test_pocket_fxa_button(self):
is_button_class=True,
include_metrics=True,
optional_parameters={"s": "ffpocket", "foo": "bar"},
- optional_attributes={"data-cta-text": "Try Pocket Now", "data-cta-type": "activate pocket", "data-cta-position": "primary"},
+ optional_attributes={"data-cta-text": "Try Pocket Now", "data-cta-type": "pocket", "data-cta-position": "primary"},
)
expected = (
' Try Pocket Now '
+ 'data-cta-text="Try Pocket Now" data-cta-type="pocket" data-cta-position="primary">Try Pocket Now'
)
self.assertEqual(markup, expected)
diff --git a/bedrock/newsletter/templates/newsletter/includes/form.html b/bedrock/newsletter/templates/newsletter/includes/form.html
index 3bc366f94a2..fa5b33881f4 100644
--- a/bedrock/newsletter/templates/newsletter/includes/form.html
+++ b/bedrock/newsletter/templates/newsletter/includes/form.html
@@ -99,7 +99,7 @@ {{ subtitle }}
-
+
{% if submit_text %}
{{ submit_text }}
{% else %}
diff --git a/bedrock/newsletter/templates/newsletter/opt-out-confirmation.html b/bedrock/newsletter/templates/newsletter/opt-out-confirmation.html
index 841924d8b80..e2a3c7750aa 100644
--- a/bedrock/newsletter/templates/newsletter/opt-out-confirmation.html
+++ b/bedrock/newsletter/templates/newsletter/opt-out-confirmation.html
@@ -63,10 +63,10 @@ {{ ftl('opt-out-confirmation-prefer-to-get') }}
{#-- /.content --#}
diff --git a/bedrock/pocket/templates/pocket/firefox/new-tab-learn-more.html b/bedrock/pocket/templates/pocket/firefox/new-tab-learn-more.html
index 9d2d9de4860..c8bac3c98af 100644
--- a/bedrock/pocket/templates/pocket/firefox/new-tab-learn-more.html
+++ b/bedrock/pocket/templates/pocket/firefox/new-tab-learn-more.html
@@ -36,7 +36,7 @@
{{ ftl('pocket-new-tab-pocket-for-firefox') }}
{{ ftl('pocket-new-tab-included-inside') }}
- {{ pocket_fxa_button(entrypoint='pocket', class_name='new-tab-pocket-cta', button_text=' '|safe + ftl('pocket-new-tab-activate-pocket'), optional_parameters={'s': 'fflearnmore', 'utm_campaign': 'landing-page', 'utm_content': 'page-button'}, optional_attributes={'data-cta-text': 'Activate Pocket', 'data-cta-type': 'activate pocket', 'data-cta-position': 'primary'}) }}
+ {{ pocket_fxa_button(entrypoint='pocket', class_name='new-tab-pocket-cta', button_text=' '|safe + ftl('pocket-new-tab-activate-pocket'), optional_parameters={'s': 'fflearnmore', 'utm_campaign': 'landing-page', 'utm_content': 'page-button'}, optional_attributes={'data-cta-text': 'Activate Pocket', 'data-cta-type': 'pocket', 'data-cta-position': 'primary'}) }}
{{ ftl('pocket-new-tab-more-ways-to') }}
{% endcall %}
diff --git a/bedrock/pocket/templates/pocket/home.html b/bedrock/pocket/templates/pocket/home.html
index 843ef749a91..5f9bdbe37a7 100644
--- a/bedrock/pocket/templates/pocket/home.html
+++ b/bedrock/pocket/templates/pocket/home.html
@@ -47,7 +47,7 @@
{% endif %}
diff --git a/bedrock/pocket/templates/pocket/pocket-and-firefox.html b/bedrock/pocket/templates/pocket/pocket-and-firefox.html
index c55d9253ff9..0eefcfa8289 100644
--- a/bedrock/pocket/templates/pocket/pocket-and-firefox.html
+++ b/bedrock/pocket/templates/pocket/pocket-and-firefox.html
@@ -31,7 +31,7 @@
{{ ftl('pocket-features-build-your-personal') }}
{{ ftl('pocket-features-included-inside') }}
- {{ pocket_fxa_button(entrypoint='pocket', class_name='new-tab-pocket-cta', button_text='
'|safe + ftl('pocket-features-activate-pocket'), optional_parameters={'s': 'fflearnmore', 'utm_campaign': 'landing-page', 'utm_content': 'page-button'}, optional_attributes={'data-cta-text': 'Activate Pocket', 'data-cta-type': 'activate pocket', 'data-cta-position': 'primary'}) }}
+ {{ pocket_fxa_button(entrypoint='pocket', class_name='new-tab-pocket-cta', button_text='
'|safe + ftl('pocket-features-activate-pocket'), optional_parameters={'s': 'fflearnmore', 'utm_campaign': 'landing-page', 'utm_content': 'page-button'}, optional_attributes={'data-cta-text': 'Activate Pocket', 'data-cta-type': 'pocket', 'data-cta-position': 'primary'}) }}
{{ ftl('pocket-features-more-ways-to') }}
{% endcall %}
@@ -100,7 +100,7 @@
- {{ pocket_fxa_button(entrypoint='pocket', class_name='new-tab-pocket-cta', button_text='
'|safe + ftl('pocket-features-activate-pocket'), optional_parameters={'s': 'fflearnmore', 'utm_campaign': 'landing-page', 'utm_content': 'page-button'}, optional_attributes={'data-cta-text': 'Activate Pocket', 'data-cta-type': 'activate pocket', 'data-cta-position': 'primary'}) }}
+ {{ pocket_fxa_button(entrypoint='pocket', class_name='new-tab-pocket-cta', button_text='
'|safe + ftl('pocket-features-activate-pocket'), optional_parameters={'s': 'fflearnmore', 'utm_campaign': 'landing-page', 'utm_content': 'page-button'}, optional_attributes={'data-cta-text': 'Activate Pocket', 'data-cta-type': 'pocket', 'data-cta-position': 'primary'}) }}
{{ ftl('pocket-features-more-ways-to') }}
diff --git a/bedrock/products/templates/products/landing.html b/bedrock/products/templates/products/landing.html
index d9544272019..09533b12331 100644
--- a/bedrock/products/templates/products/landing.html
+++ b/bedrock/products/templates/products/landing.html
@@ -63,7 +63,7 @@
{{ ftl('firefox-products-products') }}
}
),
) %}
-
{{ ftl('firefox-products-firefox') }}
+
{{ ftl('firefox-products-firefox') }}
{{ ftl('firefox-products-get-the-browser-that-blocks') }}
{% set alt_copy = ftl('download-button-download-firefox') + " " + icon_download|safe %}
{{ download_firefox_thanks(alt_copy=alt_copy, button_class='mzp-t-secondary mzp-t-lg') }}
@@ -84,7 +84,7 @@
{{ ftl('firefox-products-firefox-focus') }}
+
{{ ftl('firefox-products-firefox-focus') }}
{{ ftl('firefox-products-your-dedicated-privacy') }}
{{ google_play_button(href=fc_android_url, id='playStoreLink-focus') }}
@@ -105,9 +105,9 @@
{{ ftl('firefox-products-relay') }}
+
{{ ftl('firefox-products-relay') }}
{{ ftl('firefox-products-protect-your-real') }}
-
{{ ftl('firefox-products-get-relay') }} {{ icon_external|safe }}
+
{{ ftl('firefox-products-get-relay') }} {{ icon_external|safe }}
{% endcall %}
@@ -123,9 +123,9 @@
{{ ftl('firefox-products-mozilla-monitor') }}
+
{{ ftl('firefox-products-mozilla-monitor') }}
{% if country_code == 'US' %}See if you’ve been part of a data breach. If so, let us automatically get your private info back for you and continually monitor your identity for new leaks.{% else %}{{ ftl('firefox-products-see-if-your-personal-information') }}{% endif %}
-
{% if LANG == 'en-US' %}Check for breaches now{% else %}{{ ftl('firefox-products-check-for-breaches') }}{% endif %} {{ icon_external|safe }}
+
{% if LANG == 'en-US' %}Check for breaches now{% else %}{{ ftl('firefox-products-check-for-breaches') }}{% endif %} {{ icon_external|safe }}
{% endcall %}
@@ -141,9 +141,9 @@
{{ ftl('firefox-products-mozilla-vpn') }}
+
{{ ftl('firefox-products-mozilla-vpn') }}
{{ ftl('firefox-products-surf-stream-and-get-work-done') }}
-
{{ ftl('firefox-products-get-mozilla-vpn') }}
+
{{ ftl('firefox-products-get-mozilla-vpn') }}
{% endcall %}
@@ -159,10 +159,10 @@
{{ ftl('firefox-products-mdn-plus') }}
+
{{ ftl('firefox-products-mdn-plus') }}
{{ ftl('firefox-products-resources-for-developers') }}
- {{ ftl('firefox-products-support-mdn') }} {{ icon_external|safe }}
+ {{ ftl('firefox-products-support-mdn') }} {{ icon_external|safe }}
{% endcall %}
@@ -179,9 +179,9 @@
{{ ftl('firefox-products-thunderbird') }}
+
{{ ftl('firefox-products-thunderbird') }}
{{ ftl('firefox-products-access-all') }}
-
{{ ftl('firefox-products-download-thunderbird') }} {{ icon_download|safe }}
+
{{ ftl('firefox-products-download-thunderbird') }} {{ icon_download|safe }}
{% endcall %}
@@ -197,9 +197,9 @@
{{ ftl('firefox-products-fakespot') }}
+
{{ ftl('firefox-products-fakespot') }}
{{ ftl('firefox-products-fakespot-has-your') }}
-
{{ ftl('firefox-products-analyze') }} {{ icon_external|safe }}
+
{{ ftl('firefox-products-analyze') }} {{ icon_external|safe }}
{% endcall %}
@@ -215,9 +215,9 @@
{{ ftl('firefox-products-pocket') }}
+
{{ ftl('firefox-products-pocket') }}
{{ ftl('firefox-products-discover-the-best-content-v2') }}
-
{{ ftl('firefox-products-get-pocket') }} {{ icon_external|safe }}
+
{{ ftl('firefox-products-get-pocket') }} {{ icon_external|safe }}
{{ google_play_button(href=pocket_android_url, id='playStoreLink-pocket') }}
{{ apple_app_store_button(href=pocket_ios_url, id='appStoreLink-pocket') }}
{% endcall %}
diff --git a/bedrock/products/templates/products/mozsocial/invite.html b/bedrock/products/templates/products/mozsocial/invite.html
index b5892047bfd..c42ccd159c9 100644
--- a/bedrock/products/templates/products/mozsocial/invite.html
+++ b/bedrock/products/templates/products/mozsocial/invite.html
@@ -85,7 +85,7 @@
-
+
{{ ftl('newsletter-form-sign-me-up') }}
diff --git a/bedrock/products/templates/products/vpn/download.html b/bedrock/products/templates/products/vpn/download.html
index 629f2268fa9..2ab74efb8e5 100644
--- a/bedrock/products/templates/products/vpn/download.html
+++ b/bedrock/products/templates/products/vpn/download.html
@@ -79,7 +79,7 @@
{{ self.page_title_full() }}
{{ ftl('vpn-download-for-windows-long') }}
{{ ftl('vpn-download-based-on-your') }}
{{ ftl('vpn-download-for-windows-requirements') }}
-
+
{{ ftl('vpn-download-get-mozilla-vpn', fallback='vpn-shared-subscribe-link') }}
@@ -93,7 +93,7 @@ {{ ftl('vpn-download-for-windows-long') }}
{{ ftl('vpn-download-for-mac-long', fallback='vpn-download-for-mac') }}
{{ ftl('vpn-download-based-on-your') }}
{{ ftl('vpn-download-version-requirements', version='11.0') }}
-
+
{{ ftl('vpn-download-get-mozilla-vpn', fallback='vpn-shared-subscribe-link') }}
@@ -107,7 +107,7 @@ {{ ftl('vpn-download-for-mac-long', fallback='vpn-download-for-mac') }}
{{ ftl('vpn-download-for-linux-long', fallback='vpn-download-for-linux') }}
{{ ftl('vpn-download-based-on-your') }}
{{ ftl('vpn-download-for-linux-requirements', version='20.04') }}
-
+
{{ ftl('vpn-download-get-mozilla-vpn', fallback='vpn-shared-subscribe-link') }}
@@ -121,7 +121,7 @@ {{ ftl('vpn-download-for-linux-long', fallback='vpn-download-for-linux') }}<
{{ ftl('vpn-download-for-ios-long-v2', fallback='vpn-download-for-ios') }}
{{ ftl('vpn-download-based-on-your') }}
{{ ftl('vpn-download-version-requirements', version='14.0') }}
-
+
@@ -135,7 +135,7 @@ {{ ftl('vpn-download-for-ios-long-v2', fallback='vpn-download-for-ios') }}
{{ ftl('vpn-download-for-android-long', fallback='vpn-download-for-android') }}
{{ ftl('vpn-download-based-on-your') }}
{{ ftl('vpn-download-version-requirements', version='8.0') }}
-
+
@@ -154,7 +154,7 @@ {{ ftl('vpn-download-also-available') }}
{{ ftl('vpn-download-for-windows-v2') }}
{{ ftl('vpn-download-for-windows-requirements') }}
-
+
{{ ftl('vpn-download-for-windows-long') }}
@@ -167,7 +167,7 @@ {{ ftl('vpn-download-for-windows-v2') }}
{{ ftl('vpn-download-for-mac') }}
{{ ftl('vpn-download-version-requirements', version='11.0') }}
-
+
{{ ftl('vpn-download-for-mac-long') }}
@@ -180,7 +180,7 @@ {{ ftl('vpn-download-for-mac') }}
{{ ftl('vpn-download-for-linux') }}
{{ ftl('vpn-download-for-linux-requirements', version='20.04') }}
-
+
{{ ftl('vpn-download-for-linux-long') }}
@@ -193,7 +193,7 @@ {{ ftl('vpn-download-for-linux') }}
{{ ftl('vpn-download-for-ios') }}
{{ ftl('vpn-download-version-requirements', version='14.0') }}
-
+
{{ ftl('vpn-download-for-ios-long-v2') }}
@@ -206,7 +206,7 @@ {{ ftl('vpn-download-for-ios') }}
{{ ftl('vpn-download-for-android') }}
{{ ftl('vpn-download-version-requirements', version='8.0') }}
-
+
{{ ftl('vpn-download-for-android-long') }}
@@ -216,7 +216,7 @@ {{ ftl('vpn-download-for-android') }}
{% if ftl_has_messages('vpn-download-previous-versions') %}
{% endif %}
diff --git a/bedrock/products/templates/products/vpn/features.html b/bedrock/products/templates/products/vpn/features.html
index bf839f04df0..994e44a47b2 100644
--- a/bedrock/products/templates/products/vpn/features.html
+++ b/bedrock/products/templates/products/vpn/features.html
@@ -79,7 +79,7 @@
- {% set wireguard_url = 'href="%s" data-cta-type="link" rel="external noopener" target="_blank"'|safe|format(('https://mullvad.net/help/why-wireguard/')) %}
+ {% set wireguard_url = 'href="%s" rel="external noopener" target="_blank"'|safe|format(('https://mullvad.net/help/why-wireguard/')) %}
@@ -172,7 +172,7 @@
{{ ftl('vpn-features-secure') }}
base_el='li'
) %}
- {% set feature_url = 'href="%s" data-cta-type="link" rel="external noopener" target="_blank"'|safe|format(('https://support.mozilla.org/kb/multi-hop-encrypt-your-data-twice-enhanced-security' + _params)) %}
+ {% set feature_url = 'href="%s" rel="external noopener" target="_blank"'|safe|format(('https://support.mozilla.org/kb/multi-hop-encrypt-your-data-twice-enhanced-security' + _params)) %}
{{ ftl('vpn-features-multi-hop-feature', feature=feature_url) }}
{% endcall %}
@@ -192,7 +192,7 @@
{{ ftl('vpn-features-secure') }}
base_el='li'
) %}
- {% set dns_url = 'href="%s" data-cta-type="link" rel="external noopener" target="_blank"'|safe|format(('https://support.mozilla.org/kb/how-do-i-change-my-dns-settings' + _params)) %}
+ {% set dns_url = 'href="%s" rel="external noopener" target="_blank"'|safe|format(('https://support.mozilla.org/kb/how-do-i-change-my-dns-settings' + _params)) %}
{{ ftl('vpn-features-keep-traffic-protected', dns=dns_url) }}
@@ -288,7 +288,7 @@
{{ ftl('vpn-features-personalize-which-apps') }}
media_after=True
) %}
- {% set containers_url = 'href="%s" data-cta-type="link" rel="external noopener" target="_blank"'|safe|format(('https://support.mozilla.org/kb/use-multi-account-containers-mozilla-vpn' + _params)) %}
+ {% set containers_url = 'href="%s" rel="external noopener" target="_blank"'|safe|format(('https://support.mozilla.org/kb/use-multi-account-containers-mozilla-vpn' + _params)) %}
{{ ftl('vpn-features-set-different-locations') }}
@@ -337,7 +337,7 @@
{{ ftl('vpn-features-trustworthy') }}
base_el='li'
) %}
- {% set privacy_notice = 'href="%s" data-cta-type="link"'|safe|format(url('privacy.notices.subscription-services')) %}
+ {% set privacy_notice = 'href="%s" '|safe|format(url('privacy.notices.subscription-services')) %}
{{ ftl('vpn-features-simply-put-we-dont', privacy=privacy_notice) }}
@@ -358,7 +358,7 @@
{{ ftl('vpn-features-trustworthy') }}
base_el='li'
) %}
- {% set github_url = 'href="%s" data-cta-type="link" rel="external noopener" target="_blank"'|safe|format(('https://github.com/mozilla-mobile/mozilla-vpn-client')) %}
+ {% set github_url = 'href="%s" rel="external noopener" target="_blank"'|safe|format(('https://github.com/mozilla-mobile/mozilla-vpn-client')) %}
{{ ftl('vpn-features-made-with-open-source-code', github=github_url) }}
@@ -379,7 +379,7 @@
{{ ftl('vpn-features-trustworthy') }}
base_el='li'
) %}
- {% set report_url = 'href="%s" data-cta-type="link" rel="external noopener" target="_blank"'|safe|format(('https://blog.mozilla.org/mozilla/news/mozilla-vpn-completes-independent-security-audit-by-cure53' + _params)) %}
+ {% set report_url = 'href="%s" rel="external noopener" target="_blank"'|safe|format(('https://blog.mozilla.org/mozilla/news/mozilla-vpn-completes-independent-security-audit-by-cure53' + _params)) %}
{{ ftl('vpn-features-weve-been-audited', report=report_url) }}
@@ -400,7 +400,7 @@
{{ ftl('vpn-features-trustworthy') }}
base_el='li'
) %}
- {% set mofo_url = 'href="%s" data-cta-type="link" rel="external noopener" target="_blank"'|safe|format(('https://foundation.mozilla.org/' + _params)) %}
+ {% set mofo_url = 'href="%s" rel="external noopener" target="_blank"'|safe|format(('https://foundation.mozilla.org/' + _params)) %}
{{ ftl('vpn-features-were-backed-by-mofo', mofo=mofo_url) }}
diff --git a/bedrock/products/templates/products/vpn/includes/macros.html b/bedrock/products/templates/products/vpn/includes/macros.html
index 9d61c42a070..997d8c419b9 100644
--- a/bedrock/products/templates/products/vpn/includes/macros.html
+++ b/bedrock/products/templates/products/vpn/includes/macros.html
@@ -96,14 +96,14 @@
{{ subheading }}
{% macro vpn_conditional_cta(position) -%}
{% if vpn_available %}
-
+
{{ ftl('vpn-shared-subscribe-link') }}
{{ ftl('vpn-shared-money-back-guarantee') }}
{% else %}
-
+
{{ ftl('vpn-shared-waitlist-link') }}
@@ -118,14 +118,14 @@
{{ subheading }}
{% if vpn_available %}
{% set pricing_url = '#pricing' if request.path.endswith('/products/vpn/') else url('products.vpn.landing') + '#pricing' %}
-
+
{{ ftl('vpn-shared-subscribe-link') }}
{{ ftl('vpn-shared-features-guarantee') }}
{% else %}
-
+
{{ ftl('vpn-shared-waitlist-link') }}
@@ -136,11 +136,11 @@
{{ subheading }}
{% macro vpn_nav_cta(link_text, alt_link_text, download_link_text, utm_source, utm_campaign) -%}
{% if vpn_available %}
-
+
{{ ftl('vpn-shared-subscribe-link') }}
{% else %}
-
+
{{ ftl('vpn-shared-waitlist-link') }}
{% endif %}
@@ -151,11 +151,11 @@
{{ subheading }}
{% if vpn_available %}
{% set pricing_url = '#pricing' if request.path.endswith('/products/vpn/') else url('products.vpn.landing') + '#pricing' %}
-
+
{{ ftl('vpn-shared-subscribe-link') }}
{% else %}
-
+
{{ ftl('vpn-shared-waitlist-link') }}
{% endif %}
@@ -211,11 +211,11 @@
{{ heading }}
class_name=class_name,
optional_attributes= {
'data-cta-text' : 'Get Mozilla VPN',
- 'data-cta-type' : 'button',
+ 'data-cta-type' : 'vpn',
}
) }}
{% else %}
-
+
{{ alt_link_text }}
{% endif %}
diff --git a/bedrock/products/templates/products/vpn/includes/subnav-refresh.html b/bedrock/products/templates/products/vpn/includes/subnav-refresh.html
index a08d0b7c3e0..98b4f551fa1 100644
--- a/bedrock/products/templates/products/vpn/includes/subnav-refresh.html
+++ b/bedrock/products/templates/products/vpn/includes/subnav-refresh.html
@@ -8,23 +8,23 @@
-
+
{{ ftl('vpn-subnav-title') }}
-
+
{{ ftl('vpn-subnav-learn-about-vpns') }}
-
+
{{ ftl('vpn-subnav-features') }}
-
+
{{ ftl('vpn-subnav-download-mozilla-vpn') }}
diff --git a/bedrock/products/templates/products/vpn/landing-refresh.html b/bedrock/products/templates/products/vpn/landing-refresh.html
index 5a5d3c1b366..6962b28a29c 100644
--- a/bedrock/products/templates/products/vpn/landing-refresh.html
+++ b/bedrock/products/templates/products/vpn/landing-refresh.html
@@ -99,7 +99,7 @@ {{ ftl('vpn-landing-powerful-privacy-for-peace') }}
{% if vpn_available %}
-
+
{{ vpn_saving(country_code=country_code, lang=LANG, bundle_relay=False, ftl_string='vpn-shared-save-percent-on') }}
@@ -108,7 +108,7 @@ {{ ftl('vpn-landing-powerful-privacy-for-peace') }}
{% else %}
-
+
{{ ftl('vpn-shared-waitlist-link') }}
{% endif %}
@@ -165,7 +165,7 @@ {{ ftl('vpn-landing-one-subscription-for-all-your')
{{ ftl('vpn-shared-mozilla-vpn-is-not-yet-available') }}
-
+
{{ ftl('vpn-shared-waitlist-link') }}
diff --git a/bedrock/products/templates/products/vpn/landing.html b/bedrock/products/templates/products/vpn/landing.html
index a5aa0a8cce0..eb2f6a53aa5 100644
--- a/bedrock/products/templates/products/vpn/landing.html
+++ b/bedrock/products/templates/products/vpn/landing.html
@@ -93,7 +93,7 @@
) %}
-
+
{{ ftl('vpn-shared-waitlist-link') }}
@@ -173,7 +173,7 @@
) %}
{{ ftl('vpn-shared-features-full-list-servers', url='https://mullvad.net/servers/', attrs='target="_blank" rel="external noopener noreferrer"') }}
-
+
{{ ftl('vpn-shared-subscribe-link') }}
@@ -198,7 +198,7 @@
class_name='vpn-content-media-left-half vpn-more-countries-coming-soon'
) %}
-
+
{{ ftl('vpn-shared-waitlist-link') }}
@@ -229,7 +229,7 @@
{{ ftl('vpn-add-relay-to-protect', url='https://relay.firefox.com/premium/' + _params)}}
-
+
{{ ftl('vpn-shared-get-vpn-plus-relay') }}
{% endcall %}
@@ -326,14 +326,14 @@
{{ ftl('vpn-landing-faq-manage-subscription-question-heading') }}
{{ ftl('vpn-landing-faq-download-heading') }}
- {% set attrs = 'href="' ~ url('products.vpn.download') ~ '" data-cta-type="link" data-cta-text="Download Page"' %}
+ {% set attrs = 'href="' ~ url('products.vpn.download') ~ '" data-cta-text="Download Page"' %}
{{ ftl('vpn-landing-faq-download-desc', attrs=attrs) }}
{% endif %}
diff --git a/bedrock/products/templates/products/vpn/pricing-refresh.html b/bedrock/products/templates/products/vpn/pricing-refresh.html
index 043a91524e2..78fa2ed32f9 100644
--- a/bedrock/products/templates/products/vpn/pricing-refresh.html
+++ b/bedrock/products/templates/products/vpn/pricing-refresh.html
@@ -52,7 +52,7 @@
{{ ftl('vpn-pricing-one-subscription') }}
{{ ftl('vpn-pricing-vpn-not-available') }}
-
+
{{ ftl('vpn-shared-waitlist-link') }}
@@ -73,8 +73,8 @@
{{ ftl('vpn-pricing-refund-policy') }}
- {% set privacy_principles = 'href="%s" data-cta-text="Privacy principles" data-cta-type="link"'|safe|format(url('privacy.principles')) %}
- {% set privacy_notice = 'href="%s" data-cta-text="Privacy notice" data-cta-type="link"'|safe|format(url('privacy.notices.subscription-services')) %}
+ {% set privacy_principles = 'href="%s" data-cta-text="Privacy principles" '|safe|format(url('privacy.principles')) %}
+ {% set privacy_notice = 'href="%s" data-cta-text="Privacy notice" '|safe|format(url('privacy.notices.subscription-services')) %}
{{ ftl('vpn-pricing-what-information') }}
@@ -84,7 +84,7 @@ {{ ftl('vpn-pricing-what-information') }}
- {% set manage_url = 'href="%s" data-cta-text="Manage VPN" data-cta-type="link"'|safe|format(('https://vpn.mozilla.org/r/vpn/subscription' + _params)) %}
+ {% set manage_url = 'href="%s" data-cta-text="Manage VPN" '|safe|format(('https://vpn.mozilla.org/r/vpn/subscription' + _params)) %}
{{ ftl('vpn-pricing-how-do-i-manage') }}
diff --git a/bedrock/products/templates/products/vpn/pricing.html b/bedrock/products/templates/products/vpn/pricing.html
index dc2cbce5daa..5db4d4e483e 100644
--- a/bedrock/products/templates/products/vpn/pricing.html
+++ b/bedrock/products/templates/products/vpn/pricing.html
@@ -60,7 +60,7 @@ {{ ftl('vpn-share
class_name='vpn-content-media-left-half vpn-more-countries-coming-soon'
) %}
-
+
{{ ftl('vpn-shared-waitlist-link') }}
diff --git a/bedrock/products/templates/products/vpn/resource-center/base-article.html b/bedrock/products/templates/products/vpn/resource-center/base-article.html
index 79c9112965f..96bf2882c5a 100644
--- a/bedrock/products/templates/products/vpn/resource-center/base-article.html
+++ b/bedrock/products/templates/products/vpn/resource-center/base-article.html
@@ -55,13 +55,13 @@ {{ self.article_title() }}
{{ ftl('vpn-resource-center-was-this-article') }}
-
+
{{ ftl('vpn-resource-center-article-helpful') }}
-
+
{{ ftl('vpn-resource-center-article-not-helpful') }}
diff --git a/bedrock/products/tests/test_helper_misc.py b/bedrock/products/tests/test_helper_misc.py
index ff957779811..8bbcd55394c 100644
--- a/bedrock/products/tests/test_helper_misc.py
+++ b/bedrock/products/tests/test_helper_misc.py
@@ -1661,12 +1661,12 @@ def test_vpn_product_referral_link(self):
page_anchor="#pricing",
link_text="Get Mozilla VPN",
class_name="mzp-t-product mzp-t-secondary mzp-t-md",
- optional_attributes={"data-cta-text": "Get Mozilla VPN", "data-cta-type": "button"},
+ optional_attributes={"data-cta-text": "Get Mozilla VPN", "data-cta-type": "vpn"},
)
expected = (
'Get Mozilla VPN '
+ 'data-cta-text="Get Mozilla VPN" >Get Mozilla VPN'
)
self.assertEqual(markup, expected)
@@ -1677,12 +1677,12 @@ def test_vpn_product_referral_link_pricing_page(self):
link_to_pricing_page=True,
link_text="Get Mozilla VPN",
class_name="mzp-t-product mzp-t-secondary mzp-t-md",
- optional_attributes={"data-cta-text": "Get Mozilla VPN", "data-cta-type": "button"},
+ optional_attributes={"data-cta-text": "Get Mozilla VPN", "data-cta-type": "vpn"},
)
expected = (
'Get Mozilla VPN '
+ 'data-cta-text="Get Mozilla VPN" >Get Mozilla VPN'
)
self.assertEqual(markup, expected)
@@ -1693,12 +1693,12 @@ def test_vpn_product_referral_link_optional_params(self):
link_to_pricing_page=True,
link_text="Get Mozilla VPN",
class_name="mzp-t-product mzp-t-secondary mzp-t-md",
- optional_attributes={"data-cta-text": "Get Mozilla VPN", "data-cta-type": "button"},
+ optional_attributes={"data-cta-text": "Get Mozilla VPN", "data-cta-type": "vpn"},
optional_parameters={"coupon": "cyber20"},
)
expected = (
'Get Mozilla VPN '
+ 'data-cta-text="Get Mozilla VPN" >Get Mozilla VPN'
)
self.assertEqual(markup, expected)
diff --git a/docs/abtest.rst b/docs/abtest.rst
index 26a86479435..a0d741cd3d0 100644
--- a/docs/abtest.rst
+++ b/docs/abtest.rst
@@ -100,11 +100,6 @@ The variable values may be provided by the analytics team.
.. code-block:: javascript
if (href.indexOf('v=a') !== -1) {
- // UA
- window.dataLayer.push({
- 'data-ex-variant': 'de-page',
- 'data-ex-name': 'Berlin-Campaign-Landing-Page'
- });
// GA4
window.dataLayer.push({
event: 'experiment_view',
@@ -112,11 +107,6 @@ The variable values may be provided by the analytics team.
variant: 'de-page',
});
} else if (href.indexOf('v=b') !== -1) {
- // UA
- window.dataLayer.push({
- 'data-ex-variant': 'campaign-page',
- 'data-ex-name': 'Berlin-Campaign-Landing-Page'
- });
// GA4
window.dataLayer.push({
event: 'experiment_view',
diff --git a/docs/attribution/0001-analytics.rst b/docs/attribution/0001-analytics.rst
index 2a249698b7a..728fe78ce5c 100644
--- a/docs/attribution/0001-analytics.rst
+++ b/docs/attribution/0001-analytics.rst
@@ -4,277 +4,247 @@
.. _analytics:
-=================
-Mozorg analytics
-=================
-Google Tag Manager (GTM)
-************************
-In mozorg mode, bedrock uses `Google Tag Manager (GTM)`_ to manage and organize
-its `Google Analytics`_ solution.
+:goodnews: GOOD NEWS EVERYONE:goodnews:
-:abbr:`GTM (Google Tag Manager)` is a tag management system that allows for
-easy implementation of Google Analytics (GA) tags and other 3rd party marketing
-tags in a nice :abbr:`GUI (Graphical User Interface)` experience. Tags can be
-added, updated, or removed directly from the GUI. GTM allows for a "one
-source of truth" approach to managing an analytics solution in that all
-analytics tracking can be inside GTM.
+CTA and link tracking in GA4 are much simpler now that GA3 is gone.
-Bedrock's GTM solution is :abbr:`CSP (Content Security Policy)` compliant and
-does not allow for the injection of custom HTML or JavaScript but all tags use
-built in templates to minimize any chance of introducing a bug into Bedrock.
+To trigger a `cta_click` the only required data attribute is `data-cta-text` and to trigger a `link_click` the only required data attribute is `data-link-text`. For both events you can add an optional `position` value to help tell it apart from other similar cta/links on the page.
-The GTM DataLayer
------------------
+In general you will want to use `cta` for big stand out click-y things and `link` for links that are not the focus of the page (like, inside a paragraph or FAQ or something).
-How an application communicates with GTM is via the ``dataLayer`` object, which
-is a simple JavaScript array GTM instantiates on the page. Bedrock will send
-messages to the ``dataLayer`` object by means of pushing an object literal onto
-the ``dataLayer``. GTM creates an abstract data model from these pushed objects
-that consists of the most recent value for all keys that have been pushed to
-the ``dataLayer``.
+GONE are ~type="link"~ and ~type="button"~ you no longer have to wonder if the type is button or link if the element is a link element styled to look like a button. :dizzy-face:
-The only reserved key in an object pushed to the ``dataLayer`` is ``event`` which
-will cause GTM to evaluate the firing conditions for all tag triggers.
-DataLayer push example
-----------------------
-If we wanted to track clicks on a carousel and capture what the image was that
-was clicked, we might write a dataLayer push like this:
-.. code-block:: javascript
- dataLayer.push({
- 'event': 'carousel-click',
- 'image': 'house'
- });
-In the dataLayer push there is an event value to have GTM evaluate the firing
-conditions for tag triggers, making it possible to fire a tag off the dataLayer
-push. The event value is descriptive to the user action so it's clear to someone
-coming in later what the dataLayer push signifies. There is also an image property
-to capture the image that is clicked, in this example it's the house picture.
+=================
+Mozorg analytics
+=================
-In GTM, a tag could be setup to fire when the event ``carousel-click`` is pushed
-to the dataLayer and could consume the image value to pass on what image was clicked.
+Google Analytics
+****************
-The Core DataLayer object
--------------------------
+We use Google Analytics (GA) to track how our website is used.
-For the passing of contextual data on the user and page to GTM, we've created what we
-call the Core DataLayer Object. This object passes as soon as all required API calls
-for contextual data have completed. Unless there is a significant delay to when data
-will be available, please pass all contextual or meta data on the user or page here
-that you want to make available to GTM.
+*Implementation*
+Google calls a 3rd party JavaScript library that is imported by adding a script tag to a website,
+Google names these "tag"s.
-Conditional banners
-~~~~~~~~~~~~~~~~~~~
+We include the tag for Google Tag Manager (GTM) on our website. GTM is a service meant to simplify and centralize
+the tags included on a website in cases where multiple tags are needed. Their web-based user interface can then be
+used to watch for user actions on the website and then trigger events to be sent to tags.
-When a banner is shown:
+We do no not use any of GTM's most powerful features. Our use of GTM is a historical artifact of our
+Universal Analytics (UA) (aka GA3) implementation. GTM is a tool to let non-technical users add code to a website, however,
+there is no one outside of the websites team who is trained to do that.
-.. code-block:: javascript
+The only tag we include with GTM is the Google Tag (GTag), and that in turn connects to our Google Analytics (GA) account.
- // UA
- window.dataLayer.push({
- 'eLabel': 'Banner Impression',
- 'data-banner-name': '', //ex. Fb-Video-Compat
- 'data-banner-impression': '1',
- 'event': 'non-interaction'
- });
- // GA4
- window.dataLayer.push({
- event: 'widget_action',
- type: 'banner',
- action: 'display',
- name: '', //ex. Fb-Video-Compat
- non_interaction: true
- });
+There are three ways we send events from our site to GA:
-When an element in the banner is clicked:
+1. Google's Enhanced Event Measurement logs certain events automatically.
+2. GTM watches elements with specific data-attributes for user interaction
+3. Bedrock watches for specific events, formats them, and sends them to GTM using the dataLayer
-.. code-block:: javascript
+*Implementation Principles*
- // UA
- window.dataLayer.push({
- 'eLabel': 'Banner Click (OK)',
- 'data-banner-name': '', //ex. Fb-Video-Compat
- 'data-banner-click': '1',
- 'event': 'in-page-interaction'
- });
- // GA4
- window.dataLayer.push({
- event: 'widget_action',
- type: 'banner',
- action: 'clickthrough',
- name: '', //ex. Fb-Video-Compat
- });
+The current implementation tries very hard to keep any kind of logic and formatting of our events in bedrock where it can be
+tested, code reviewed, and version controlled.
-When a banner is dismissed:
+Many user interactions will trigger multiple events. For example: clicking the "get subscription" button on the VPN page will
+trigger ``link``, ``cta_click``, and ``begin_checkout`` events. This is totally fine.
-.. code-block:: javascript
+If you're creating a new event use the two word noun_verb scheme that Google came up with and use snake_case,
+even if one of your noun or verb is more than one word.
- // UA
- dataLayer.push({
- 'eLabel': 'Banner Dismissal',
- 'data-banner-name': '', //ex. Fb-Video-Compat
- 'data-banner-dismissal': '1',
- 'event': 'in-page-interaction'
- });
- // GA4
- window.dataLayer.push({
- event: 'widget_action',
- type: 'banner',
- action: 'dismiss',
- name: '' //ex. Fb-Video-Compat
- });
+*Debugging*
+- GTM is managed with Tag Manager https://tagmanager.google.com/
+- Our gTag is also managed with Tag Manager https://tagmanager.google.com/#/home#tags
+- GA, GTM, and gTag can be debugged using Tag Assistant https://tagassistant.google.com/
+- GA also has a debug view https://support.google.com/analytics/answer/7201382?hl=en
-A/B tests
-~~~~~~~~~
-.. code-block:: javascript
+How can visitors opt out of GA?
+-------------------------------
- if (href.indexOf('v=a') !== -1) {
- // UA
- window.dataLayer.push({
- 'data-ex-variant': 'de-page',
- 'data-ex-name': 'Berlin-Campaign-Landing-Page'
- });
- // GA4
- window.dataLayer.push({
- event: 'experiment_view',
- id: 'Berlin-Campaign-Landing-Page',
- variant: 'de-page',
- });
- } else if (href.indexOf('v=b') !== -1) {
- // UA
- window.dataLayer.push({
- 'data-ex-variant': 'campaign-page',
- 'data-ex-name': 'Berlin-Campaign-Landing-Page'
- });
- // GA4
- window.dataLayer.push({
- event: 'experiment_view',
- id: 'Berlin-Campaign-Landing-Page',
- variant: 'campaign-page',
- });
- }
+Visitors to the website can opt-out of loading Google Analytics on our
+website by enabling `Do Not Track (DNT)`_ in their web browser. We
+facilitate this by using a `DNT helper`_ that our team maintains. We
+also respect `Global Privacy Control (GPC)`_ as an additional opt-out
+signal.
-GTM listeners & data attributes
--------------------------------
+Alternatively, visitors can also opt-out of GA by visiting the
+`cookie settings page`_, which is linked to in the main site
+footer on every page.
-GTM also uses click and form submit listeners to gather context on what is happening
-on the page. Listeners push to the dataLayer data on the specific element that
-triggered the event, along with the element object itself.
+Event Tracking
+--------------
-Since GTM listeners pass the interacted element object to the dataLayer, the use of
-data attributes works very well when trying to identify key elements that you want to
-be tracked and for storing data on that element to be passed into Google Analytics. We
-use data attributes to track clicks on all downloads, buttons elements, and nav, footer,
-and :abbr:`CTA (Call To Action)`/button link elements.
+Enhanced Event Measurement
+~~~~~~~~~~~~~~~~~~~~~~~~~~
-.. Important::
+Pageviews, scrolls, video events, and outbound link clicks are being collected using GA4's `enhanced event measurement`_.
+
+Some form submissions are also being collected but newsletter signups are not. `(See Bug #13348)`_ They are instead
+being tracked with the ``newsletter_subscribe`` event.
- When adding any new elements to a Bedrock page, please follow the below guidelines
- to ensure accurate analytics tracking.
+See the full list of events GA collects by default. https://support.google.com/analytics/answer/9216061
-Generic CTAs
-~~~~~~~~~~~~
+Data Attributes
+~~~~~~~~~~~~~~~
+
+One place where we do still rely on GTM to watch for an trigger events is when we use data-attributes to pass
+information. There are only two events we do this with and they are primarily used on buttons and links.
-For all generic CTA links and ```` elements, add these data attributes
-(* indicates a required attribute):
-+-----------------------+---------------------------------------------------------------------------+
-| Data Attribute | Expected Value (lowercase) |
-+=======================+===========================================================================+
-| ``data-cta-type`` * | Link type (e.g. ``navigation``, ``footer``, or ``button``) |
-+-----------------------+---------------------------------------------------------------------------+
-| ``data-cta-text`` | name or text of the link |
-+-----------------------+---------------------------------------------------------------------------+
-| ``data-cta-position`` | Location of CTA on the page (e.g. ``primary``, ``secondary``, ``header``) |
-+-----------------------+---------------------------------------------------------------------------+
+CTA Click
+"""""""""
-For all links to accounts.firefox.com use these data attributes (* indicates a required attribute):
+CTA ("Call to Action") click is intented to track the one or two main actions the page is designed to get the user
+to do. This data-attribute can be used on either ```` or ````. Links can go to or away from the site,
+a button might trigger a JS function instead of going away from the page, that's still a cta.
+
+The attribute ``data-cta-text`` must be present to trigger the event. All links to accounts.firefox.com must also use cta-type.
+-----------------------+----------------------------------------------------------------------------------+
| Data Attribute | Expected Value |
+=======================+==================================================================================+
-| ``data-cta-type`` * | fxa-servicename (e.g. ``fxa-sync``, ``fxa-monitor``) |
-+-----------------------+----------------------------------------------------------------------------------+
-| ``data-cta-text`` | Name or text of the link (e.g. ``Sign Up``, ``Join Now``, ``Start Here``). |
+| ``data-cta-text`` * | Text or name of the link (e.g. ``Sign Up``, ``Start Here``, ``Get Relay``, |
+| | ``See your report``, ``Read the Manifesto``). |
| | |
-| | We use this when the link text is not useful, as is the case with many |
-| | account forms that say, ``Continue``. We replace ``Continue`` with ``Register``. |
+| | - This does not need to exactly match the text displayed to the user |
+| | - Defining this is useful to group the link clicks across locales |
+-----------------------+----------------------------------------------------------------------------------+
-| ``data-cta-position`` | Location of CTA on the page (e.g. ``primary``, ``secondary``, ``header``) |
+| ``data-cta-position`` | Location of CTA on the page (e.g. ``primary``, ``secondary``, ``banner``, |
+| | ``pricing``) |
++-----------------------+----------------------------------------------------------------------------------+
+| ``data-cta-type`` | fxa-servicename (e.g. ``fxa-sync``, ``fxa-monitor``, ``fxa-vpn``, ``monitor``, |
+| | ``relay``, ``pocket``) |
+| | |
+| | - This is to group CTAs by their destination |
+| | - Do not use this to identify the element (ie. link, button) |
+-----------------------+----------------------------------------------------------------------------------+
-Links identified with ``data-cta-type`` become UA events with the following format:
-| **Category:** ``cta click``
-| **Action:** ``cta: {{data-cta-type}}``
-| **Label:** ``{{data-cta-text}}``
-| **CD Index 9 - CTA Position:** ``{{data-cta-position}}``
+.. code-block:: html
+ Check for breaches
-Download Links
-~~~~~~~~~~~~~~
+ Send me a link
-For Firefox download buttons, add these data attributes (* indicates a required attribute).
-Note that ``data-download-name`` and ``data-download-version`` should be included for download
-buttons that serve multiple platforms. For mobile specific store badges, they are not strictly
-required.
+ Firefox for iOS
-+----------------------------+-------------------------------------------------------------------------------------------------------------+
-| Data Attribute | Expected Value |
-+============================+=============================================================================================================+
-| ``data-link-type`` * | ``download`` |
-+----------------------------+-------------------------------------------------------------------------------------------------------------+
-| ``data-download-os`` * | ``Desktop``, ``Android``, ``iOS`` |
-+----------------------------+-------------------------------------------------------------------------------------------------------------+
-| ``data-download-name`` | ``Windows 32-bit``, ``Windows 64-bit``, ``macOS``, ``Linux 32-bit``, ``Linux 64-bit``, ``iOS``, ``Android`` |
-+----------------------------+-------------------------------------------------------------------------------------------------------------+
-| ``data-download-version`` | ``win``, ``win64``, ``osx``, ``linux``, ``linux64``, ``ios``, ``android`` |
-+----------------------------+-------------------------------------------------------------------------------------------------------------+
-| ``data-download-location`` | ``primary``, ``secondary``, ``nav``, ``other`` |
-+----------------------------+-------------------------------------------------------------------------------------------------------------+
+Link Click
+""""""""""
-GA4
----
+Link click is intended to track links that are of interest but not the focus of the page. Examples include links in paragraphs,
+lists, FAQs, supplemental content, or in a navigation menu. Links can go to or away from the site.
-.. Note::
+The attribute ``data-link-text`` must be present to trigger the event.
- The migration to GA4 has begun but is incomplete.
++-----------------------+------------------------------------------------------------------------------------------------+
+| Data Attribute | Expected Value |
++=======================+================================================================================================+
+| ``data-link-text`` * | Text or name of the link (e.g. ``Monitor``, ``Features``, ``Instagram (mozilla)``, |
+| | ``Mozilla VPN``). |
++-----------------------+------------------------------------------------------------------------------------------------+
+| ``data-link-position``| Location of CTA on the page (e.g. ``topnav``, ``subnav``, ``body``, ``features``) |
++-----------------------+------------------------------------------------------------------------------------------------+
-Enhanced Event Measurement
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. code-block:: html
+
+ This is text with a simple example.
+
+ Edit PDFs on the go within your Firefox browser window.
+
+
+Link click is also commonly used for navigation menus. If you wish to indicate that a link is nested you can include the categories
+seperated by a dash (``topnav - firefox``, ``footer - company``)
+
+.. code-block:: html
+
+ {{ ftl('footer-developer-edition') }}
+
+
+
+
+Data Layer Events
+~~~~~~~~~~~~~~~~~
+
+The data layer is a JS object we can push events to and GTM will read from it.
+
+.. code-block:: js
+
+ window.dataLayer.push({'event': 'event_name'});
+
+We push a mix of recommended events and custom events to the data layer. When creating a new custom event please follow the
+Implementation Principles outlined above. Remember, both GTM and GA must be configured to recieve new events.
+
+https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtag#begin_checkout
+
+https://mozilla-hub.atlassian.net/wiki/spaces/EN/pages/430866463/GA4+Custom+Events
-Pageviews, video events, and external link clicks are being collected using GA4's
-`enhanced event measurement`_.
+https://developers.google.com/tag-platform/tag-manager/datalayer
-Some form submissions are also being collected but newsletter signups are not.
-`(See Bug #13348)`_
+
+Events that bedrock will send to GTM include:
+
+- begin_checkout
+- cta_click
+- default_browser_set
+- dimension_set
+- experiment_view
+- link_click
+- newsletter_subscribe
+- product_download (firefox_download, firefox_mobile_download, etc)
+- send_to_device
+- social_share
+- stub_session_set
+- widget_action
Begin Checkout
-~~~~~~~~~~~~~~
+""""""""""""""
-We are using GA4's recommended eCommerce event `begin_checkout`_ for VPN and Relay
-referrals to the FxA Subscription Platform with purchase intent.
+We are using GA4's recommended eCommerce event `begin_checkout`_ for VPN referrals to the FxA Subscription Platform with purchase intent.
+This event can accept values for other products but we are not currently using it for anything other than VPN.
.. Note::
Any link to Mozilla accounts should also be using :ref:`mozilla accounts attribution`
-``datalayer-begincheckout.es6.js`` contains generic functions
-that can be called on to push the appropriate information to the dataLayer. The
+``datalayer-begincheckout.es6.js`` contains generic functions that can be called on to push the appropriate information to the dataLayer. The
script is expecting the following values:
+
++---------------+----------------------------------------------------------------------------------+
+| Property | Value |
++===============+==================================================================================+
+| ``item_id`` | Text or name of the link (e.g. ``Sign Up``, ``Join Now``, ``Start Here``). |
++---------------+----------------------------------------------------------------------------------+
+| ``brand`` | fxa-servicename (e.g. ``fxa-sync``, ``fxa-monitor``) |
++---------------+----------------------------------------------------------------------------------+
+| ``plan`` | Location of CTA on the page (e.g. ``primary``, ``secondary``, ``header``) |
++---------------+----------------------------------------------------------------------------------+
+| ``period`` | Location of CTA on the page (e.g. ``primary``, ``secondary``, ``header``) |
++---------------+----------------------------------------------------------------------------------+
+| ``price`` | Location of CTA on the page (e.g. ``primary``, ``secondary``, ``header``) |
++---------------+----------------------------------------------------------------------------------+
+| ``currency`` | Location of CTA on the page (e.g. ``primary``, ``secondary``, ``header``) |
++---------------+----------------------------------------------------------------------------------+
+| ``discount`` | Location of CTA on the page (e.g. ``primary``, ``secondary``, ``header``) |
++---------------+----------------------------------------------------------------------------------+
+
+
+
- item_id: Stripe Plan ID
- brand: ``relay``, ``vpn``, or ``monitor``
- plan:
@@ -327,64 +297,26 @@ To use this method you will need to include ``datalayer-begincheckout-init.es6.j
-CTA Click
-~~~~~~~~~
-
-Like our UA implementation (documented above) the implementation of ``cta_click`` for GA4 is based of
-the existence of certain data-attributes on an element.
-
-`data-cta-text` must be present to trigger the event:
-
-- data-cta-text
- - Defining this is useful to group the link clicks across locales
- - The value does not need to exactly match the text
- - Provide something more useful than "click here" or "learn more". If that is the copy you were provided consider asking for copy that is more useful to the users too!
-- data-cta-position (examples: banner, pricing, primary, secondary)
-- data-cta-type (examples: fxa-sync, fxa-monitor, fxa-vpn, monitor, relay, pocket)
- - This is to group CTAs by their destination
- - Do not use this to identify the element (ie. link, button)
-
-
-.. code-block:: html
-
- Check for breaches
-
- Send me a link
-
- Firefox for iOS
-
-For all links to accounts.firefox.com use these data attributes (* indicates a required attribute):
-
-+-----------------------+----------------------------------------------------------------------------------+
-| Data Attribute | Expected Value |
-+=======================+==================================================================================+
-| ``data-cta-text`` * | Text or name of the link (e.g. ``Sign Up``, ``Join Now``, ``Start Here``). |
-+-----------------------+----------------------------------------------------------------------------------+
-| ``data-cta-type`` * | fxa-servicename (e.g. ``fxa-sync``, ``fxa-monitor``) |
-+-----------------------+----------------------------------------------------------------------------------+
-| ``data-cta-position`` | Location of CTA on the page (e.g. ``primary``, ``secondary``, ``header``) |
-+-----------------------+----------------------------------------------------------------------------------+
+Default Browser
+"""""""""""""""
+Trigger this event when a user sets their default browser to Firefox. It's an important conversion for us!
-Link Click
-~~~~~~~~~~
+.. code-block:: javascript
-Our implementation of ``link_click`` for GA4 is based of the existence of certain data-attributes on a
-link element.
+ window.dataLayer.push({
+ event: 'default_browser_set',
+ });
-`data-link-text` must be present to trigger the event:
-- data-link-text (examples: “Monitor”, “Features”, “Instagram (mozilla)”, “Mozilla VPN”)
-- data-link-position (examples: topnav, subnav, topnav - firefox, footer - company)
-```
-
-```
+Newsletter Subscribe
+""""""""""""""""""""
Product Downloads
-~~~~~~~~~~~~~~~~~
+"""""""""""""""""
.. Important::
@@ -402,10 +334,6 @@ talked about as `product_download` :
- `klar_download`
- `pocket_download`
-We are not using the default GA4 event file_download for a combination of reasons:
-it does not trigger for the Firefox file types, we would like to collect more information than is included with
-the default events, and we would like to treat product downloads as goals but not all file downloads are goals.
-
Properties for use with `product_download` (not all products will have all options):
- product (one of: firefox, firefox_mobile, focus, klar, pocket, vpn)
@@ -450,8 +378,28 @@ get and send the event object manually. This most often happens with adjust link
TrackProductDownload.sendEvent(customEventObject);
+.. Note::
+
+ Calling TrackProductDownload will also fire an event named `product_download` so two events are being logged for each product download.
+ This is because prior to Feb 2024 we only used one unified product download event and did not have the individual product download
+ events yet. The split events are considered easier to deal with for reporting purposes inside GA4. Some data science dashboards
+ use `product_download` because it has existed longer. Ideally, we will remove it some day.
+
+
+Send to Device
+""""""""""""""
+
+Social Share
+""""""""""""
+
+
+Stub Session Set
+""""""""""""""""
+
+
+
Widget Action
-~~~~~~~~~~~~~
+"""""""""""""
We are using the custom event ``widget_action`` to track the behaviour of javascript widgets.
@@ -480,7 +428,7 @@ We are using the custom event ``widget_action`` to track the behaviour of javasc
+-------------------------------------------------+-------------------------------------------------+
-Properties for use with `widget_action` (not all widgets will use all options):
+Properties for use with `widget_action` (not all widgets will use all options):
- type
- **Required.**
@@ -492,16 +440,15 @@ Properties for use with `widget_action` (not all widgets will use all options):
- The thing that happened.
- Examples: "open", "accept", "timeout", "vote up".
- *Avoid “click”. If you want to track a click use `cta_click`.*
-- name
- - Give the widget a name.
- - This can help you group actions from the same widget, or make it easier to find
- the widget in the reports.
- - The dashes are not required but they're allowed if you want to match the element
- class or ID.
- - Examples: "dad-joke-banner", "focus-qr-code", "Join Firefox Modal"
- text
- How is this action labeled to the user?
- Examples: "Okay", "Check your protection report", "Get the app"
+- name
+ - Give the widget a name.
+ - You probably only need this optional attribute if the `text` value is not enough to tell the widgets apart.
+ - This can help you group actions from the same widget, or make it easier to find the widget in the reports.
+ - The dashes are not required but they're allowed if you want to match the element class or ID.
+ - Examples: "dad-joke-banner", "focus-qr-code", "Join Firefox Modal"
- non_interaction (boolean)
- True if the action was triggered by something other than a user gesture.
- If it's not included we assume the value is *false*
@@ -541,20 +488,10 @@ To use ``widget_action`` push your event to the ``dataLayer``:
text: 'Where is Relay available?'
});
-Default Browser
-~~~~~~~~~~~~~~~
-Trigger this event when a user sets their default browser to Firefox. It's an important conversion for us!
-.. code-block:: javascript
-
- window.dataLayer.push({
- event: 'default_browser_set',
- });
-
-
-User Scoped Custom Dimensions
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Dimension Set
+"""""""""""""
When using GA4 through GTM there isn’t a way to set user scoped custom dimensions without an accompanying event.
The custom event we use for this is `dimension_set`.
@@ -572,18 +509,6 @@ User scoped custom dimensions must be configured in GA4. The list of supported c
- `firefox_is_signed_in` (boolean)
-How can visitors opt out of GA?
--------------------------------
-
-Visitors to the website can opt-out of loading Google Analytics on our
-website by enabling `Do Not Track (DNT)`_ in their web browser. We
-facilitate this by using a `DNT helper`_ that our team maintains. We
-also respect `Global Privacy Control (GPC)`_ as an additional opt-out
-signal.
-
-Alternatively, visitors can also opt-out of GA by visiting the
-`cookie settings page`_, which is linked to in the main site
-footer on every page.
Glean
*****
diff --git a/docs/attribution/0004-mozilla-accounts.rst b/docs/attribution/0004-mozilla-accounts.rst
index efb8e93d6e8..efd8eadb028 100644
--- a/docs/attribution/0004-mozilla-accounts.rst
+++ b/docs/attribution/0004-mozilla-accounts.rst
@@ -169,7 +169,7 @@ The helper supports the following parameters:
+--------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------------------------------------------------------------------------+
| ``page_anchor`` | An optional page anchor for the link destination. | String | '#pricing' |
+--------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------------------------------------------------------------------------+
-| ``optional_attributes`` | An dictionary of key value pairs containing additional data attributes to include in the button. | Dictionary | {'data-cta-text': 'Get Mozilla VPN', 'data-cta-type': 'button', 'data-cta-position': 'navigation'} |
+| ``optional_attributes`` | An dictionary of key value pairs containing additional data attributes to include in the button. | Dictionary | {'data-cta-text': 'Get Mozilla VPN', 'data-cta-type': 'vpn', 'data-cta-position': 'navigation'} |
+--------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------------------------------------------------------------------------+
The cookie has the following configuration:
diff --git a/docs/l10n.rst b/docs/l10n.rst
index b5113a9af96..fe7c5f78f6a 100644
--- a/docs/l10n.rst
+++ b/docs/l10n.rst
@@ -212,7 +212,7 @@ attributes but we do occasionally pass classes with other tags.)
.. code-block:: jinja
- {% set created_attrs = 'href="%s" data-cta-type="link" data-cta-text="created by Mozilla"'|safe|format(url('mozorg.about.index')) %}
+ {% set created_attrs = 'href="%s" data-cta-text="created by Mozilla"'|safe|format(url('mozorg.about.index')) %}
{{ ftl('example-created', attrs=created_attrs) }}
{{ ftl('example-firefox-relay', class_name='class="mzp-c-wordmark mzp-t-wordmark-md mzp-t-product-relay"') }}
diff --git a/docs/mozilla-accounts.rst b/docs/mozilla-accounts.rst
index 0c0303953df..5dc0d2aa691 100644
--- a/docs/mozilla-accounts.rst
+++ b/docs/mozilla-accounts.rst
@@ -200,7 +200,7 @@ all support the same standard parameters:
+---------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------+
| optional_parameters | An dictionary of key value pairs containing additional parameters to append the the href. | Dictionary | {'s': 'ffpocket'} |
+---------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------+
-| optional_attributes | An dictionary of key value pairs containing additional data attributes to include in the button. | Dictionary | {'data-cta-text': 'Try Pocket Now', 'data-cta-type': 'activate pocket','data-cta-position': 'primary'} |
+| optional_attributes | An dictionary of key value pairs containing additional data attributes to include in the button. | Dictionary | {'data-cta-text': 'Try Pocket Now', 'data-cta-type': 'pocket','data-cta-position': 'primary'} |
+---------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------+
.. Note::
diff --git a/media/js/base/banners/mozilla-banner.es6.js b/media/js/base/banners/mozilla-banner.es6.js
index c8a6394566e..8e386a3bbc6 100644
--- a/media/js/base/banners/mozilla-banner.es6.js
+++ b/media/js/base/banners/mozilla-banner.es6.js
@@ -62,13 +62,6 @@ MozBanner.close = function () {
// Set a cookie to not display it again.
MozBanner.setCookie(MozBanner.id);
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eLabel: 'Banner Dismissal',
- 'data-banner-name': MozBanner.id,
- 'data-banner-dismissal': '1'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/media/js/base/core-datalayer-init.js b/media/js/base/core-datalayer-init.js
index c2e645c8e3c..412093b6ef3 100644
--- a/media/js/base/core-datalayer-init.js
+++ b/media/js/base/core-datalayer-init.js
@@ -47,11 +47,6 @@
var validParams = analytics.getAMOExperiment(params);
if (validParams) {
- // UA
- dataLayer.push({
- 'data-ex-name': validParams['experiment'],
- 'data-ex-variant': validParams['variation']
- });
// GA4
dataLayer.push({
event: 'experiment_view',
diff --git a/media/js/base/protocol/init-lang-switcher.es6.js b/media/js/base/protocol/init-lang-switcher.es6.js
index 04722bb42a1..c4759449522 100644
--- a/media/js/base/protocol/init-lang-switcher.es6.js
+++ b/media/js/base/protocol/init-lang-switcher.es6.js
@@ -10,12 +10,6 @@
import MzpLangSwitcher from '@mozilla-protocol/core/protocol/js/lang-switcher';
MzpLangSwitcher.init(function (previousLanguage, newLanguage) {
- // UA
- window.dataLayer.push({
- event: 'change-language',
- languageSelected: newLanguage,
- previousLanguage: previousLanguage
- });
//GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/media/js/base/send-to-device.es6.js b/media/js/base/send-to-device.es6.js
index 0c7dcaa708d..0002eef4c58 100644
--- a/media/js/base/send-to-device.es6.js
+++ b/media/js/base/send-to-device.es6.js
@@ -152,12 +152,6 @@ SendToDevice.prototype.onFormSuccess = function () {
this.enableForm();
- // UA
- window.dataLayer.push({
- event: 'send-to-device-success',
- input: 'email-address'
- });
-
// GA4
window.dataLayer.push({
event: 'send_to_device',
diff --git a/media/js/firefox/all/all-downloads-unified-init.es6.js b/media/js/firefox/all/all-downloads-unified-init.es6.js
index ece092d7a61..5653d87ce7f 100644
--- a/media/js/firefox/all/all-downloads-unified-init.es6.js
+++ b/media/js/firefox/all/all-downloads-unified-init.es6.js
@@ -25,12 +25,6 @@ import MzpModal from '@mozilla-protocol/core/protocol/js/modal';
className: 'help-modal'
});
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'link click',
- eLabel: eventLabel
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/media/js/firefox/challenge-the-default/challenge-the-default.es6.js b/media/js/firefox/challenge-the-default/challenge-the-default.es6.js
index a1cf8c23b85..f95da3daadc 100644
--- a/media/js/firefox/challenge-the-default/challenge-the-default.es6.js
+++ b/media/js/firefox/challenge-the-default/challenge-the-default.es6.js
@@ -49,13 +49,6 @@ for (let index = 0; index < summaries.length; index++) {
}
if (!parent.hasAttribute('open')) {
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'Open details',
- eLabel: label
- });
-
// GA4
window.dataLayer.push({
event: 'widget_action',
@@ -89,12 +82,6 @@ kittenButton.addEventListener(
}
});
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'Kitten modal'
- });
-
// GA4
window.dataLayer.push({
event: 'widget_action',
@@ -145,11 +132,6 @@ for (let index = 0; index < toggles.length; index++) {
input.parentElement.classList.toggle('animate-slide');
}
checkToggles();
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'Toggle change'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
@@ -179,11 +161,6 @@ heroClose.addEventListener(
heroEasterEgg.classList.toggle('hidden');
}, 4500);
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'Hero close'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
@@ -216,11 +193,6 @@ function isWednesday() {
wednesdayWrapper.classList.remove('animate-wednesday');
}, 5000);
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'Wednesday Lizard View'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/media/js/firefox/family/banner.es6.js b/media/js/firefox/family/banner.es6.js
index 8ff9f9a3038..0cfcec1068e 100644
--- a/media/js/firefox/family/banner.es6.js
+++ b/media/js/firefox/family/banner.es6.js
@@ -33,13 +33,6 @@ function showBanner() {
}
function hideBanner() {
- // UA
- window.dataLayer.push({
- eLabel: 'Banner Dismissal',
- 'data-banner-name': 'firefox-for-families-banner',
- 'data-banner-dismissal': '1',
- event: 'in-page-interaction'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/media/js/firefox/new/common/thanks-direct.es6.js b/media/js/firefox/new/common/thanks-direct.es6.js
index 2fe418a461e..45d98ea1b0d 100644
--- a/media/js/firefox/new/common/thanks-direct.es6.js
+++ b/media/js/firefox/new/common/thanks-direct.es6.js
@@ -82,12 +82,6 @@ function onSuccess() {
requestComplete = true;
// Fire GA event to log attribution success
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'direct-attribution',
- eLabel: 'success'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
@@ -108,12 +102,6 @@ function onTimeout() {
requestComplete = true;
// Fire GA event to log attribution timeout
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'direct-attribution',
- eLabel: 'timeout'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/media/js/firefox/new/desktop/download.js b/media/js/firefox/new/desktop/download.js
index a6ccc5b62bc..d073ae28dcb 100644
--- a/media/js/firefox/new/desktop/download.js
+++ b/media/js/firefox/new/desktop/download.js
@@ -188,12 +188,6 @@
function handleOpenProtectionReport(e) {
e.preventDefault();
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'link click',
- eLabel: 'See your protection report'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/media/js/firefox/set-as-default/thanks.js b/media/js/firefox/set-as-default/thanks.js
index b61649d36c9..8fc63323a15 100644
--- a/media/js/firefox/set-as-default/thanks.js
+++ b/media/js/firefox/set-as-default/thanks.js
@@ -27,8 +27,6 @@
function onDefaultSwitch() {
document.querySelector('main').classList.add('is-firefox-default');
- // UA
- trackEvent('default-changed', 'success');
// GA4
window.dataLayer.push({
event: 'default_browser_set'
@@ -50,15 +48,6 @@
});
}
- // UA
- function trackEvent(action, label) {
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: action,
- eLabel: label
- });
- }
-
function isSupported() {
return Mozilla.Client.isFirefoxDesktop && 'Promise' in window;
}
@@ -78,8 +67,6 @@
document
.querySelector('main')
.classList.add('is-firefox-default');
- // UA
- trackEvent('visited', 'firefox-default');
// GA4
window.dataLayer.push({
event: 'dimension_set',
@@ -101,8 +88,6 @@
timer = setInterval(checkForDefaultSwitch, 1000);
}, 1500);
}
- // UA
- trackEvent('visited', 'firefox-not-default');
// GA4
window.dataLayer.push({
event: 'dimension_set',
diff --git a/media/js/firefox/share-page.es6.js b/media/js/firefox/share-page.es6.js
index bab81f9df4d..464f10c91cb 100644
--- a/media/js/firefox/share-page.es6.js
+++ b/media/js/firefox/share-page.es6.js
@@ -25,13 +25,6 @@ function copyText() {
copyButtonText.style.display = 'block';
}, 2500);
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'copy',
- eLabel: 'Copy and share'
- });
-
// GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/media/js/firefox/welcome/welcome6.es6.js b/media/js/firefox/welcome/welcome6.es6.js
index 9459bbeda73..0cde7020536 100644
--- a/media/js/firefox/welcome/welcome6.es6.js
+++ b/media/js/firefox/welcome/welcome6.es6.js
@@ -30,12 +30,6 @@ trigger.addEventListener(
closeText: window.Mozilla.Utils.trans('global-close')
});
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'link click',
- eLabel: 'Get Firefox for mobile'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/media/js/firefox/welcome/welcome8.js b/media/js/firefox/welcome/welcome8.js
index eb2c5ccafad..288313875f7 100644
--- a/media/js/firefox/welcome/welcome8.js
+++ b/media/js/firefox/welcome/welcome8.js
@@ -9,12 +9,6 @@
function handleOpenProtectionReport(e) {
e.preventDefault();
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'link click',
- eLabel: 'View your protection report'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
@@ -27,12 +21,6 @@
function handleOpenProtectionReportLink(e) {
e.preventDefault();
- // UA
- window.dataLayer.push({
- event: 'in-page-interaction',
- eAction: 'link click',
- eLabel: 'See what`s blocked'
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/media/js/firefox/whatsnew/whatsnew-125-eu.js b/media/js/firefox/whatsnew/whatsnew-125-eu.js
index 32586f71ee5..1383a3f036a 100644
--- a/media/js/firefox/whatsnew/whatsnew-125-eu.js
+++ b/media/js/firefox/whatsnew/whatsnew-125-eu.js
@@ -10,26 +10,12 @@
// Log account status
Mozilla.Client.getFxaDetails(function (details) {
if (details.setup) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-125-eu',
- eLabel: 'firefox-signed-in'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_signed_in: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-125-eu',
- eLabel: 'firefox-signed-out'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
@@ -41,26 +27,12 @@
// Log default status
Mozilla.UITour.getConfiguration('appinfo', function (details) {
if (details.defaultBrowser) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-125-eu',
- eLabel: 'firefox-default'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_default: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-125-eu',
- eLabel: 'firefox-not-default'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
diff --git a/media/js/firefox/whatsnew/whatsnew-125-na.js b/media/js/firefox/whatsnew/whatsnew-125-na.js
index 69a3192f964..7fdda2897b6 100644
--- a/media/js/firefox/whatsnew/whatsnew-125-na.js
+++ b/media/js/firefox/whatsnew/whatsnew-125-na.js
@@ -11,13 +11,6 @@ function defaultTrue() {
document.querySelector('.wnp-default').classList.add('hide');
document.querySelector('.wnp-fast').classList.add('show');
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-125-na',
- eLabel: 'default-true'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
@@ -32,13 +25,6 @@ function defaultFalse() {
document.querySelector('.wnp-fast').classList.add('hide');
document.querySelector('.wnp-default').classList.add('show');
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-125-na',
- eLabel: 'default-false'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
@@ -68,26 +54,12 @@ function init() {
// Log account status
Mozilla.Client.getFxaDetails((details) => {
if (details.setup) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-125-na',
- eLabel: 'firefox-signed-in'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_signed_in: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-125-na',
- eLabel: 'firefox-signed-out'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
diff --git a/media/js/firefox/whatsnew/whatsnew-126.js b/media/js/firefox/whatsnew/whatsnew-126.js
index 6e29af92de2..f0123341397 100644
--- a/media/js/firefox/whatsnew/whatsnew-126.js
+++ b/media/js/firefox/whatsnew/whatsnew-126.js
@@ -9,26 +9,12 @@ Mozilla.Client.getFxaDetails((details) => {
'use strict';
if (details.setup) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-126',
- eLabel: 'firefox-signed-in'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_signed_in: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-126',
- eLabel: 'firefox-signed-out'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
@@ -42,26 +28,12 @@ Mozilla.UITour.getConfiguration('appinfo', (details) => {
'use strict';
if (details.defaultBrowser) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-126',
- eLabel: 'firefox-default'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_default: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-126',
- eLabel: 'firefox-not-default'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
diff --git a/media/js/firefox/whatsnew/whatsnew-126beta.js b/media/js/firefox/whatsnew/whatsnew-126beta.js
index fffb586757e..1383a3f036a 100644
--- a/media/js/firefox/whatsnew/whatsnew-126beta.js
+++ b/media/js/firefox/whatsnew/whatsnew-126beta.js
@@ -10,26 +10,12 @@
// Log account status
Mozilla.Client.getFxaDetails(function (details) {
if (details.setup) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-126beta',
- eLabel: 'firefox-signed-in'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_signed_in: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-126beta',
- eLabel: 'firefox-signed-out'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
@@ -41,26 +27,12 @@
// Log default status
Mozilla.UITour.getConfiguration('appinfo', function (details) {
if (details.defaultBrowser) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-126beta',
- eLabel: 'firefox-default'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_default: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-126beta',
- eLabel: 'firefox-not-default'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
diff --git a/media/js/firefox/whatsnew/whatsnew-127-eu.js b/media/js/firefox/whatsnew/whatsnew-127-eu.js
index d157a7da39d..758a92875b0 100644
--- a/media/js/firefox/whatsnew/whatsnew-127-eu.js
+++ b/media/js/firefox/whatsnew/whatsnew-127-eu.js
@@ -9,26 +9,12 @@ Mozilla.Client.getFxaDetails((details) => {
'use strict';
if (details.setup) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-127',
- eLabel: 'firefox-signed-in'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_signed_in: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-127',
- eLabel: 'firefox-signed-out'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
@@ -42,26 +28,12 @@ Mozilla.UITour.getConfiguration('appinfo', (details) => {
'use strict';
if (details.defaultBrowser) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-127',
- eLabel: 'firefox-default'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_default: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-127',
- eLabel: 'firefox-not-default'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
diff --git a/media/js/firefox/whatsnew/whatsnew-127-na.js b/media/js/firefox/whatsnew/whatsnew-127-na.js
index dbe9ca78b6d..f0123341397 100644
--- a/media/js/firefox/whatsnew/whatsnew-127-na.js
+++ b/media/js/firefox/whatsnew/whatsnew-127-na.js
@@ -9,26 +9,12 @@ Mozilla.Client.getFxaDetails((details) => {
'use strict';
if (details.setup) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-127',
- eLabel: 'firefox-signed-in'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_signed_in: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-127',
- eLabel: 'firefox-signed-out'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
@@ -42,26 +28,12 @@ Mozilla.UITour.getConfiguration('appinfo', (details) => {
'use strict';
if (details.defaultBrowser) {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-127',
- eLabel: 'firefox-default'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
firefox_is_default: true
});
} else {
- // UA
- window.dataLayer.push({
- event: 'non-interaction',
- eAction: 'whatsnew-127',
- eLabel: 'firefox-not-default'
- });
-
// GA4
window.dataLayer.push({
event: 'dimension_set',
diff --git a/media/js/newsletter/newsletter-init.es6.js b/media/js/newsletter/newsletter-init.es6.js
index 0981a671919..d105cb35032 100644
--- a/media/js/newsletter/newsletter-init.es6.js
+++ b/media/js/newsletter/newsletter-init.es6.js
@@ -14,11 +14,6 @@ const successCustomCallback = () => {
).map((newsletter) => newsletter.value);
if (window.dataLayer) {
- // UA
- window.dataLayer.push({
- event: 'newsletter-signup-success',
- newsletter: newsletters
- });
// GA4
for (let i = 0; i < newsletters.length; ++i) {
window.dataLayer.push({
diff --git a/media/js/products/vpn/landing-experiment-headlines.es6.js b/media/js/products/vpn/landing-experiment-headlines.es6.js
index db993685a03..6aa364fbfd5 100644
--- a/media/js/products/vpn/landing-experiment-headlines.es6.js
+++ b/media/js/products/vpn/landing-experiment-headlines.es6.js
@@ -11,11 +11,6 @@ const href = window.location.href;
const initTrafficCop = () => {
if (href.indexOf('entrypoint_variation=1') !== -1) {
- // UA
- window.dataLayer.push({
- 'data-ex-variant': 'vpn-headline-v1',
- 'data-ex-name': 'vpn-landing-headlines-test'
- });
// GA4
window.dataLayer.push({
event: 'experiment_view',
@@ -23,11 +18,6 @@ const initTrafficCop = () => {
variant: 'vpn-headline-v1'
});
} else if (href.indexOf('entrypoint_variation=2') !== -1) {
- // UA
- window.dataLayer.push({
- 'data-ex-variant': 'vpn-headline-v2',
- 'data-ex-name': 'vpn-landing-headlines-test'
- });
// GA4
window.dataLayer.push({
event: 'experiment_view',
@@ -35,11 +25,6 @@ const initTrafficCop = () => {
variant: 'vpn-headline-v2'
});
} else if (href.indexOf('entrypoint_variation=3') !== -1) {
- // UA
- window.dataLayer.push({
- 'data-ex-variant': 'vpn-headline-v3',
- 'data-ex-name': 'vpn-landing-headlines-test'
- });
// GA4
window.dataLayer.push({
event: 'experiment_view',
diff --git a/media/js/products/vpn/resource-center-article.es6.js b/media/js/products/vpn/resource-center-article.es6.js
index 1ce18d1248d..445acdc3120 100644
--- a/media/js/products/vpn/resource-center-article.es6.js
+++ b/media/js/products/vpn/resource-center-article.es6.js
@@ -9,12 +9,6 @@ const upvoteBtn = document.querySelector('.vpn-c-vote-btn.up');
const downvoteBtn = document.querySelector('.vpn-c-vote-btn.down');
function trackVoteInteraction(url, vote) {
- // UA
- window.dataLayer.push({
- event: 'vpn-article-vote',
- label: url,
- value: vote
- });
// GA4
window.dataLayer.push({
event: 'widget_action',
diff --git a/tests/unit/spec/firefox/all/all-downloads-unified.js b/tests/unit/spec/firefox/all/all-downloads-unified.js
index d65509a4e06..b3c5f888377 100644
--- a/tests/unit/spec/firefox/all/all-downloads-unified.js
+++ b/tests/unit/spec/firefox/all/all-downloads-unified.js
@@ -440,7 +440,7 @@ describe('all-downloads-unified.js', function () {
Google Play
- Send a download link to your phone
+ Send a download link to your phone
`;