From 527383dcdb906670caf5f1be90e0679ee1ed5a58 Mon Sep 17 00:00:00 2001 From: David Stover <56250584+davidmoltin@users.noreply.github.com> Date: Tue, 5 Nov 2024 11:21:01 -0500 Subject: [PATCH 1/3] UTM Source handling --- docusaurus.config.js | 8 +++- static/js/utm-handler.js | 84 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 static/js/utm-handler.js diff --git a/docusaurus.config.js b/docusaurus.config.js index 50b0f77e..48847594 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -1329,7 +1329,7 @@ const config = { { to: '/docs/studio/Settings/Domain-Management/Connecting-your-Namecheap-Domain', from: '/docs/cx-studio/Settings/Domain-Management/Connecting-your-Namecheap-Domain'}, { to: '/docs/api/pxm/catalog/get-catalog-by-id', from: '/docs/pxm/catalogs/catalog-configuration/get-all-catalogs'}, { to: '/docs/api/carts/transactions', from: '/docs/commerce-cloud/payments/transactions/get-all-transactions'}, - { to: '/docs/api/pxm/catalog/get-by-context-all-nodes', from: '/docs/pxm/catalogs/shopper-catalog/get-a-hierarchys-nodes'}, + { to: '/docs/api/pxm/catalog/get-by-context-all-hierarchies', from: '/docs/pxm/catalogs/shopper-catalog/get-a-hierarchys-nodes'}, { to: '/changelog/Studio-Release-Notes/Release-190-February-14-2024', from: '/docs/cx-studio/Release-Notes/Release-190-February-14-2024'}, { to: '/changelog/Studio-Release-Notes/Release-190-February-14-2024', from: '/docs/cx-studio/Release-Notes/Release-191-February-27-2024'}, { to: '/docs/api/pxm/products/build-child-products', from: '/docs/pxm/products/pxm-product-variations/child-products-api/build-child-products'}, @@ -1653,6 +1653,12 @@ const config = { }), ], ], + scripts: [ + { + src: '/js/utm-handler.js', + async: true, + }, + ], }; module.exports = config; diff --git a/static/js/utm-handler.js b/static/js/utm-handler.js new file mode 100644 index 00000000..1306820f --- /dev/null +++ b/static/js/utm-handler.js @@ -0,0 +1,84 @@ +// Default UTM parameters +const DEFAULT_UTM = { + utm_source: 'docs', + utm_medium: 'documentation', + utm_campaign: 'elasticpath_docs' +}; + +// Get UTM params from URL if they exist +function getUrlUtmParams() { + const urlParams = new URLSearchParams(window.location.search); + const utmParams = {}; + + ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'].forEach(param => { + if (urlParams.has(param)) { + utmParams[param] = urlParams.get(param); + } + }); + + return utmParams; +} + +// Store UTM params in sessionStorage +function storeUtmParams(params) { + sessionStorage.setItem('utmParams', JSON.stringify(params)); +} + +// Get stored UTM params +function getStoredUtmParams() { + const stored = sessionStorage.getItem('utmParams'); + return stored ? JSON.parse(stored) : null; +} + +// Add UTM params to a URL +function addUtmToUrl(url) { + try { + const urlObj = new URL(url); + + // Don't modify external URLs + if (!urlObj.hostname.includes('elasticpath.dev')) { + return url; + } + + // Get stored or default UTM params + const utmParams = getStoredUtmParams() || DEFAULT_UTM; + + // Add UTM params to URL + Object.entries(utmParams).forEach(([key, value]) => { + urlObj.searchParams.set(key, value); + }); + + return urlObj.toString(); + } catch (e) { + // Return original URL if invalid + return url; + } +} + +// Initialize UTM handling +function initUtmHandler() { + // Store UTM params from URL if present + const urlUtmParams = getUrlUtmParams(); + if (Object.keys(urlUtmParams).length > 0) { + storeUtmParams(urlUtmParams); + } + + // Add click event listener to handle links + document.addEventListener('click', (e) => { + const link = e.target.closest('a'); + if (link && link.href) { + const modifiedUrl = addUtmToUrl(link.href); + if (modifiedUrl !== link.href) { + e.preventDefault(); + window.location.href = modifiedUrl; + } + } + }); +} + +// Run when DOM is loaded +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initUtmHandler); +} else { + initUtmHandler(); +} \ No newline at end of file From 9134a855a750eeeda5813831b4c10845db46d949 Mon Sep 17 00:00:00 2001 From: David Stover <56250584+davidmoltin@users.noreply.github.com> Date: Tue, 5 Nov 2024 12:28:10 -0500 Subject: [PATCH 2/3] Add UTM campaign sources --- docusaurus.config.js | 6 ++++- src/snippets/resourceDOCS.html | 9 ++++++++ static/js/utm-handler.js | 42 +++++++++++++++++++++++++++++----- 3 files changed, 50 insertions(+), 7 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 48847594..877d24b7 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -252,10 +252,12 @@ const config = { { label: "Changelog", to: "/changelog-landing", + datautmcampaign: "changelog", }, { label: "Support", to: "https://support.elasticpath.com", + dataUtmCampaign: "support", }, { type: "search", @@ -266,12 +268,14 @@ const config = { href: "https://www.elasticpath.com/get-in-touch", position: "right", className: "navbar-book-demo", + dataUtmCampaign: "get-in-touch", }, { label: "Free Trial", href: "https://useast.cm.elasticpath.com/free-trial", position: "right", className: "dev-portal-signup dev-portal-link", + dataUtmCampaign: "free-trial", }, ], }, @@ -313,7 +317,7 @@ const config = { }, { label: "GitHub", - href: "https://github.com/facebook/docusaurus", + href: "https://github.com/elasticpath", }, ], }, diff --git a/src/snippets/resourceDOCS.html b/src/snippets/resourceDOCS.html index f89b2bdc..b2f69432 100644 --- a/src/snippets/resourceDOCS.html +++ b/src/snippets/resourceDOCS.html @@ -40,6 +40,7 @@ onmouseover="document.body.setAttribute('docs-menu', 'cm')" class="flex cursor-pointer !mt-2 items-start justify-start gap-2 border-none bg-transparent text-black dark:text-white" href="/ui" + datautmcampaign="commerce-manager" >