true sitio setup seguimiento page how gtag_report_conversion gtag google for event etiqueta conversion codigo code allow_custom_scripts adwords javascript jquery google-adwords

javascript - sitio - gtag('' event conversion allow_custom_scripts '': true



Insertar el seguimiento de conversiones de Google Adwords con Javascript o jQuery (12)

Soy bastante nuevo en javascript, y probablemente ahí radique mi problema. Estoy tratando de rastrear las conversiones de AdWords que ocurren dentro de un widget en nuestro sitio. El usuario rellena un formulario y el resultado del widget se publica en el mismo div sin una actualización de página. El problema que estoy teniendo es cuando intento agregar o pegar en los dos elementos del script en el código de Google (que se muestra a continuación). La página se redirecciona a una página en blanco de Google (o al menos así se ve a través de FireBug) . Puedo proporcionar un método de devolución de llamada para los resultados del formulario, y ahí es donde intento insertar el código de seguimiento de AdWords. Como referencia, este es el código provisto por Google:

<script type="text/javascript"> /* <![CDATA[ */ var google_conversion_id = 993834405; var google_conversion_language = "en"; var google_conversion_format = "3"; var google_conversion_color = "ffffff"; var google_conversion_label = "bSpUCOP9iAIQpevy2QM"; /* ]]> */ </script> <script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js"> </script> <noscript> <div style="display:inline;"> <img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/993834405/?label=bSpUCOP9iAIQpevy2QM&amp;guid=ON&amp;script=0"/> </div> </noscript>

Bastante estándar. Entonces, lo que estoy tratando de hacer es insertar esto en la página de resultados usando el método de devolución de llamada (que se proporciona). Francamente, me redirigen no importa cuando intento insertar este código usando js o jQuery (ya sea en la carga de la página original o en la devolución de llamada), así que tal vez el bit de devolución de llamada sea irrelevante, pero es por eso que no solo lo pego en el código de la página.

He intentado varias formas diferentes de hacer esto, pero esto es lo que tengo actualmente (perdón por el descuido. ¡Solo estoy tratando de abrirme paso a través de esto en este momento!):

function matchResultsCallback(data){ var scriptTag = document.createElement(''script''); scriptTag.type = "text/javascript"; scriptTag.text = scriptTag.text + "/* <![CDATA[ *//n"; scriptTag.text = scriptTag.text + "var google_conversion_id /= 993834405/;/n"; scriptTag.text = scriptTag.text + "var google_conversion_language /= /"en/"/;/n"; scriptTag.text = scriptTag.text + "var google_conversion_format /= /"3/"/;/n"; scriptTag.text = scriptTag.text + "var google_conversion_color /= /"ffffff/"/;/n"; scriptTag.text = scriptTag.text + "var google_conversion_label /= /"bSpUCOP9iAIQpevy2QM/"/;/n"; scriptTag.text = scriptTag.text + "/* ]]> *//n"; $(''body'').append(scriptTag); $(''body'').append("<script type/=/"text//javascript/" src/=/"http://www.googleadservices.com/pagead/conversion.js/" />"); //I have also tried this bit above using the same method as ''scriptTag'' with no luck, this is just the most recent iteration. var scriptTag2 = document.createElement(''noscript''); var imgTag = document.createElement(''img''); imgTag.height = 1; imgTag.width = 1; imgTag.border = 0; imgTag.src = "http://www.googleadservices.com/pagead/conversion/993834405/?label=bSpUCOP9iAIQpevy2QM&amp;guid=ON&amp;script=0"; $(''body'').append(scriptTag2); $(''noscript'').append(imgTag); }

Lo realmente extraño es que cuando solo inserto una de las etiquetas de script (no importa cuál), no redirige. Solo redirige cuando intento insertar ambos.

También intenté poner la primera etiqueta de script en el código de la página original (ya que no hace ninguna llamada en cualquier lugar, solo está configurando variables) e insertando el archivo converssions.js y aún así se redirige.

Si es relevante, estoy usando Firefox 3.6.13, y he probado el código incluido con jQuery 1.3 y 1.5 (después de darme cuenta de que estábamos usando v1.3).

¡Sé que me estoy perdiendo algo! ¿Alguna sugerencia?


// Esto lo cuida para jQuery. El código se puede adaptar fácilmente para otras bibliotecas de JavaScript:

function googleTrackingPixel() { // set google variables as globals window.google_conversion_id = 1117861175 window.google_conversion_language = "en" window.google_conversion_format = "3" window.google_conversion_color = "ffffff" window.google_conversion_label = "Ll49CJnRpgUQ9-at5QM" window.google_conversion_value = 0 var oldDocWrite = document.write // save old doc write document.write = function(node){ // change doc write to be friendlier, temporary $("body").append(node) } $.getScript("http://www.googleadservices.com/pagead/conversion.js", function() { setTimeout(function() { // let the above script run, then replace doc.write document.write = oldDocWrite }, 100) }) }

// y lo llamarías en tu script en el evento así:

$("button").click( function() { googleTrackingPixel() })


Como ha visto, la etiqueta de conversión de google solo solicita un redibujado. Tuve que asegurarme de que se llamara cuando se redibujó una parte de la página. (Debido a un mal diseño del sitio web que no pude solucionar en este momento). Así que escribí una función para llamar desde un evento onClick.

Básicamente, todo lo que tienes que hacer es llamar a doConversion ();

Aquí es a lo que terminamos con:

// gothelp from from http://www.ewanheming.com/2012/01/web-analytics/website-tracking/adwords-page-event-conversion-tracking var Goal = function(id, label, value, url) { this.id = id; this.label = label; this.value = value; this.url = url; }; function trackAdWordsConversion(goal, callback) { // Create an image var img = document.createElement("img"); // An optional callback function to run follow up processed after the conversion has been tracked if(callback && typeof callback === "function") { img.onload = callback; } // Construct the tracking beacon using the goal parameters var trackingUrl = "http://www.googleadservices.com/pagead/conversion/"+goal.id; trackingUrl += "/?random="+new Date().getMilliseconds(); trackingUrl += "&value="+goal.value; trackingUrl += "&label="+goal.label; trackingUrl += "&guid=ON&script=0&url="+encodeURI(goal.url); img.src = trackingUrl; // Add the image to the page document.body.appendChild(img); // Don''t display the image img.style = "display: none;"; } function linkClick(link, goal) { try { // A function to redirect the user after the conversion event has been sent var linkClickCallback = function() { window.location = link.href; }; // Track the conversion trackAdWordsConversion(goal, linkClickCallback); // Don''t keep the user waiting too long in case there are problems setTimeout(linkClickCallback, 1000); // Stop the default link click return false; } catch(err) { // Ensure the user is still redirected if there''s an unexpected error in the code return true; } } function doConversion() { var g = new Goal(YOUR CODE,YOUR_COOKIE,0.0,location.href); return linkClick(this,g); }


Dado que el script utiliza document.write por lo que debe volver a escribirse

document.write = function(node){ // exactly what document.write should of been doing.. $("body").append(node); } window.google_tag_params = { prodid: pageId, pagetype: pageTypes[pageType] || "", value: "234324342" }; window.google_conversion_id = 2324849237; window.google_conversion_label = "u38234j32423j432kj4"; window.google_custom_params = window.google_tag_params; window.google_remarketing_only = true; $.getScript("http://www.googleadservices.com/pagead/conversion.js") .done(function() { // script is loaded. });

Ver https://gist.github.com/c7a316972128250d278c


Después de probar todo, el vínculo que Funka proporcionó ( articles.adamwrobel.com/2010/12/23/… ) fue lo que funcionó para mí. Como dijo, es aterrador sobrescribir document.write, pero parece que esto es lo que tienes que hacer a menos que puedas cargar el script antes de que se cargue la página.


En su cuenta de AdWords: si cambia el evento de seguimiento de conversiones a "Hacer clic" en lugar de "Cargar página", le proporcionará un código que crea una función. Crea un fragmento como este:

<!-- Google Code for Developer Contact Form Conversion Page In your html page, add the snippet and call goog_report_conversion when someone clicks on the chosen link or button. --> <script type="text/javascript"> /* <![CDATA[ */ goog_snippet_vars = function() { var w = window; w.google_conversion_id = <Your ID Here>; w.google_conversion_label = "<Your value here if any>"; w.google_remarketing_only = false; } // DO NOT CHANGE THE CODE BELOW. goog_report_conversion = function(url) { goog_snippet_vars(); window.google_conversion_format = "3"; window.google_is_call = true; var opt = new Object(); opt.onload_callback = function() { if (typeof(url) != ''undefined'') { window.location = url; } } var conv_handler = window[''google_trackConversion'']; if (typeof(conv_handler) == ''function'') { conv_handler(opt); } } /* ]]> */ </script> <script type="text/javascript" src="//www.googleadservices.com/pagead/conversion_async.js"> </script>

Luego, en su código, simplemente llame:

goog_report_conversion();

O para un enlace o imagen, haga clic en:

<a href="" onclick="goog_report_conversion();">click here</a>


Esto funciona para mí:

window.google_trackConversion({ google_conversion_id: 000000000, conversion_label : "xxxxxxxxxxxx", google_remarketing_only: false, onload_callback : function(){ //do something :) } });


Hoy en día es conveniente usar la etiqueta asincrónica en http://www.googleadservices.com/pagead/conversion_async.js que expone la función window.google_trackConversion .

Esta función se puede usar en cualquier momento. Por ejemplo, después de enviar un formulario, como en su caso.

Consulte developers.google.com/adwords-remarketing-tag/asynchronous

Actualización 2018

La situación ha cambiado y parece que ahora tiene más opciones con gtag.js: https://developers.google.com/adwords-remarketing-tag/


Intenté todas las maneras de incluir conversion.js manualmente, todo cargó el script, pero no ejecutó más lo que necesitábamos dentro del script, hay una solución simple.

Simplemente ponga su código de conversión en un HTML separado y cárguelo en un iframe.

Encontré código para hacer eso en http://www.benjaminkim.com/ que parecía funcionar bien.

function ppcconversion() { var iframe = document.createElement(''iframe''); iframe.style.width = ''0px''; iframe.style.height = ''0px''; document.body.appendChild(iframe); iframe.src = ''/track.html''; // put URL to tracking code here. };

entonces simplemente llame a ppcconversion () en cualquier lugar del JS que quiera registrarlo.


Si está utilizando jQuery en sus páginas, ¿por qué no usa el método getScript del mismo para sondear el script de seguimiento de conversiones después de establecer las variables requeridas?

Esto es lo que suelo hacer, una vez que recibo una respuesta exitosa de mis llamadas AJAX.

var google_conversion_id = <Your ID Here>; var google_conversion_language = "en"; var google_conversion_format = "3"; var google_conversion_color = "ffffff"; var google_conversion_label = "<Your Label here>"; var google_conversion_value = 0; if (100) { google_conversion_value = <Your value here if any>; } $jQ.getScript( "http://www.googleadservices.com/pagead/conversion.js" );

Esto funciona bien para mí. Si quieres un ejemplo más detallado:

$.ajax({ async: true, type: "POST", dataType: "json", url: <Your URL>, data: _data, success: function( json ) { // Do something // ... // Track conversion var google_conversion_id = <Your ID Here>; var google_conversion_language = "en"; var google_conversion_format = "3"; var google_conversion_color = "ffffff"; var google_conversion_label = "<Your Label here>"; var google_conversion_value = 0; if (100) { google_conversion_value = <Your value here if any>; } $.getScript( "http://www.googleadservices.com/pagead/conversion.js" ); } // success });

Si usa otras bibliotecas como Mootools o Prototype, estoy seguro de que tienen métodos integrados similares. Este AFAIK es uno de los enfoques más limpios.


Todo lo que hago es devolver el código (o en nuestro caso, una imagen) junto con el mensaje de "éxito" en la devolución de llamada.

Cuando se envía un formulario de contacto o se completa y envía un formulario de registro, lo publicamos en un script php usando jQuery, y luego enviamos un mensaje de agradecimiento a un div:

" $first_name , gracias por solicitar más información. Un representante se pondrá en contacto con usted en breve".

... seguido por el gif 1x1 que proporciona Google.

Aquí está el jQuery:

$.post(''script.php'',{''first_name'':first_name,''last_name'':last_name,''email'':email,''phone1'':phone1,''password'':password,},function(data){ var result=data.split("|"); if(result[0] ===''success''){ $(''#return'').html(result[1] + $result[2]);

Y el php ...

echo ''success|''.$first_name.'', Thanks for requesting more information. A representative will contact you shortly.|<img height="1" width="1" alt="" src="http://www.googleadservices.com/pagead/conversion/xxxxxxxx/imp.gif?value=0&amp;label=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&amp;script=0"/>'';

Es posible que deba ingresar un " document.location.reload(); " si no está siendo recogido por google


este código simple funcionó para mí (la versión $ .getScript no).

var image = new Image(1,1); image.src = ''http://www.googleadservices.com/pagead/conversion/'' + id + ''/?label='' + label + '' &guid=ON&script=0'';


Para cualquiera que todavía esté buscando una buena solución para esto, Google ahora admite las conversiones AJAX de forma nativa a través de su API de Google Analytics.

Puedes hacerlo haciendo una llamada a API de evento en Google Analytics. Lo que hace es configurar un evento de Analytics, vincularlo a un objetivo y luego importar ese objetivo en AdWords como una conversión. Es un proceso largo pero es una solución limpia.

Echa un vistazo a esta página para obtener un tutorial