UTM bien puestas en Meta Ads: la plantilla que uso
La plantilla de UTM que uso en Meta Ads: parámetros dinámicos, dónde se pega dentro del anuncio y los tres errores que rompen el dato antes de llegar a GA4.

En Meta Ads Manager hay un campo que vive al final de la edición del anuncio, debajo de la URL del sitio web, y que la mitad de las cuentas que abro tiene vacío. Se llama «URL parameters», parámetros de URL. Si está vacío, tu tienda no tiene ni idea de qué anuncio trajo el pedido. Solo te queda la versión de Meta. Y la versión de Meta es bastante generosa consigo misma.
Vamos al grano: te dejo la plantilla que usamos en Furia Funnel, dónde se pega exactamente y los tres errores que rompen el dato antes de que llegue a ninguna parte.
La plantilla
utm_source=meta&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_term={{adset.name}}&utm_id={{campaign.id}}
Se pega tal cual. Sin interrogación delante, sin ampersand al principio, sin la URL. Meta la engancha sola cuando sirve el anuncio.
Los dobles corchetes son los parámetros dinámicos de Meta: no escribes el nombre de la campaña a mano, lo rellena la plataforma en el momento del clic. Estos son los que uso:
| Parámetro dinámico | Devuelve |
|---|---|
{{campaign.name}} | el nombre de la campaña |
{{adset.name}} | el nombre del conjunto de anuncios |
{{ad.name}} | el nombre del anuncio |
{{campaign.id}} {{adset.id}} {{ad.id}} | los IDs numéricos |
{{site_source_name}} | fb, ig, an o msg |
{{placement}} | la ubicación exacta |
Dos decisiones que ahí van implícitas y que alguien me discutirá. La primera: dejo utm_source=meta fijo en vez de {{site_source_name}}. Sí, pierdo el desglose automático entre Facebook e Instagram, pero gano que el total de Meta sea una sola fila y no cuatro que hay que sumar a mano cada mes. Si quiero el desglose, añado &utm_placement={{placement}} y listo.
La segunda es utm_id={{campaign.id}}, y es la que más disgustos me ha ahorrado. Ahora te cuento por qué.
Dónde se pega
A nivel de anuncio. No existe en campaña ni en el conjunto: entras al anuncio, bajas hasta Destino, sitio web, y justo debajo del campo de la URL está «Parámetros de URL». Ese es el sitio.
Como es un campo por anuncio, si tienes cuarenta anuncios son cuarenta campos. Lo rellenas en uno, lo dejas guardado en un bloc de notas y duplicas, o tiras de edición masiva. No hay atajo elegante, es así desde siempre.
Un par de cosas que conviene saber. Si el anuncio es un carrusel con enlaces distintos por tarjeta, el campo se aplica a todos los enlaces. Y Meta va a añadir su fbclid por encima de lo tuyo: no rompe nada, conviven sin problema.

Los tres errores que rompen el dato
Mayúsculas
Google Analytics distingue mayúsculas. «Facebook» y «facebook» son dos filas distintas, y como {{campaign.name}} arrastra tu naming tal cual, si una campaña se llama «BF_Retargeting» y su hermana «bf_retargeting», en GA4 tienes dos campañas donde debería haber una. Naming en minúsculas siempre, en toda la cuenta. Es la regla más aburrida del oficio y la que más informes salva.
Espacios
Un conjunto que se llama «Retargeting 7 días» llega como Retargeting%207%20d%C3%ADas o con signos de suma, según quién lo lea. Añade pipes, tildes y algún emoji que alguien metió en el nombre de la campaña un viernes por la tarde, y ya tienes un valor que ni tú reconoces. Peor: hay formularios y CRMs que cortan el valor en el primer espacio y te guardan «Retargeting» a secas. Guiones bajos, sin tildes, sin caracteres raros.
Cambiar el naming a mitad de mes
Este es el fino. Renombras una campaña el día 14 porque el nombre ya no describía lo que hace, cosa razonable. A Meta le da igual, sigue siendo la misma campaña. A tu informe no: el {{campaign.name}} cambia con ella y la serie se parte en dos, con la mitad del gasto en cada trozo.
Por eso el utm_id={{campaign.id}}. El ID no cambia nunca, renombres lo que renombres. Es tu ancla cuando el naming se mueve.
Si vas a cambiar el naming de una cuenta, hazlo el día 1. Nunca a mitad de mes, y nunca en plena Black Friday.
Cómo comprobar que llega bien
Tres pasos, cinco minutos, y te evitan descubrir en el informe mensual que llevas tres semanas midiendo humo.
- Haz clic en tu propio anuncio. Ya publicado, desde el móvil, y mira la barra de direcciones al aterrizar. Los parámetros dinámicos no se resuelven en la vista previa, solo en el anuncio real. Si ves
{{campaign.name}}literal en la URL, algo has escrito mal. - GA4. Informes, Tiempo real, y ahí aparece la sesión con su fuente y su medio. Para el detalle por campaña o por anuncio, una exploración con las dimensiones de fuente/medio y campaña de la sesión. Los informes estándar tardan, así que no te agobies si a los diez minutos no cuadra nada.
- La tienda o el CRM. Este es el que se salta todo el mundo. En Shopify, abre un pedido reciente y mira la atribución. En un formulario de leads, comprueba que hay campos ocultos guardando las UTM y que llegan al CRM con el lead. Si el formulario no las guarda, tienes sesiones, no ventas.
El tercer punto es el que convierte esto en algo útil de verdad. GA4 te dice quién entró; la tienda te dice quién pagó. Y si quieres cruzar campaña con leads reales, la UTM tiene que sobrevivir el viaje entero, como te contaba en cruzar Meta Ads con el CRM.
Para qué sirve esto en realidad
No pones UTM para tener bonito el GA4. Las pones para poder contrastar.
En una cuenta nuestra el píxel declaró 40.420 € de ingresos en un periodo. La tienda, cruzando pedidos reales, decía 22.608 €. La diferencia no era un bug: era sobreatribución de manual, gente que ya iba a comprar, ventas de email colándose, la ventana de atribución haciendo su trabajo. Lo explico con calma en 40.000 declarados contra 22.600 reales y en por qué el ROAS de la plataforma no es el tuyo.
El píxel te cuenta lo que él cree que ha pasado. La UTM te cuenta lo que ha visto tu tienda. Cuando no cuadran, la que paga las facturas es la segunda.
Y una opinión que llevo defendiendo desde antes de montar nada: yo no escalo con el ROAS del píxel, ni de broma. He visto agencias facturar durante meses sobre ese número y no era mala fe, era que nadie había puesto una UTM decente para poder mirar el otro lado. Si tus campañas y tus conjuntos no cuadran entre Meta y Google Analytics, aquí desmenuzo por qué.
Eso es exactamente lo que hacemos en Furia Reports: enseñar el ROAS declarado y el real, uno al lado del otro, en el mismo informe. Pero el dato de la derecha solo existe si las UTM están puestas. Empieza por ahí.
Copia la plantilla, pégala en el próximo anuncio que subas, haz clic tú mismo y mira la URL. Si el nombre de la campaña aparece limpio, en minúsculas y sin porcentajes raros, ya estás por delante de la mayoría. Y cuando el cliente pregunte de dónde salió esa venta, vas a poder responderle con algo más que «lo dice Meta».
Preguntas frecuentes
¿Dónde se pegan las UTM en Meta Ads Manager?
A nivel de anuncio, no de campaña ni de conjunto. Dentro del anuncio, en la sección de Destino, debajo de la URL del sitio web, hay un campo llamado «Parámetros de URL» (URL parameters). Ahí va la cadena sola: sin interrogación al principio, sin la URL delante y sin ampersand inicial. Meta la engancha a tu enlace al servir el anuncio. Como es un campo por anuncio, lo práctico es rellenarlo en uno y duplicar, o usar la edición masiva.
¿Es mejor utm_source=meta o utm_source={{site_source_name}}?
Depende de para qué mires el dato. {{site_source_name}} devuelve fb, ig, an o msg, así que separa Facebook de Instagram automáticamente, pero te fragmenta la fuente en cuatro filas y complica cualquier suma rápida. Yo dejo utm_source=meta fijo y meto la ubicación en un parámetro aparte con {{placement}}. Así el total de Meta es una sola línea y el desglose sigue disponible cuando lo necesito, sin tener que agrupar a mano cada mes.
¿Por qué GA4 me muestra la misma campaña dos veces?
Casi siempre por mayúsculas o por un renombrado. Google Analytics distingue mayúsculas de minúsculas, así que «BF_Retargeting» y «bf_retargeting» son dos campañas distintas para él, aunque en Meta sea la misma. Y si cambias el nombre de la campaña a mitad de mes, el {{campaign.name}} cambia con ella y la serie se parte. La solución es naming en minúsculas y añadir utm_id={{campaign.id}}, que no cambia nunca aunque renombres.
Conecta Meta Ads en solo lectura y tu tienda o CRM, y mira el ROAS real junto al declarado en el mismo informe. Modo lector para compartirlo con el cliente. Desde 15 €/mes y 5 días de prueba sin tarjeta.


