Code Generator




            
<script>    
var googleForm = '***Exemplo: Obrigado pela mensagem!***';
        (function googleFormValidation() {
         if (document.body && document.body.innerText.includes(googleForm)) {
          console.log("Formulário Enviado");
          dataLayer.push({
            'event': '***nome do evento***'
          })
         } else {
          setTimeout(googleFormValidation, 500);
         }
        })();
</script>
            
        

            
<script>
document.querySelector('#***Exemplo: #smt-form**').addEventListener('click',function ()
{
 console.log(' clicked button')
   dataLayer.push({
                    'event': '***nome do evento***'
                  })
})
</script>
            
        

            
<script>
document.querySelector('.***Exemplo: .smt-whatsapp***').addEventListener('click',function ()
{
 console.log('. clicked button')
   dataLayer.push({
                    'event': '***nome do evento***'
                  })
})
</script>
            
        

            
<script>
document.querySelector('[***Exemplo: name="checkout"***]').addEventListener('click', function() {
    console.log('was clicked!');
    dataLayer.push({
                    'event': '***nome do evento***'
                  })
  });
</script>
           
        

            
<script>
document.querySelectorAll('[***Exemplo: name="add-to-cart"***]').forEach(function(btn) {
  btn.addEventListener('click', function() {
    console.log('was clicked!');
    dataLayer.push({
                    'event': '***nome do evento***'
                  })
  });
});
</script>
           
        

            
<script>
document.querySelectorAll('').forEach(function(btn) {
  btn.addEventListener('click', function() {
    console.log('***Exemplo: .add-to-cart***was clicked!');
    dataLayer.push({
                    'event': '***nome do evento***'
                  })
  });
});
</script>
           
        

Variáveis JS para GTM:
g_ECObj.email
g_ECObj.phone_number

            
<script>   
var g_EC = { email: '[type="email"]', phone_number: '[type="tel"]' };

window.g_setupEC = Object.create(null);

window.g_ECObj = Object.create(null);

var g_countryCode = '***Exemplo Codigo do pais: 55***';

document.addEventListener('input', g_setup_ECObj);

function g_setup_ECObj(e) {

  var input = e.target;

  for (i in g_EC) {

    if (input.matches(g_EC[i])) g_setupEC['g_' + i] = input.value;

  }

  g_save_toECObj();

}

function g_save_toECObj() {

  for (i in g_EC) {

    if (g_setupEC['g_' + i] && i === 'email' && g_validateMail(g_setupEC['g_' + i])) window.g_ECObj[i] = g_setupEC['g_' + i];

    if (g_setupEC['g_' + i] && i === 'phone_number') {

      var cleanedPhone = g_validatePhone(g_setupEC['g_' + i]);

      var finalPhone = cleanedPhone.includes('+') ? cleanedPhone : cleanedPhone.startsWith(g_countryCode) ? '+' + cleanedPhone : '+' + g_countryCode + cleanedPhone;

      finalPhone.length >= 11 && finalPhone.length <= 15 ? (window.g_ECObj[i] = finalPhone) : delete window.g_ECObj[i];

    }

  }

}

function g_validateMail(email) {

  return /\S+@\S+\.\S+/.test(email);

}

function g_validatePhone(tel) {

  return tel.replace(/\D/g, '');

}

g_save_toECObj();

    (function googleFormValidation() {
      if(document.body.innerText.includes('***Exemplo: Obrigado pela mensagem!***') && g_ECObj.email ) {
        console.log("¡Tus datos se enviaron con éxito!");
        dataLayer.push({
            'event' : '***nome do evento***'
        })
      }else {
        setTimeout(googleFormValidation, 500);
      }
    })();
</script>
            
        

Variáveis JS para GTM:
g_ECObj.email
g_ECObj.phone_number

            
<script>   
var g_EC = { email: '[type="email"]', phone_number: '[type="tel"]' };

window.g_setupEC = Object.create(null);

window.g_ECObj = Object.create(null);

var g_countryCode = '***Exemplo codigo do pais: 55***';

document.addEventListener('input', g_setup_ECObj);

function g_setup_ECObj(e) {

  var input = e.target;

  for (i in g_EC) {

    if (input.matches(g_EC[i])) g_setupEC['g_' + i] = input.value;

  }

  g_save_toECObj();

}

function g_save_toECObj() {

  for (i in g_EC) {

    if (g_setupEC['g_' + i] && i === 'email' && g_validateMail(g_setupEC['g_' + i])) window.g_ECObj[i] = g_setupEC['g_' + i];

    if (g_setupEC['g_' + i] && i === 'phone_number') {

      var cleanedPhone = g_validatePhone(g_setupEC['g_' + i]);

      var finalPhone = cleanedPhone.includes('+') ? cleanedPhone : cleanedPhone.startsWith(g_countryCode) ? '+' + cleanedPhone : '+' + g_countryCode + cleanedPhone;

      finalPhone.length >= 11 && finalPhone.length <= 15 ? (window.g_ECObj[i] = finalPhone) : delete window.g_ECObj[i];

    }

  }

}

function g_validateMail(email) {

  return /\S+@\S+\.\S+/.test(email);

}

function g_validatePhone(tel) {

  return tel.replace(/\D/g, '');

}

g_save_toECObj();

    document.addEventListener('click', function (e) {
        if (e.target.innerText == '***Exemplo: Enviar***' && g_ECObj.email) {
            console.log('Conversion');

            dataLayer.push({
                'event': '***nome do evento***'
            })

        }
    })
</script>
            
        

Variáveis JS para GTM:
g_ECObj.email
g_ECObj.phone_number

            
<script>   
 var g_EC = { email: '[type="email"]', phone_number: '[type="tel"]' };

window.g_setupEC = Object.create(null);

window.g_ECObj = Object.create(null);

var g_countryCode = '***Exemplo codigo do pais: 55***';

document.addEventListener('input', g_setup_ECObj);

function g_setup_ECObj(e) {

  var input = e.target;

  for (i in g_EC) {

    if (input.matches(g_EC[i])) g_setupEC['g_' + i] = input.value;

  }

  g_save_toECObj();

}

function g_save_toECObj() {

  for (i in g_EC) {

    if (g_setupEC['g_' + i] && i === 'email' && g_validateMail(g_setupEC['g_' + i])) window.g_ECObj[i] = g_setupEC['g_' + i];

    if (g_setupEC['g_' + i] && i === 'phone_number') {

      var cleanedPhone = g_validatePhone(g_setupEC['g_' + i]);

      var finalPhone = cleanedPhone.includes('+') ? cleanedPhone : cleanedPhone.startsWith(g_countryCode) ? '+' + cleanedPhone : '+' + g_countryCode + cleanedPhone;

      finalPhone.length >= 11 && finalPhone.length <= 15 ? (window.g_ECObj[i] = finalPhone) : delete window.g_ECObj[i];

    }

  }

}

function g_validateMail(email) {

  return /\S+@\S+\.\S+/.test(email);

}

function g_validatePhone(tel) {

  return tel.replace(/\D/g, '');

}

g_save_toECObj();
 
    document.querySelector('***Exemplo: .send-class #send-button***').addEventListener('click', function () {
        if (g_ECObj.email) {
            console.log('Conversion');
            dataLayer.push({
                'event': '***nome do evento***'
            })
        }
    })
</script>
            
        

            
<script>   
var g_shadowInterval = setInterval(function () {
    var g_shadowRoot = document.querySelector('***Exemplo: #shadow-root54***');


    if (!g_shadowRoot) return;
    clearInterval(g_shadowInterval);
    console.log('shadow root found');

g_shadowRoot.shadowRoot.querySelector('***Exemplo: #smt-whatsapp***').addEventListener('click', function(e)
        {
        console.log(' button clicked');
         dataLayer.push({
                    'event': '***nome do evento***'
                  })
        })
    }, 500);
</script>
            
        

	 
//Validar primeiro se este código pode ser usado!!! Coloca o seguinte no console com o seletor do iframe: 
//"document.querySelector(' ').contentWindow.document 
//Se devolve "Blocked a frame with origin "..." from accesing a cross origin frame." este codigo não funcionará, deve-se procurar alternativas.
           
<script>   
(function iframeClickValidation()
{   
var gIframeSelector = document.querySelector('***Exemplo: #iframe8976***')
	
 if(gIframeSelector != null)
    {
    console.log('iframe selector found');
 	gIframeSelector.contentDocument.querySelector('***Exemplo: #smt-whatsapp***').addEventListener('click',function ()
	   {
 		console.log('. clicked button')
   		dataLayer.push({
                    'event': '***nome do evento***'
      	            });
   	});
	} 
  else
  {
    setTimeout(iframeClickValidation, 500);
  }     
})(); 
</script>
            
        

            
//Validar primeiro se este código pode ser usado!!! Coloca o seguinte no console com o seletor do iframe: 
//"document.querySelector(' ').contentWindow.document 
//Se devolve "Blocked a frame with origin "..." from accesing a cross origin frame." este codigo não funcionará, deve-se procurar alternativas.
<script>   
 var googleForm = '***Exemplo: obrigado pela mensangem***';
 (function googleFormValidation() {
 var frame = document.querySelector('***iframe selector Exemplo: #iframe4978***')

 if (frame && frame.contentDocument && frame.contentDocument.body.innerText.includes(googleForm)) {
 dataLayer.push({
 'event': '***nome do evento***'
 });
 } else {
 setTimeout(googleFormValidation, 500);
 }
 })();
</script>
            
        

 
<script> 
//crear variable capa de datos:
 window.dataLayer = window.dataLayer || [];
 </script>
 
  

<script>  
// DOMContentLoaded
document.addEventListener('DOMContentLoaded', function() {
// Tu código aquí

});
</script>

            
<script>   
  window.addEventListener('message', function (m)
{
try
	{
    if (m.data.eventName === 'onFormSubmit')
    {
        console.log('Form has been sent');


        dataLayer.push({ event: 'hubSpotForm_sent' });
    }
	} catch (x) { }
});
</script>
            
        
variables js:
g_ECObj.email
g_ECObj.phone_number
  
                     

<script>   
window.g_ECObj = Object.create(null);
   window.addEventListener('message', function (m)
{try
 {
    if (m.data.eventName === 'onFormSubmit')
    {
        console.log('Form has been sent');
        var data_raw = m.data.data;
        window.g_ECObj = (data_raw.reduce(function (acc, e) 
      {
          
            if (e.name === 'email') 
            {   var gEmail = e.value.match(/\b(\S+@\S+\.\S+)\b/);
                acc = Object.assign(acc, { 'email': acc = gEmail[0]});
            }
 
            if (e.name === 'phone')
            {
            var g_countryCode = '***Codigo do pais Exemplo: 55***';
      		var cleanedPhone = e.value.replace(/\D/g, '');
     		var finalPhone = cleanedPhone.slice(0, g_countryCode.length).includes(g_countryCode) ? '+' + cleanedPhone : '+' + g_countryCode + cleanedPhone;
              
             if (finalPhone.length >= 11 && finalPhone.length <= 15)
             {
			  acc = Object.assign(acc, { 'phone_number': finalPhone});
             }
       
            
            }
          
            return acc;
        }, {}));
        dataLayer.push({ event: '***nome do evento***' });
    }
 } catch (x) { }
}); 
</script>
            
        
 
            
<script>   
window.addEventListener('message', function(e) {
  var jsonData = JSON.parse(e.data);
  if (jsonData.hasOwnProperty('data') && jsonData.data.eventKey === 'TPA_PUB_SUB_ChatWidget.onMessageSent') {
    console.log("MENSAJE ENVIADO");
    console.log(jsonData);
      dataLayer.push({
                  'event':'messageSent'
              })
        }
});
</script>
            
        
 
            
<script>   
window.addEventListener('message', function(event) {
  try {
    var message = JSON.parse(event.data);
    if (message.func === 'amoformsSuccessSubmit') {
      console.log('Formulario enviado');
      dataLayer.push({
        'event': 'iframe_amoCrmSent'
      });
    }
  } catch (error) {
  }
});
</script>
            
        
 
            
<script>   
window.addEventListener('message', function(e) {
  var jsonData = e.data;
  if (jsonData.type === 'WSP_POST_LEAD' && jsonData.data) {
    console.log('Received message with event string:', jsonData);
    dataLayer.push({
      'event': 'cliengoWspLead'
    });
  }
});
</script>
            
        

             
<script>   
    window.addEventListener('message', function (m) {
      try {
        if (m.data) {
          var data_raw = JSON.parse(m.data).visitor
          if (data_raw != null) {
            console.log('The form has been sent')
            dataLayer.push({
      'event': 'zohoFormSent'
    });
          }
        }
      } catch (error) { }
    })
</script>
            
        
 
            
<script>   
    window.addEventListener('message', function (m) {
      if (m.data.event.includes('event_scheduled')) {
        console.log('Scheduled appointment');
        dataLayer.push({
      'event': 'calendlyScheduled'
    });
      }
    })
</script>
            
        
codigo de Ejemplo:
   
                   
//variable con informacion que desea guardar.
var googleValue = document.querySelector("#ejemplo").innerText.replace(/\D/g,'')/ 100;
      
//guardar en localStorage
localStorage.setItem('googleValue', googleValue);
      
//Cargar del localStorage
localStorage.getItem('googleValue');


//Para GTM probar: window.googleValue = Object.create(null); var googleValue = document.querySelector("#ejemplo").innerText.replace(/\D/g,'')/ 100; //guardar en localStorage localStorage.setItem('googleValue', googleValue); //Cargar del localStorage localStorage.getItem('googleValue');
Order id que viene de la url de la pagina final de compra.
    
                 

function (){
return window.location.href.match(/id_order=(\d+)/)[1];
}
    
        
 
  
<script>   
window.addEventListener('message', function(e) { 
  if (e.data.upWidgeChatCallback) { 

    console.log('Received message with event string:', e.data); 
    dataLayer.push({'event':'upnifySent'})
  }
});        
  </script>   
   
        

Variáveis JS para GTM: g_ECObj.email

   
<script>   
window.addEventListener('message', function(e) { 
  if (e.data.upWidgeChatCallback) { 
        window.g_ECObj = Object.create(null);
    g_ECObj.email = e.data.upWidgeChatCallback.correo.match(/\S+@\S+\.\S+/); 
    console.log('Received message with event string:', e.data); 
    dataLayer.push({'event':'upnifySent'})
  }
});        
  </script>   
   
        
    
       
//tag global
<!--  Global site tag (gtag.js) - Google Ads: AW-XXXXX -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-XXXXX"></script>
<script> 
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'AW-XXXXX');
</script> 

//codigo para conversão de compra
 <!-- Event snippet for Test conversion page -->
  <script>
    gtag('event', 'conversion', {
      'send_to': 'AW-XXXXXX/XXXXX',
      'value': {{ checkout.total_price | divided_by: 100.0 }},
      'currency': '***BRL***',
      'transaction_id': '{{ order_number }}',
    });
  </script> 
        
  
        
   
        
{% assign fa_send_to = 'AW-XXXXX'%}
{% assign fa_include_tax_and_shipping = 'no' %}

{% comment %}DO NOT EDIT BELOW{% endcomment %}
{% if fa_google_coding %}{% assign fa_google_coding = true %}{%- else -%}{% assign fa_google_coding = false %}{%- endif -%}
{% if fa_include_tax_and_shipping == 'yes' %}
{% assign fa_checkout_price = checkout.total_price | divided_by: 100.0   %}
{%- else -%}
{% assign fa_checkout_price = checkout.subtotal_price | divided_by: 100.0  %}
{%- endif -%}
{% assign fa_google_ids = fa_send_to | split: "/"  %}
{% if fa_google_coding == false %}
<script async src="https://www.googletagmanager.com/gtag/js?id={{fa_google_ids[0]}}"></script>
{%- endif -%}
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', '{{fa_google_ids[0]}}', {'allow_enhanced_conversions':true});
 </script>
{% if first_time_accessed %}
<script>
  gtag('set', 'user_data', {
    "email": "{{ customer.email }}",
    "phone_number": "{{billing_address.phone}}",
    "address": {
      "first_name": "{{ billing_address.first_name }}",
      "last_name": "{{billing_address.last_name}}",
      "street": "{{billing_address.street}}",
      "city":"{{billing_address.city}}",
      "region": "{{billing_address.province}}",
      "postal_code": "{{billing_address.zip}}",
      "country": "{{billing_address.country}}"
    }
  });
  
  gtag('event', 'conversion', {
      'send_to': '{{ fa_send_to }}',
      'value': {{ fa_checkout_price }},
      'currency': '{{ currency }}',
      'transaction_id': '{{ order_number }}'
  });
 </script>
{% endif %}
        
  
        
 
          
<script>
    function gCheckSelector() {
    var gSelector = document.querySelector('***Exeplo: #iframe423***');
    if(gSelector){
    console.log('Selector found');
    //tu codigo aqui


        clearInterval(gCheckInterval);
        };
    };

    var gCheckInterval = setInterval(gCheckSelector, 2000);
 </script>

  
        
 
          
<script>
document.querySelector('***Exemplo: #inputbox-423***').addEventListener("keydown", function(event) {
            if (event.key === "Enter") {
                console.log('Enter')
   dataLayer.push({
                    'event': '***nome do evento***'
                  });
                };
            });
 </script>

  
        

No odoo clique em personalizar, no editor xml html procure o arquivo Web Layout inserir códigos em e
Este código substitui o código gtm original.
  
  
        
    <!-- Google Tag Manager head-->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&amp;l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXX');
</script>
<-- End Google Tag Manager -->


<!-- Google Tag Manager (noscript) body--> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) -->

            
<script>
document.querySelector('***Exemplo: #gatsby-focus-wrapper > div >***').addEventListener('click',function ()
{
 console.log(' clicked button')
   dataLayer.push({
                    'event': '***nome do evento***'
                  })
})
</script>
            
        

            
<script>
document.querySelector('***Exemplo: #form-673123***').addEventListener('click', function(event) {
event.preventDefault(); 
    
 console.log('formulario enviado');
  dataLayer.push({
        'event': '***nome do evento***'
    });

});
</script>        
    
        
Cambiar variable email segun el codigo que uses "g_ECObj.email"

              

<script async src="https://www.googletagmanager.com/gtag/js?id=AW-XXXXXXX"></script>  
<script> 
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

      gtag('config', 'AW-XXXXXX'), {'allow_enhanced_conversions':true};
</script>             
            
<script>        
gtag('set', 'user_data', { email: g_ECObj.email, phone_number: g_ECObj.phone_number  });
gtag('event', 'conversion', {'send_to': 'AW-XXXXX/XXXXXX'}); 
</script>         
 
   

            
<script>             
 window.addEventListener('message', function(e) {
 try {
  var jsonData = JSON.parse(e.data);
  if (jsonData.hasOwnProperty('data') && jsonData.data.eventType =='inputStaging') {
    console.log("MENSAJE ENVIADO");
      dataLayer.push({
                  'event':'messageSent'
              })
  }
}

            catch (x) { }
});       
</script>         

   

            
Para capturar o email ou telefone, insira os códigos a seguir como uma variável do tipo JavaScript Personalizado

Email
function() { var regex = /\S+@\S+.\S+/; var email = document.querySelector('SELETOR_AQUI').value; if(!email) return; if(!regex.test(email.value)) return; return email.value; }
Telefone
function() { var g_countryCode = "55"; var g_getPhone = document.querySelector('SELETOR_AQUI').value; g_getPhone = g_countryCode + g_getPhone; g_getPhone = g_getPhone.replace(/\D/g, '') if(g_getPhone.length >= 11 && g_getPhone.length <= 15) { return "+" + g_getPhone } }

by @glalejandro updated 16/07/2024

Organize seu código aqui: