- Formulaires ciblés : #wpforms-form-23 et #wpforms-form-4777 - Boutons de soumission : #wpforms-submit-23 et #wpforms-submit-4777 Notes : - Ce script n’effectue PAS le hashage SHA-256. Si votre conteneur GTM n’a pas de hachage auto côté balise, hashez côté site avant push (RGPD). - L’anti-doublon se réinitialise après 2 secondes pour permettre une seconde soumission légitime (nouvelle page, nouvel essai, etc.). ======================================================================= */ // Assure l’existence du dataLayer AVANT tout push window.dataLayer = window.dataLayer || []; // Déclare gtag s’il n’est pas déjà défini ailleurs // (si déjà présent, cette définition sera ignorée au profit de l’existante) window.gtag = window.gtag || function(){ dataLayer.push(arguments); }; // Initialisation de la propriété Google Ads // - 'js' : horodatage d’initialisation // - 'config' : active les fonctionnalités de base de la propriété gtag('js', new Date()); gtag('config', 'AW-844414202'); document.addEventListener('DOMContentLoaded', function () { // Liste explicite des formulaires suivis pour contrôler le périmètre const IDS = [23, 4777]; // Registre anti-doublon par formulaire // - Objectif : ne pousser qu’UN seul event "formEmailCaptured" par soumission // - Problème courant : certains thèmes déclenchent click + submit const pushed = {}; // ex. { '23': true, '4777': false } // Helper : retourne l’input email trouvé dans le formulaire // - Priorité : input[type="email"] // - Fallback : input dont le name contient "email" (insensible à la casse) function getEmail(form){ const field = form.querySelector('input[type="email"], input[name*="email" i]'); if(!field) return null; const value = field.value.trim().toLowerCase(); // Filtrage minimal : présence de '@' // (éviter validations complexes côté client, laisser GTM/serveur gérer le reste) return value.includes('@') ? value : null; } // Helper : pousse l’email dans dataLayer et user_data pour Enhanced Conversions function pushEmail(formId, email){ // Stop si pas d’email ou déjà poussé récemment pour ce formId if(!email || pushed[formId]) return; // Marque le formId comme "déjà poussé" pour couper le doublon click+submit pushed[formId] = true; // 1) Event custom pour debug/analytics (visible dans GTM Preview) window.dataLayer.push({ event: 'formEmailCaptured', // Nom d’event lisible dans GTM capturedFormId: String(formId), // "23" ou "4777" (string pour normaliser) emailViaDataLayer: email // Email brut (hash si fait côté site) }); // 2) Données utilisateur pour Enhanced Conversions (lu par GTM côté balise) // - Si vous hashez côté site : remplacez { email } par { email_hash: ... } window.dataLayer.user_data = { email: email }; // Réinitialisation anti-doublon après un délai court // - Permet une seconde soumission légitime sans recharger toute la page setTimeout(function(){ pushed[formId] = false; }, 2000); } // Attache les écouteurs sur les formulaires ciblés IDS.forEach(function(formNumericId){ const formId = String(formNumericId); // normalise en string const form = document.getElementById('wpforms-form-' + formId); if(!form) return; // Form non présent sur la page → on ignore // Écoute "submit" au niveau du formulaire // - Capture true : intercepte tôt le cycle d’événements // - Couvre aussi la touche "Enter" form.addEventListener('submit', function(){ const email = getEmail(form); pushEmail(formId, email); }, { capture: true }); // Écoute "click" sur le bouton si présent // - Certains thèmes empêchent "submit" ou le déclenchent tardivement // - Ce fallback couvre les interactions directes sur le bouton const btn = document.getElementById('wpforms-submit-' + formId); if(btn){ btn.addEventListener('click', function(){ const email = getEmail(form); pushEmail(formId, email); }); } }); });

Catégorie : Villes

Les lois physiques notre seule limite

Architecte Chelles : conseil pour trouver !

Etes-vous en train de planifier la construction de nouveaux bâtiments, immeubles ou locaux ? Ou désirez-vous un aménagement qui réponde plus aux normes actuelles ? Etes-vous à la recherche d’un architecte Chelles professionnel ? Vous avez frappé à la bonne porte. Megastructures propose des solutions clé en main, et vous accompagne dans la réalisation de vos…
Lire la suite

Architecte Claye-Souilly

Forte de plus de 10 ans d’expérience, Megastructures est une entreprise dont l’activité repose sur les grands projets de maîtrise d’œuvre. Elle vous accompagne, à cœur joie, dans les projets d’architectures. Elle intervient dans plus de 80 villes de France, y compris dans le secteur de Marne-la-Vallée, dans la région de l’Ile-de-France. En ce sens,…
Lire la suite

Architecte Meaux : comment choisir ?

Si vous êtes à la recherche d’un architecte Meaux pour concrétiser un projet de construction ou d’extension, découvrez tout ce que vous avez besoin de savoir à ce sujet ici. Conseils pour bien choisir son architecte à Meaux ! Il est souvent nécessaire de s’adonner à certains travaux d’envergure. Que ce soit pour le design d’intérieur…
Lire la suite

Top