Análisis técnico en profundidad
Tu tienda Shopify probablemente instala cookies antes del consentimiento. Así lo demuestras en cinco minutos.
Activa el banner de cookies de Shopify. Abre la pestaña Network (Red) en una ventana privada. Cuenta las peticiones que se disparan antes de tu primer clic. En muchas tiendas, ese número no es cero — y es justo ese desfase el que miran de verdad las autoridades.
Aquí tienes una prueba que puedes hacer ahora mismo, en tu propia tienda, sin más herramienta que tu navegador:
- Abre tu escaparate en una ventana privada/incógnito recién abierta.
- Antes de hacer clic en nada del banner de cookies, abre las DevTools y mira las cookies que ya existen y las peticiones de red que ya han salido.
- Ahora haz clic en Rechazar. Observa qué se borra — y qué sigue disparándose de todos modos.
Si nunca lo has hecho, el resultado suele sorprender. No porque Shopify haga algo mal — no lo hace —, sino por el desfase entre lo que configuraste en el panel de administración y lo que el navegador hace realmente al cargar la página.
El punto ciego: lo que declaras ≠ lo que hace el navegador
Hay dos cosas muy distintas, y casi todo el mundo las confunde.
La declaración. En tu panel de Shopify activas el banner de consentimiento, marcas las casillas, conectas la Customer Privacy API. Sobre el papel, está todo listo.
El comportamiento. Lo que hace un navegador real cuando un visitante real carga tu página: qué cookies se escriben en disco, qué píxeles se disparan, con qué dominios de terceros se contacta — y, lo más importante, cuándo, en relación con el clic de consentimiento.
La declaración vive en tu panel. El comportamiento vive en el navegador del visitante. Una autoridad que audita un sitio no lee los ajustes de tu panel: abre la página, observa la red y revisa el tarro de cookies. El navegador es la fuente de verdad. Esto no es exclusivo de Shopify; vale para cualquier stack web. Pero los valores por defecto, los temas y el ecosistema de apps de Shopify hacen que ese desfase pase fácilmente desapercibido.
Una aclaración de entrada: no soy abogado y nada de lo aquí escrito es asesoramiento legal ni un veredicto de cumplimiento. Va sobre lo que es técnicamente observable en tu navegador. Lo que eso significa para tu situación concreta es una cuestión para asesores cualificados.
Una carga típica de escaparate, en una línea de tiempo
Las cinco causas técnicas reales
1. Las propias cookies de Shopify y la zona gris «necesarias frente a analíticas»
Shopify escribe un conjunto de cookies propias (first-party) más o menos al cargar: _shopify_y, _shopify_s, _y, _s, además de cookies de carrito y de sesión como cart, _secure_session_id, _shopify_essential. Algunas son genuinamente necesarias — una cookie de carrito hace que el carrito funcione. Otras tienen aroma analítico (la familia _y/_s alimenta la analítica de escaparate de Shopify). La etiqueta «estrictamente necesarias» está cargando mucho peso aquí, y dónde cae exactamente la línea es discutible. La conclusión práctica: no des por hecho que toda cookie de Shopify está en el cubo de «no requiere consentimiento» solo porque la haya puesto Shopify.
2. La Customer Privacy API informa del consentimiento — no lo hace cumplir por sí sola
La Customer Privacy API de Shopify (window.Shopify.customerPrivacy) es una herramienta buena y real. Expone el estado de consentimiento del visitante — analyticsProcessingAllowed(), marketingAllowed() — y dispara un evento visitorConsentCollected cuando el visitante decide. Pero exponer una señal no es lo mismo que bloquear. Le toca a cada script, tema y app leer esa señal y autolimitarse en función de ella. Un píxel que nunca comprueba customerPrivacy se disparará igual. La API te sirve el estado de consentimiento en bandeja; que tu código lo espere de verdad es otra cuestión.
3. Píxeles incrustados al cargar la página por scripts o apps antiguos
Este es el clásico. Un píxel de Meta (Facebook), un píxel de TikTok o una etiqueta de Google se pegaron directamente en theme.liquid hace dos años, o los instala una app que los inyecta en cada página. Se ejecuta en <head>, de inmediato, antes incluso de que se renderice el banner. El moderno sandbox de Customer Events / web pixels de Shopify existe precisamente para encauzar esto a través de la capa de consentimiento — pero una etiqueta heredada e incrustada a mano se salta todo eso. No sabe que el banner existe.
4. Un rechazo que no se propaga del todo
Aquí hay dos modos de fallo. Primero: las cookies que ya se habían escrito antes de la decisión no se borran cuando el visitante rechaza — simplemente se quedan ahí. Segundo: un script lee el estado de consentimiento una vez, pronto, cachea «aún sin decisión» y se dispara igual porque nunca vuelve a comprobarlo después de que el visitante haga clic en Rechazar. El banner dice «rechazado». La red dice lo contrario.
5. Recursos de terceros fuera del alcance del banner
Vídeos de YouTube incrustados (youtube.com), Google Fonts servidas desde la CDN de Google, un widget de chat, un widget de reseñas, un mapa incrustado — cada uno de estos puede instalar cookies o contactar con un servidor de terceros al cargar, y muchos banners de consentimiento no los cubren en absoluto porque no son «etiquetas», son contenido incrustado. Tienen su propio punto ciego.
Lo que observas frente a lo que configuraste
La auditoría casera de cinco minutos
Esta es la parte que merece la pena guardar en marcadores. Sin herramientas, sin extensión, sin cuenta. Solo las DevTools de tu navegador y quince minutos la primera vez, cinco cada vez siguiente. Los pasos están escritos para Chrome; Firefox y Safari son casi idénticos.
- Abre una ventana privada limpia Usa el modo incógnito (Ctrl/⌘ + Shift + N). Un perfil limpio significa que no quedan cookies que distorsionen el resultado. No cargues todavía tu tienda.
- Abre primero las DevTools Pulsa F12 (o ⌘ + Opt + I). Ve a la pestaña Network (Red). Marca Preserve log (Conservar registro) y Disable cache (Desactivar caché). Ábrela antes de cargar la página para captar las primerísimas peticiones.
- Carga tu escaparate — y para. No hagas clic. Deja que la página se asiente. No toques el banner. Este es el escenario uno: antes de cualquier consentimiento.
- Lee el tarro de cookies Ve a Application ▸ Storage ▸ Cookies (en Firefox: Storage ▸ Cookies) y elige tu dominio. Enumera todo lo que ya hay ahí. Cada una de estas se instaló antes de que decidieras nada.
-
Lee la red
De vuelta en Network, filtra por dominio. Escribe
facebook, luegotiktok, luegogoogle-analytics,googletagmanager,doubleclick,youtube. Cualquier coincidencia significa que se contactó con un tercero antes del consentimiento. Anótalas. - Escenario dos: haz clic en «Rechazar» Ahora rechaza. Después vuelve a abrir el panel de Cookies. ¿Desaparecieron las cookies preinstaladas? A menudo no. Vuelve a revisar los filtros de Network — ¿siguen disparándose píxeles tras el rechazo? Anota la diferencia.
- Escenario tres: ventana nueva, haz clic en «Aceptar» Cierra todo, abre una ventana de incógnito nueva, recarga y esta vez acepta. Esta es tu referencia de «qué se dispara con consentimiento completo» — útil para ver qué debería haberse bloqueado en los escenarios uno y dos.
En la pestaña Network, ordena por la columna Time/Waterfall (Tiempo/Cascada) y localiza la petición que provocó tu clic de consentimiento. Todo lo que esté por encima de ella y haya cargado un dominio de terceros ocurrió antes del consentimiento. Esa única vista cuenta toda la historia.
Cookies que verás habitualmente, y cuándo aterrizan
Los nombres y las duraciones varían según el tema y la versión de Shopify, así que toma esto como una guía de campo, no como un evangelio. Las categorías son convenciones de uso extendido, no clasificaciones legales.
| Cookie | Se instala normalmente | Propósito habitual |
|---|---|---|
_shopify_y / _y | al cargar | Analítica de escaparate, ~1 año |
_shopify_s / _s | al cargar | Sesión de analítica, ~30 min |
_shopify_sa_p / _shopify_sa_t | al cargar | Analítica de marketing / atribución |
cart, cart_sig, cart_ts | funcional | El propio carrito de la compra |
_secure_session_id | funcional | Checkout / sesión |
_tracking_consent, _cmp_a | consentimiento | Almacena la propia decisión de consentimiento |
_fbp | al cargar* | Meta Pixel — debería esperar al consentimiento |
_ga, _gid | al cargar* | Google Analytics — debería esperar al consentimiento |
* _fbp, _ga y compañía son las que hay que escrutar: si aparecen en el escenario uno (antes de cualquier clic), ese es exactamente el desfase del que trata este artículo.
Qué hacer al respecto — sin dramatizar
Nada de esto es una emergencia de cinco alarmas. Es un problema de configuración e higiene, y tiene arreglo. Movimientos realistas, más o menos en orden de impacto:
- Audita tus apps. Cada app de marketing/analítica es un potencial inyector de píxeles. Desinstala lo que no uses — desinstalar suele eliminar también la etiqueta. Menos apps, menos sorpresas.
- Mueve los píxeles a Customer Events de Shopify. Las etiquetas añadidas a través del sandbox de web pixels quedan conectadas a la capa de consentimiento en lugar de ejecutarse en crudo en
theme.liquid. Si tienes píxeles incrustados a mano, migrarlos es el arreglo con más impacto. - Haz que el rechazo borre de verdad. Cuando un visitante rechaza, las cookies instaladas antes deberían eliminarse, no quedarse en su sitio. Verifícalo en el escenario dos.
- Limita los contenidos incrustados de terceros. Carga YouTube en modo de privacidad mejorada (
youtube-nocookie.com), aloja las fuentes en tu propio servidor y carga los widgets de forma diferida tras el consentimiento siempre que puedas. - Vuelve a ejecutar la auditoría tras cada actualización de tema o instalación de app. El punto ciego reaparece en cuanto algo nuevo inyecta una etiqueta. Cinco minutos, cada trimestre.
¿El banner de consentimiento de Shopify bloquea el rastreo por sí solo?
Por sí solo, no. Recoge y expone la decisión de consentimiento a través de la Customer Privacy API. Que un script dado respete esa decisión depende de cómo se integró ese script — a través de Customer Events (limitado) o incrustado a mano (no limitado).
¿Son un problema las propias cookies de Shopify?
Muchas son genuinamente funcionales (el carrito no puede funcionar sin una). La zona gris son las de aroma analítico. La respuesta honesta es que la línea entre «necesarias y analíticas» es discutible — y por eso justamente observar el comportamiento real gana a suponerlo.
¿Es esto un problema exclusivo de Shopify?
No. El mismo desfase entre lo declarado y lo observado existe en WordPress, en stacks a medida, en todas partes. Shopify de hecho ofrece primitivas potentes (Customer Privacy API, Customer Events). El desfase está en la configuración y en el código de terceros, no en la plataforma.
El cambio en cómo piensas el rastreo
La única idea que conviene retener: una configuración de rastreo vale lo que vale su comportamiento observado, no su configuración declarada. Una casilla marcada en un panel de administración es una afirmación. La pestaña Network es la prueba. Las dos se separan constantemente — una app nueva, una actualización de tema, un fragmento pegado — y nadie se entera porque nadie mira.
Así que mira. Cinco minutos en las DevTools te dicen más sobre lo que tu tienda hace de verdad que cualquier página de ajustes. Ejecútalo hoy en tu propia tienda. Después ejecútalo en la de un competidor — no volverás a leer un banner de cookies de la misma manera.