52

No pierdas más dinero con Google Ads

7372Puntos

hace 6 años

¡Seguro estás perdiendo dinero con Google Ads!

El presupuesto que no se optimiza, es dinero que tiramos a la basura. Si esto te suena familiar, seguramente estás buscando optimizar tus gastos en Google Adwords. La optimización de campañas es ideal para mejorar los resultados de conversión o darle mejor rendimiento a presupuestos pequeños o limitados. A lo largo de mi carrera como anunciante digital, he aprendido de 5 errores frecuentes al gestionar o planear campañas de publicidad digital.

1. Entiende el mercado antes de anunciar

Antes de crear una campaña en esta fabulosa herramienta, te aconsejo que hagas una investigación profunda sobre tu mercado. Un tip útil es contestar estas preguntas:

  • ¿Qué tipo de comportamientos o intereses tienen tus posibles clientes (o prospectos) que conecten con tu servicio o producto? Ejemplo: son viajeros, son amantes a la tecnología, les gusta el conocimiento.
  • ¿Qué tipo de búsquedas pueden llegar hacer? Este es el momento para identificar palabras claves o keywords, google trends y keyword planner son las herramientas que te pueden ayudar a identificarlas.
  • Y por supuesto ¿como está apareciendo tu competencia en motores de búsqueda? esto es fundamental y te ayudará a identificar las búsquedas más competidas del mercado.

Entender el mercado antes de anunciar te ayudará a planear una campaña exitosa y fácil de optimizar, evitando desperdiciar el dinero en un universo que tal vez no nos interesa conquistar.

2. Fija objetivos de campaña

¡Es hora de fijar objetivos de campaña! No fijar objetivos por fase o etapa de campaña, es un error muy frecuente. Dividir nuestros esfuerzos a partir de un embudo o funnel de conversión nos ayuda a entender el comportamiento de nuestro mercado. Así, ejecutar nuestro plan será más fácil pues nos ayuda a estructurar campañas desde un objetivo estratégico desde la configuración. Esto te ayudará a ejecutar presupuestos en objetivos medibles.

Estos son los objetivos que existen:
Objetivo google ads.PNG

Así puedes usar estos objetivos y los tipos de campañas:
Funnel tipos de campañas.PNG

3. Baja el CPC estructurando estratégicamente tus campañas:

La falta de estructura en una campaña no sólo es el error más grave, si no el más costoso. Estructurar significa segmentar y/o agrupar correctamente las palabras claves partiendo de campañas y grupos de anuncios. Para explicarlo mejor, mostaré un ejemplo de una campaña de búsqueda:

Una correcta estructura de campañas, es dividir tus palabras de marca, otras para intereses y otras para la categoría. Cuando tenemos una sola campaña sin estas clasificaciones, el resultado es un CPC más caro y perderás ranking por calidad. Este es un ejemplo de cómo estructurar tu campaña basados en un funnel o embudo de conversión:

Funnel search google adwords.PNG

4. Usa palabras negativas:

negativo y positivo.PNG

Las palabras negativas son aquellas en las que NO nos interesa aparecer. Puedes fijarlas desde el inicio de la campaña, categorizarlas y armar una lista en tu biblioteca compartida (o shared library), así será cada vez más fácil implementar una campaña. Aplica esta táctica para emplazamientos (o placement), vídeos y sitios en los que no quieras que tu sitio web se publique. Hacerlo correctamente te ayudará ahorrar mucho dinero en tu presupuesto.

menu palabras claves negativas.png

5. Controla tu presupuesto diario:

presupuetos en adwords.PNG

Este ha sido un dolor de cabeza para mi y muchos colegas, sobre todo si estamos trabajando en agencias o para clientes que controlan fuertemente el presupuesto de campañas independientes. Mi consejo es controlar el consumo diario para no llevarte sorpresas, pues el algoritmo de Google aumenta el presupuesto automáticamente diario si tus anuncios se están mostrando con mayor frecuencia, es decir si fijamos un presupuesto diario de $100 USD, un día se gastarán $200 USD y quizás no te des cuenta.

Te recomiendo implementar el siguiente Script que te enviará alertas si estás a punto de superar tu presupuesto diario:

// Copyright 2018, Fox Project All Rights Reserved.///**
 * @nombre Alerta de Presupuestos
 *
 * @detalles: Este script envía un resumen en tabla de las campañas que consumieron un porcentaje diario del presupuesto definido por el usuario. Dicha tabla contiene los campos, Impressions,Clicks,Conversions,CPC,CPA
 *
 * @distribucion: Fox Project Team 
 * @version 1.0
 * Use under your own responsability none of the authors are responsible for any misuse of this script
 */var thresholdPercentage = 0.90// Esta es la fracción del presupuesto diario gastado por campaña la cual se enviará por mail las siguientes estadisticas:var toEmail = '[email protected]'; // Todos los mails serán enviados a esta dirección en caso de ser mas de uno escribirlos separado por comas (Ej:"[email protected],[email protected]")var clientName = 'Nombre de la cuenta'; // Nombre del clientefunctiongetTodaysSpend(campaign)
{
  var stats = campaign.getStatsFor('TODAY');
  return stats.getCost();    
}

functiongetTodaysStats(campaign)
{
  var stats = campaign.getStatsFor('TODAY');
  return stats;
}

functionmain()
{
  var account = AdWordsApp.currentAccount();    
 
  var subject = 'Campañas en la cuenta '+account.getCustomerId()+' ('+clientName+') que han consumido al menos ' + (thresholdPercentage * 100).toFixed(0) + '% de su presupuesto diario'; // Asunto del mailvar outMatrix = [];    
    
  var externalCID = account.getCustomerId();
  
  var campaignIterator = AdWordsApp.campaigns().get();
  var shoppingCampaignIterator = AdWordsApp.shoppingCampaigns().get();
  
  while (shoppingCampaignIterator.hasNext())
  {
    var campaign = shoppingCampaignIterator.next();
    var currBudget = campaign.getBudget().getAmount();
    var campaignName = campaign.getName();
    
    var todaysStats = getTodaysStats(campaign);
    
    var todaysSpend = todaysStats.getCost();
    var todaysImpressions = todaysStats.getImpressions();
    var todaysClicks = todaysStats.getClicks();
    var todaysConversions = todaysStats.getConversions();
    var todaysCPA = (todaysConversions != 0) ? (todaysSpend / todaysConversions).toFixed(2) : 'N/A';
    var todaysCPC = (todaysClicks != 0 ) ? (todaysSpend / todaysClicks).toFixed(2) : 'N/A';
    
    var exhaustedPercentage = ((todaysSpend / currBudget)*100).toFixed(1) + '%';
    var thresholdSpend = thresholdPercentage * currBudget;
    
    
    if ( todaysSpend >= thresholdSpend )
    {
      outMatrix.push([ externalCID, campaignName, currBudget, todaysSpend, exhaustedPercentage, todaysImpressions, todaysClicks, todaysConversions, todaysCPC, todaysCPA ]);
    }
  }
  Logger.log(outMatrix);
  while (campaignIterator.hasNext())
  {
    var campaign = campaignIterator.next();
    var currBudget = campaign.getBudget().getAmount();
    var campaignName = campaign.getName();
    
    var todaysStats = getTodaysStats(campaign);
    
    var todaysSpend = todaysStats.getCost();
    var todaysImpressions = todaysStats.getImpressions();
    var todaysClicks = todaysStats.getClicks();
    var todaysConversions = todaysStats.getConversions();
    var todaysCPA = (todaysConversions != 0) ? (todaysSpend / todaysConversions).toFixed(2) : 'N/A';
    var todaysCPC = (todaysClicks != 0 ) ? (todaysSpend / todaysClicks).toFixed(2) : 'N/A';
    
    var exhaustedPercentage = (todaysSpend / currBudget * 100).toFixed(1) + '%';
    var thresholdSpend = thresholdPercentage * currBudget;
    
    if ( todaysSpend >= thresholdSpend )
    {
      outMatrix.push([ externalCID, campaignName, currBudget, todaysSpend, exhaustedPercentage, todaysImpressions, todaysClicks, todaysConversions, todaysCPC, todaysCPA ]);
    }
  }
  Logger.log(outMatrix);
  var csvOutput = matrixToCSV(outMatrix);
    
  var blobOutput = Utilities.newBlob(csvOutput);
  blobOutput.setName('campaign_stats.csv');
 var html = [];
  html.push(
    '<html>',
      '<body>',
        '<table width=1000 cellpadding=0 border=0 cellspacing=0>',
          "<tr bgcolor='#3c78d8'>",
            '<td width=500>',
              "<div style='font: normal 18pt verdana, sans-serif; " +
              "padding: 3px 10px; color: white'>Campañas cerca de agotar presupuesto</div>",
            '</td>',
            '<td align=right>',
              "<div style='font: normal 18pt verdana, sans-serif; " +
              "padding: 3px 10px; color: white'>",
               AdWordsApp.currentAccount().getCustomerId(), '</h1>',
            '</td>',
            '</tr>',
          '</table>',
          '<table width=1000 cellpadding=0 border=1 border-color: gray cellspacing=2px>',
            "<tr bgcolor='#ddd'>", 
              "<td style='font: 10pt verdana, sans-serif; " +
                  'padding: 5px 0px 5px 5px; background-color: #ddd; ' +
                  "text-align: center'>Cuenta</td>",
              "<td style='font: 10pt verdana, sans-serif; " +
                  'padding: 5px 0px 5px 5px; background-color: #ddd; ' +
                  "text-align: center'>Campaña</td>",
              "<td style='font: 10pt verdana, sans-serif; " +
                  'padding: 5px 0px 5x 5px; background-color: #ddd; ' +
                  "text-align: center'>Presupuesto diario</td>",
              "<td style='font: 10pt verdana, sans-serif; " +
                  'padding: 5px 0px 5x 5px; background-color: #ddd; ' +
                  "text-align: center'>Consumido</td>",
              "<td style='font: 10pt verdana, sans-serif; " +
                  'padding: 5px 0px 5x 5px; background-color: #ddd; ' +
                  "text-align: center'>Agotado(%)</td>",
              "<td style='font: 10pt verdana, sans-serif; " +
                  'padding: 5px 0px 5x 5px; background-color: #ddd; ' +
                  "text-align: center'>Impressions</td>",
              "<td style='font: 10pt verdana, sans-serif; " +
                  'padding: 5px 0px 5x 5px; background-color: #ddd; ' +
                  "text-align: center'>Clicks</td>",                  
              "<td style='font: 10pt verdana, sans-serif; " +
                  'padding: 5px 0px 5x 5px; background-color: #ddd; ' +
                  "text-align: center'>Conversions</td>",                  
              "<td style='font: 10pt verdana, sans-serif; " +
                  'padding: 5px 0px 5x 5px; background-color: #ddd; ' +
                  "text-align: center'>CPC</td>",                                    
              "<td style='font: 10pt verdana, sans-serif; " +
                  'padding: 5px 0px 5x 5px; background-color: #ddd; ' +
                  "text-align: center'>CPA</td>",    
            '</tr>');
  outMatrix.forEach(function(el) {
   var i=0; html.push(emailRow(
      el[i],el[i+1],el[i+2],el[i+3],el[i+4],el[i+5],el[i+6],el[i+7],el[i+8],el[i+9]));
         });
  html.push('</table>', '</body>', '</html>')
                    
  functionemailRow(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) {
  var html = [];
  html.push('<tr>',
      "<td style='padding: 5px 10px; text-align: center'>" + c1 + '</td>',
      "<td style='padding: 0px 10px; text-align: center'>" + c2 + '</td>',
      "<td style='padding: 0px 10px; text-align: center'>" + c3 + '</td>',
      "<td style='padding: 0px 10px; text-align: center'>" + c4 + '</td>',
      "<td style='padding: 0px 10px; text-align: center'>" + c5 + '</td>',
      "<td style='padding: 0px 10px; text-align: center'>" + c6 + '</td>',
      "<td style='padding: 0px 10px; text-align: center'>" + c7 + '</td>',
      "<td style='padding: 0px 10px; text-align: center'>" + c8 + '</td>',
      "<td style='padding: 0px 10px; text-align: center'>" + c9 + '</td>',
      "<td style='padding: 0px 10px; text-align: center'>" + c10 +'</td>',
         '</tr>');
  return html.join('\n');
}
  if (outMatrix.length > 1) {   
  MailApp.sendEmail(toEmail, subject,'', {
    htmlBody: html.join('\n'),
    name: 'Stats Emailer',
    attachments: [blobOutput.getAs(MimeType.CSV)]
  });
    
 }
}

functionmatrixToCSV(matrix)
{
    csv = new csvWriter(',', '"');
    csvOutput = csv.arrayToCSV(matrix)  
    return csvOutput;
}

functioncsvWriter(del, enc) 
{
	this.del = del || ','; // CSV Delimiterthis.enc = enc || '"'; // CSV Enclosure// Convertir objeto en columna CSVthis.escapeCol = function (col) {
		if(isNaN(col)) {
			// No es booleano or numericoif (!col) {
				// is null or undefined
				col = '';
			} else {
				// is string or object
				col = String(col);
				if (col.length > 0) {
					// use regex to test for del, enc, \r or \n// if(new RegExp( '[' + this.del + this.enc + '\r\n]' ).test(col)) {// escape inline enclosure
					col = col.split( this.enc ).join( this.enc + this.enc );
				
					// wrap with enclosure
					col = this.enc + col + this.enc;
				}
			}
		}
		return col;
	};
	
	// Convierta una matriz de columnas en una fila CSV escapadathis.arrayToRow = function (arr) {
		var arr2 = arr.slice(0);
		
		var i, ii = arr2.length;
		for(i = 0; i < ii; i++) {
			arr2[i] = this.escapeCol(arr2[i]);
		}
		return arr2.join(this.del);
	};
	
	// Convierta una matriz bidimensional en un archivo CSV de múltiples filas escapadothis.arrayToCSV = function (arr) {
		var arr2 = arr.slice(0);
		
		var i, ii = arr2.length;
		for(i = 0; i < ii; i++) {
			arr2[i] = this.arrayToRow(arr2[i]);
		}
		return arr2.join("\r\n");
	};
}

Aprender de los errores nos hace crecer. Pronto lanzaremos un nuevo y renovado curso de Google Adwords. ¿Qué errores han cometido al ejecutar tus campañas? Escríbeme tu respuesta en los comentarios y aprendamos de los errores. Sigue aprendiendo con los cursos de marketing de la escuela.

Soy Ivon López outbound specialist en Platzi sígueme en:

Twitter: @ilorelogi
instagram: @ilorelogi

Ivon Lorena
Ivon Lorena
ilorelo

7372Puntos

hace 6 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
5
1163Puntos

Muy buenos tips, todos los días aprendemos mas de este profesional equipo de Platzi.

5
6399Puntos

¡¿Dónde estaba este post hace un año?! Gran trabajo. Muchas gracias.

3
21542Puntos

Buenos apuntes en el momento justo 😃. Gracias

3
1705Puntos

Un error que me paso fue poner muchos anuncios que enlazan directamente a la página de inicio para una búsqueda específica. Hacer un anuncio genérico, con multitud de palabras clave que nos lleve a nuestro web sólo nos hacer gastar dinero y botar la conversión.

Aunque tengamos un gran presupuesto para gastar es necesario que configuremos distintas campañas y anuncios específicos para ganar en visibilidad y lograr nuestros objetivos.

2
7372Puntos
6 años

@sanrodriguez, estas en lo cierto, este también es un error muy frecuento por ello la base es estructurar las campañas de acuerdo a un objetivo.

Y esto que dices “Aunque tengamos un gran presupuesto para gastar es necesario que configuremos distintas campañas y anuncios específicos para ganar en visibilidad y lograr nuestros objetivos” es el resumen de todo, gracias por tu aporte.

3
1261Puntos

Muy buen post realmente cada dia se aprende algo nuevo gracias a esta maravillosa comunidad platzi!

2
60831Puntos

muy buenos tips, realmente Googel ads es una plataforma muy poderosa cuando se sabe usar de la manera correcta, una pregunta ¿como se coloca el script que menciona? en la pagina web?

2
7Puntos

Hola Ivon.
Copio el Script y sale error
Unterminated string literal. (line 108)

1
7372Puntos
6 años

Hola @wquiros,
Debes pegarlo pero debes leer atentamente porque hay varias cositas que te pide que coloques o cambies, revisalo de nuevo y me cuentas.

2
490Puntos

Hai Cutai Manai Guanai No tengo idea de esto… yo solo se instalar servidores web.

2
7372Puntos
6 años

Pronto lanzaremos nuestro curso actualizado de Google Ads, aprenderás de esto y mucho más.
Saludos,

2
3957Puntos

¡Maravilloso!

2
11787Puntos

Gracias por el artículo.
Tener en cuenta los errores que se cometen ayuda mucho a no cometerlos en el futuro.

Ahora, yo apenas estoy aprendiendo todavía, pero no sé si haya un error en la tabla del punto #2, de Objetivos de campañas, ya que se repiten los títulos de “Tipos de campaña” y “Objetivos de campaña”. ¿Debería ser Search y Clientes potenciales?

Bueno, lo bueno fue que aun así se entendió perfecto el tema que nos compartes. ¡Gracias de nuevo! 😄

1
7372Puntos
6 años

@SoloSoyJota, gracias a ti y a tu comentario, ya quedo ajustado.

Mil gracias

2
604Puntos

Excelente articulo Gracias.

2
2552Puntos

Muy buen post !!! Ya me dieron ganas de entrar al curso de Google analytics. Muchas gracias 😃

1
7372Puntos
6 años

Gracias por tu comentario, para aprender sobre este tema pronto tendremos un curso actualizado de Google Ads.
Saludos,

1
21542Puntos
6 años

Espero que incluyan en la actualización del curso de Adwords, algo de Adwords Express.✌️😜

1
7Puntos

Hola Ivon
Copio el Script y al guardarlo me da el mensaje
Unterminated string literal. (line 108)

1
2104Puntos

¡Muy buen artículo! Muchísimas gracias por esto y mas aún por renovar el curso de Ads, estuve a punto de terminar el de 2017, pero la verdad es que estaba muy incompleto, entre otras cosas, de hecho le pedí directamente a Freddy por twitter que lo revisaran y por lo que veo, me hicieron caso! Wuujuu. Gracias de nuevo.

1
7372Puntos
6 años

@titicilia si pronto saldrá, renovado y muy completo 😃