Integración técnica del código de AdSense

La forma en que insertas el código de AdSense en tu sitio web tiene un impacto directo en el rendimiento, la experiencia de usuario y los ingresos. Esta sección técnica cubre desde la inserción básica hasta técnicas avanzadas de optimización.

Integrar AdSense es coordinar una biblioteca asíncrona, espacios de anuncio, consentimiento y una página que siga siendo usable cuando la respuesta llega tarde o no hay demanda. El objetivo técnico no es forzar una impresión: es emitir una solicitud válida, una vez, en un espacio previsto, después de aplicar las señales de privacidad que correspondan. Los identificadores del ejemplo son ficticios y deben sustituirse por los que genera la cuenta propia.

1. Carga asíncrona y ciclo de una solicitud

Integrar AdSense exige coordinar la biblioteca asíncrona, los espacios, el consentimiento y la experiencia de lectura. El objetivo es emitir solicitudes válidas sin forzar impresiones ni interacciones; los identificadores mostrados aquí son ficticios.

Ese orden evita bloquear el analizador HTML, aunque no garantiza que la creatividad se pinte antes del primer render. La petición depende de consentimiento, configuración de la cuenta, elegibilidad del sitio, disponibilidad de anuncios y conectividad del navegador. No se debe llamar al bloque como una forma de solicitar clics ni recargarlo repetidamente: una implementación correcta no manipula la respuesta ni el tráfico.

2. Anatomía del bloque adaptable

El script a nivel de sitio identifica la cuenta; los atributos del elemento describen el espacio. data-ad-slot no es un ID inventado por la página: es el número del bloque creado en la interfaz de AdSense. El tamaño adaptable debe tener un contenedor con dimensiones coherentes para que el diseño no salte cuando llega la respuesta.

CampoResponsabilidadComprobación
asyncDescarga la biblioteca sin detener el análisis del documento.Network muestra una sola petición del script por documento, salvo caché o navegación nueva.
data-ad-clientIdentifica el cliente editor, con forma ca-pub-….Debe coincidir exactamente con el cliente de la cuenta conectada al sitio.
data-ad-slotIdentifica el bloque de anuncio individual.Copiarlo de la interfaz; un valor ausente o incorrecto puede dejar el bloque sin servir.
data-ad-formatDeclara el formato; auto permite que el tamaño se adapte al espacio.La anchura del contenedor debe ser calculable y no estar oculta al solicitarlo.
data-full-width-responsiveSolicita comportamiento adaptable a anchura completa en pantallas compatibles.Usar el valor textual true solo cuando corresponda al bloque.
Ciclo técnico de una solicitud publicitariaEl navegador aplica el consentimiento, carga una biblioteca asíncrona, registra un bloque y recibe un anuncio o una respuesta sin anuncio.Documento HTMLslot en el layoutCMP y señalesdecisión del usuarioadsbygoogle.jscarga asíncronafilledcreatividadunfilledsin anuncio
La respuesta puede completar el bloque o dejarlo sin anuncio; la implementación debe contemplar ambos estados.

3. Ejemplo de código manual

El siguiente fragmento muestra la estructura de un bloque adaptable. ca-pub-0000000000000000 y 1234567890 son valores ficticios: no pertenecen a una cuenta y no deben copiarse para producción. En un sitio real, la biblioteca se instala una vez en la plantilla; aquí se muestra junta con el bloque para que se vea la relación entre sus atributos.

<!-- Ejemplo didáctico: ID de editor y slot ficticios. -->
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0000000000000000" crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; min-height:280px"
     data-ad-client="ca-pub-0000000000000000"
     data-ad-slot="1234567890"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
  (window.adsbygoogle = window.adsbygoogle || []).push({});
</script>

Valida el cliente, el slot, el consentimiento y la visibilidad del bloque. Reserva espacio con dimensiones coherentes para reducir saltos de diseño, sin ocultar ni forzar interacciones. Para carga diferida, revisa Core Web Vitals.

4. Auto Ads frente a bloques manuales

DecisiónAuto AdsBloque manual
Quién elige la posiciónAdSense selecciona oportunidades y formatos dentro de las opciones de la cuenta.El editor coloca el slot en un punto explícito del HTML o de la plantilla.
Control del layoutSe configuran exclusiones, páginas y formatos; la colocación concreta puede variar según página y dispositivo.Es predecible por plantilla, pero el editor asume la responsabilidad de la posición y la separación visual.
DiagnósticoRevisar el código global, vista previa de Ads y exclusiones activas.Inspeccionar cada slot, su client/slot ID y su llamada de inicialización.
Uso recomendadoProbar cuando se quiere cobertura automatizada con revisión de experiencia.Usar cuando se necesita una ubicación editorial concreta o medición por bloque.

Son modelos que se pueden combinar en determinadas configuraciones, pero hay que entender si Auto Ads también puede optimizar bloques existentes. No dupliques solicitudes ni supongas que añadir más espacios mejora automáticamente el rendimiento. Compara periodos equivalentes y vigila velocidad, cobertura, páginas vistas y experiencia real.

Espacio publicitario

5. Consent Mode v2 y ciclo de vida de la CMP

Consent Mode comunica a las etiquetas de Google el estado que devuelve el mecanismo de consentimiento; no muestra por sí mismo un banner, no almacena las preferencias y no sustituye una CMP ni el análisis jurídico. Las señales publicitarias relevantes son ad_storage, ad_user_data y ad_personalization. ads_data_redaction es un ajuste de tratamiento de datos, no un cuarto estado de consentimiento. La elección debe reflejar de forma fiel lo que el usuario aceptó, rechazó o retiró.

window.dataLayer = window.dataLayer || [];
function gtag(){ dataLayer.push(arguments); }

// Valores de ejemplo: definirlos según la CMP y el ámbito aplicable.
gtag("consent", "default", {
  ad_storage: "denied",
  ad_user_data: "denied",
  ad_personalization: "denied",
  analytics_storage: "denied",
  wait_for_update: 500
});
gtag("set", "ads_data_redaction", true);

function actualizarConsentimiento(estado) {
  gtag("consent", "update", {
    ad_storage: estado.almacenamientoAds,
    ad_user_data: estado.datosUsuarioAds,
    ad_personalization: estado.personalizacionAds,
    analytics_storage: estado.almacenamientoAnalitica
  });
}

El fragmento es un esqueleto, no un banner de consentimiento listo para producción. La CMP debe llamar a actualizarConsentimiento con la decisión real y persistirla según sus reglas; no se deben convertir opciones de rechazo en granted. Google exige una CMP certificada que integre TCF para servir anuncios personalizados en EEE, Reino Unido y Suiza, y TCF v2.3 para cadenas generadas desde el 1 de marzo de 2026. Si no existe consentimiento para Purpose 1 en el flujo TCF, no se debe invocar el tag de Google.

En un sitio estático, el estado por defecto y el tag tienen que aparecer en el orden correcto en cada documento, antes de comandos que envíen medición o solicitudes publicitarias. En una SPA, inicializa la integración una vez al arrancar la aplicación; registra cambios de consentimiento en la ruta donde ocurren y antes de navegar. En cada vista nueva, crea slots nuevos solo cuando el CMP haya actualizado las señales; no vuelvas a descargar la biblioteca ni reuses un mismo <ins> ya procesado. La guía de políticas y privacidad detalla el marco que acompaña a esta integración.

6. Diagnóstico de red en Chrome DevTools

Abre DevTools, activa “Preserve log”, limpia el registro y recarga una página de prueba sin extensiones de bloqueo. En Network filtra por adsbygoogle, pagead o googlesyndication; inspecciona Initiator, Request URL, respuesta, bloqueos del navegador y errores de consola. Mide el resultado después de que la CMP haya emitido el estado aplicable, sin hacer clic ni interactuar con anuncios reales.

Señal observadaQué demuestraSiguiente comprobación
Biblioteca HTTP 200El servidor entregó el recurso de la biblioteca; no demuestra que el bloque haya recibido una creatividad.Revisar consola, estado de CMP, solicitud del slot y el atributo del elemento.
Respuesta 204 en una peticiónEn esa respuesta no hay cuerpo; el código aislado no es una definición universal de “no fill” para toda la cadena.Identificar la URL exacta, initiator y contexto; contrastar con el estado final del bloque y cobertura.
data-ad-status="filled"AdSense informa que se devolvió un anuncio para ese slot.Comprobar render, visibilidad y que el espacio no quede tapado por CSS.
data-ad-status="unfilled"No se devolvió anuncio a ese bloque en esa solicitud.Verificar elegibilidad, ads.txt, consentimiento y cobertura; no repetir la petición como “arreglo”.
No aparece peticiónLa llamada no llegó a ejecutarse o se bloqueó antes de salir.Revisar CMP, inserción del slot, ad blocker, CSP y errores JavaScript.

Google documenta que data-ad-status se añade cuando el slot termina la solicitud y diferencia filled, unfilled y, en ciertas configuraciones, unfill-optimized. El estado es más útil para diagnosticar el slot que asumir que un HTTP 200 equivale a anuncio visible. Puedes comenzar por la guía oficial de estado de bloques vacíos y la comprobación con DevTools.

Errores frecuentes y solución

  • Biblioteca repetida: mover el script a un único layout y comprobar Initiator; la repetición puede causar errores de inicialización.
  • Slot sin respuesta: comparar el ID de editor y el slot con la interfaz, comprobar el estado del sitio y revisar cobertura sin exponer identificadores de usuario.
  • La SPA deja huecos o no pide anuncios: crear un nodo nuevo para la vista, aplicar el consentimiento primero y evitar volver a procesar un nodo con estado anterior.
  • CSP bloquea el script: usar primero Report-Only, revisar la consola y la política actual; no copiar allowlists encontradas en artículos antiguos.

Preguntas frecuentes

¿Un HTTP 200 confirma que ya se ve el anuncio?

No. Confirma una respuesta HTTP a esa petición. El render puede fallar después o el slot puede quedar vacío; revisa data-ad-status y el elemento en la ventana superior.

¿Puedo poner la biblioteca una vez en cada componente?

No es el patrón recomendable. Cárgala una vez por documento y registra cada espacio por separado. En SPA, una navegación de cliente no equivale a descargar otro documento.

¿Consent Mode sustituye a la CMP?

No. Comunica señales a las etiquetas; la CMP recoge, presenta y actualiza la decisión del usuario. Para requisitos de anuncios personalizados en EEE, Reino Unido y Suiza, consulta la guía oficial de CMP certificadas.

Para aislar fallos de tráfico, revisa también la guía de seguridad y auditoría. Fuentes técnicas: modos Auto Ads y bloques manuales, implementación de Consent Mode y configuración de Auto Ads.