Depurar la cadena IAB GPP en la consola del navegador: tutorial paso a paso
Por qué los problemas de GPP son difíciles de detectar
Cuando un visitante estadounidense se excluye de la venta o el uso compartido de sus datos, esa elección tiene que llegar a todos los socios publicitarios de la página. Con el IAB Global Privacy Platform (GPP), viaja como una cadena compacta y una lista de ID de sección. Si alguno de los dos es incorrecto — falta, está obsoleto o lleva la sección equivocada — nada se rompe de forma visible. Los anuncios siguen cargando, el banner sigue viéndose bien, y el problema solo aparece más tarde, cuando los socios ignoran las exclusiones o pujan menos por tu inventario.
La buena noticia es que puedes inspeccionar casi todo desde la consola del navegador. Este tutorial recorre las comprobaciones en el orden en que las ejecutaríamos en una página real.
Paso 1: confirmar que la API existe y está lista
Un CMP compatible con GPP expone una función global __gpp. Abre las DevTools en tu página y ejecuta un comando ping:
__gpp('ping', function (data) { console.log(data); });
El objeto devuelto dice mucho de un vistazo:
- gppVersion — debería indicar 1.1 en las implementaciones actuales.
- cmpStatus — si el CMP se ha cargado o ha dado un error.
- cmpDisplayStatus — si el banner está visible, oculto o desactivado para este visitante.
- signalStatus — «ready» cuando el CMP ha fijado un estado de consentimiento, «not ready» mientras sigue decidiendo.
- supportedAPIs — las secciones que el CMP puede producir.
- applicableSections — los ID de sección que se aplican a este visitante ahora mismo.
- gppString — la propia cadena codificada.
Si __gpp es undefined, el stub del CMP falta o se carga demasiado tarde. El stub debe estar en su sitio antes de cualquier script publicitario que lo espere; de lo contrario, esos scripts no verán ningún CMP y esperarán o seguirán sin señal.
Paso 2: comprobar la sección aplicable
Cada marco de privacidad de GPP tiene un ID de sección numérico. Los que los publishers encuentran con más frecuencia son el 2 (EU TCF v2), el 5 (TCF canadiense), el 7 (US National, «usnat») y del 8 en adelante para las secciones de estados concretos como California, Virginia, Colorado, Utah y Connecticut. Un visitante de un estado de EE. UU. normalmente debería ver en applicableSections la sección nacional o la de su estado, no la de la UE.
Prueba desde varias ubicaciones. Un error habitual es un CMP que detecta bien la geografía para el banner pero escribe una sección predeterminada en la cadena pase lo que pase, o al revés. Con una VPN o las herramientas de vista previa de tu CMP, compara lo que muestra el banner con lo que informa applicableSections.
Paso 3: leer los datos de la sección
En lugar de decodificar la cadena a mano, pídele al CMP la sección ya analizada:
__gpp('getSection', function (data, success) { console.log(data, success); }, 'usnat');
En la sección US National, los campos de exclusión siguen una convención sencilla: 0 significa no aplicable, 1 significa que el usuario se excluyó y 2 significa que el usuario no se excluyó. Céntrate primero en estos campos:
- SaleOptOut y SharingOptOut
- TargetedAdvertisingOptOut
- Los campos notice correspondientes, que registran si se informó al visitante de cada práctica
Ahora realiza la exclusión en la página — haz clic en tu enlace «Do Not Sell or Share» o activa el ajuste en el centro de preferencias — y ejecuta getSection de nuevo. Los campos de exclusión deberían pasar de 2 a 1. Si no lo hacen, la interfaz y la señal no están sincronizadas.
Paso 4: probar el camino de Global Privacy Control
Varias leyes estatales exigen que las empresas traten una señal Global Privacy Control como una exclusión. Activa el GPC en un navegador o extensión que lo admita, confirma que navigator.globalPrivacyControl devuelve true en la consola y luego carga la página en una sesión nueva. Los campos de exclusión pertinentes ya deberían indicar 1 sin que el visitante toque el banner. Algunas secciones también incluyen un campo que indica que la elección provino de una señal GPC.
Paso 5: observar eventos, no solo instantáneas
Los scripts publicitarios no deberían leer la cadena una vez al cargar la página y olvidarla. Registra un listener para ver lo que ven los socios:
__gpp('addEventListener', function (evt) { console.log(evt.eventName, evt.pingData); });
Deberías observar eventos como listenerRegistered, signalStatus y sectionChange. Cuando el visitante cambia una elección, debe seguir un evento sectionChange con una cadena actualizada. Si tu wrapper de header bidding o la integración con el ad server solo lee la cadena antes de que signalStatus pase a «ready», puede enviar un valor vacío u obsoleto.
Paso 6: seguir la cadena hasta las solicitudes de anuncios
Por último, abre la pestaña Network y filtra tus solicitudes de anuncios. Muchos endpoints publicitarios aceptan los parámetros gpp y gpp_sid (la cadena y los ID de sección aplicables). Comprueba que:
- ambos parámetros están presentes en las solicitudes de visitantes de EE. UU.;
- la cadena coincide con la devuelta por ping en el momento de la solicitud;
- tras una exclusión, las solicitudes posteriores llevan la nueva cadena y no una almacenada en caché.
Si usas Prebid.js, confirma que su módulo de gestión del consentimiento está configurado para GPP, e inspecciona las solicitudes de puja que salen del wrapper así como la llamada final al ad server.
Patrones de fallo habituales
- El stub se carga después de las etiquetas publicitarias — los socios no ven ningún CMP.
- Sección equivocada para la región — se envía la sección de la UE para tráfico de EE. UU., o ninguna sección.
- Interfaz y señal desincronizadas — el ajuste cambia, la cadena no.
- GPC ignorado — la señal del navegador nunca se convierte en exclusión.
- Cadenas obsoletas en las solicitudes — el wrapper guarda en caché el primer valor que vio.
Conclusiones clave
- Empieza por ping: versión, estado, secciones aplicables y cadena cuentan la mayor parte de la historia.
- Usa getSection para leer los campos de exclusión; 1 significa excluido, 2 significa no excluido.
- Prueba por separado el enlace de exclusión y el GPC, y confirma que ambos cambian la señal.
- Escucha los eventos y espera una señal «ready» antes de que las solicitudes de anuncios lean la cadena.
- Verifica gpp y gpp_sid en las solicitudes de red reales, antes y después de una exclusión.