// ============================================= // CLARIMATE - UTM CAPTURE & STRIPE LINK UPDATE // Version: 2.0 - Session-only persistence // ============================================= (function() { 'use strict'; function captureUTM() { var params = new URLSearchParams(window.location.search); var utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'sfmc_id']; var utmData = {}; var hasUTM = false; utmKeys.forEach(function(key) { if (params.has(key)) { utmData[key] = params.get(key); hasUTM = true; } }); // Sauvegarder la langue actuelle var path = window.location.pathname.toLowerCase(); var lang = 'en'; if (path.indexOf('/fr/') !== -1) lang = 'fr'; else if (path.indexOf('/es/') !== -1) lang = 'es'; else if (path.indexOf('/de/') !== -1) lang = 'de'; sessionStorage.setItem('clarimate_lang', lang); if (hasUTM) { sessionStorage.setItem('clarimate_utm', JSON.stringify(utmData)); console.log('[ClariMate] UTM captured (session only):', utmData); } else { sessionStorage.removeItem('clarimate_utm'); console.log('[ClariMate] Organic visit - cleared previous UTM data'); } return hasUTM; } function updateStripeLinks() { var stripeLinks = document.querySelectorAll('a[href*="buy.stripe.com"]'); if (stripeLinks.length === 0) return; var saved = sessionStorage.getItem('clarimate_utm'); var refId = 'organic_-_organic_-_organic_-_organic_-_none'; if (saved) { try { var data = JSON.parse(saved); refId = [data.utm_source || 'organic', data.utm_medium || 'organic', data.utm_campaign || 'organic', data.utm_content || 'organic', data.sfmc_id || 'none'].join('_-_'); } catch (e) { console.warn('[ClariMate] Error parsing UTM:', e); } } stripeLinks.forEach(function(link) { try { var url = new URL(link.href); url.searchParams.set('client_reference_id', refId); link.href = url.toString(); console.log('[ClariMate] Stripe link updated:', refId); } catch (e) {} }); } function setupLanguageSwitcher() { var selectors = 'a[href*="/fr/"], a[href*="/en/"], a[href*="/es/"], a[href*="/de/"], .wpml-ls-link, a[hreflang]'; document.addEventListener('click', function(e) { var link = e.target.closest(selectors); if (!link) return; var saved = sessionStorage.getItem('clarimate_utm'); var currentParams = new URLSearchParams(window.location.search); var hasCurrentUTM = currentParams.has('utm_source') || currentParams.has('utm_medium') || currentParams.has('utm_campaign'); if (!saved || !hasCurrentUTM) return; try { var data = JSON.parse(saved); var newUrl = new URL(link.href); Object.keys(data).forEach(function(key) { newUrl.searchParams.set(key, data[key]); }); e.preventDefault(); window.location.href = newUrl.toString(); console.log('[ClariMate] Language switch with UTM propagation'); } catch (err) { console.warn('[ClariMate] Error in language switcher:', err); } }); } captureUTM(); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { updateStripeLinks(); setupLanguageSwitcher(); }); } else { updateStripeLinks(); setupLanguageSwitcher(); } window.addEventListener('load', function() { setTimeout(updateStripeLinks, 500); }); })(); Clarimate Clarimate