Skip to content

Automatiza negativas de Google Ads para ahorrar presupuesto

Un amigo me ha pedido que le eche un cable con sus campañas de SEM.

Llevaba semanas observando que los search terms estaban llenos de búsquedas genéricas: términos sin intención de solicitud de info real (leads, es una web de cursos) o muy alejados de un intención real de formarse, que le comían presupuesto sin convertir.

El problema no era nuevo, pero tampoco tenía tiempo de ponerse a revisar cada semana el informe de términos de búsqueda y añadir negativos a mano. Así que montamos algo para que una IA lo haga sola.

El problema: términos genéricos que no deberían estar ahí

En campañas de Search, según el tipo de estrategia de puja que elijas, Google puede sentirse tentado de mostrar tus anuncios ante búsquedas que se parecen a tus keywords pero que no son lo que buscas. Si vendes preparación para oposiciones de bibliotecas, puedes acabar apareciendo para cosas tan genéricas como «empleo del ayuntamiento» o «academias oposiciones logroño». O peor. No son tus clientes. Pero el clic te lo cobran igual.

La solución clásica es revisar los search terms a mano, marcar los malos y añadirlos como negativos. Funciona, pero hay que hacerlo de forma constante porque cada semana entran términos nuevos. Si lo haces una vez y lo olvidas, el problema vuelve. Y si tienes varias campañas activas, se convierte en trabajo de verdad.

Dos scripts y un Google Sheet en el medio

Lo que montamos tiene tres piezas. Un Google Sheet hace de almacén central. Un script de Google Ads exporta los datos. Un script PHP en local los procesa y genera las listas. Y luego otro script de Google Ads las sube de vuelta a la cuenta.

A las 6:30 de la mañana, el script de exportación (ExportST.js) vuelca en el sheet los términos de búsqueda de los últimos 12 meses: campaña, término, impresiones, clics, coste y conversiones.

Una hora después, el script de análisis lee esos datos, aplica la lógica y escribe las listas en pestañas separadas por campaña: IA-Neg-RADIODIAGNOSTICO, IA-Neg-FISIOTERAPIA, y así con cada una.

Luego el script de importación (ImportarNegativas.js) lee esas pestañas y sincroniza las listas directamente en Google Ads, en concordancia exacta.

El resultado: cada mañana, prácticamente antes de que nadie haya abierto el ordenador, las listas de negativos están actualizadas con los datos más frescos disponibles.

Cómo se decide qué se niega y qué no

Aquí es donde la cosa se pone interesante. No se niega todo lo que parece genérico: primero se clasifica cada término según su rendimiento histórico. La función calcCalif() le asigna una etiqueta a cada search term en función del coste y las conversiones acumuladas:

Estrella    → convierte bien (CPA < 20 €)              → nunca se niega
Vaca        → convierte, aunque más caro (CPA < 120 €) → nunca se niega
Interrogante → algo de gasto, cero conversiones          → candidato a negativa
LastreNada  → más de 40 € gastados, cero conversiones   → negativa clara
LastreCara  → convierte pero CPA > 120 €               → negativa
NoData      → menos de 5 € gastados, sin datos fiables  → se trata como negativa

Los términos Estrella y Vaca están protegidos: aunque parezcan genéricos, han demostrado que convierten y no se tocan. El resto pasa por las reglas de campaña.

Cada campaña tiene configurada una regla que define qué términos «salva» de la negativización. Por ejemplo, la campaña de radiodiagnóstico salva cualquier search term que contenga «radio», «rayos», «imagen» o «medicina nuclear». Así se puede ser agresivo con la limpieza sin cargarse los términos que sí encajan dentro de la especialidad. Hay también un filtro técnico que descarta términos con más de 80 caracteres o más de 10 palabras, que Google Ads no aceptaría como negativos de todas formas.

Lo mejor: funciona solo y se actualiza a diario

El script de análisis está registrado como tarea programada en Windows mediante el Programador de tareas. Se ejecuta con privilegios elevados para evitar problemas de permisos. Eso significa que en cuanto los datos del export de las 6:30 están en el sheet, el sistema los procesa, genera las listas actualizadas y las deja listas para que el script de importación las suba a Google Ads. Sin intervención manual, sin acordarse de nada, sin abrir ningún panel.

Cada ejecución guarda en local un snapshot con las listas del día en formato Markdown, y deja una fila en la pestaña LogNegativas del sheet con el número de keywords por lista. Así se puede ver la evolución: si de repente una lista pasa de 200 a 800 términos, algo está pasando y merece revisarlo. El límite de Google Ads para una lista de negativos es de 5.000 palabras; para las campañas que generan más volumen, hay una lista secundaria que recoge el excedente para que ningún término se pierda.

La idea no era montarle algo sofisticado. Era montarle algo que no tuviera que tocar. Que hiciera su trabajo cada mañana y ya está. Y que poco a poco fuera limpiando sus campañas, evitando clics de muy baja cualificación.

Una semana después de ponerlo en marcha, mi amigo me contó que los search terms «empezaban a tener mucha mejor pinta» y que el CPA de las campañas había bajado.

Las listas de negativas por sí solas no hacen milagros, pero sí evitan que el presupuesto se diluya en búsquedas que no tienen nada que hacer en tus campañas. Y hacerlo de forma automática, todos los días, sin acordarte de nada, cambia bastante la ecuación.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *