# Instalar FlowConsent en PrestaShop

Instalar FlowConsent en PrestaShop: pegue el fragmento al principio del head.tpl del tema, vacíe la caché de Smarty y desactive los módulos de rastreo.

> Canonical: https://www.flowconsent.com/es/doc/install-prestashop
> Last updated: 2026-10-01
En PrestaShop, el fragmento de código de FlowConsent va al principio del archivo **`templates/_partials/head.tpl`** de su tema, rodeado de las etiquetas Smarty **`{literal}`**, y después se vacía la caché en **Parámetros avanzados → Rendimiento** (*Advanced Parameters → Performance*). La instalación son tres pasos. Las trampas principales: la caché de Smarty, que sigue sirviendo el `<head>` antiguo, y los módulos de seguimiento (Google Analytics, píxel de Meta, Google Tag Manager), que inyectan sus propias etiquetas sin esperar al consentimiento.

## Antes de empezar

- Una cuenta en [app.flowconsent.com](https://app.flowconsent.com) (plan Free gratuito, sin tarjeta de crédito, hasta 25.000 sesiones al mes).
- Un banner creado y desplegado. En el plan Free, el despliegue se hace a través de su propia cuenta de Cloudflare ([guía de Cloudflare](/es/doc/cloudflare-deployment)); en Pro y Enterprise, con un clic.
- Acceso a los archivos de la tienda (FTP, SFTP o el gestor de archivos del alojamiento) y al back office de PrestaShop. El back office no incluye editor de archivos del tema.

## Paso 1: Copie el fragmento de código

Abra **Builder → Despliegue → Integración** y copie el fragmento de código de la pestaña **HTML / No-code**. Tiene dos partes, en este orden: el stub de Google Consent Mode v2 (valores `denied` por defecto) y después el cargador del banner.

## Paso 2: Péguelo en head.tpl

1. Localice el tema activo en **Diseño → Tema y logotipo** (*Design → Theme & Logo*): la primera sección de la página indica el tema en uso. Su carpeta está en `themes/<nombre-del-tema>/`.
2. Abra `themes/<nombre-del-tema>/templates/_partials/head.tpl`. En el tema Classic y en los temas basados en él, este archivo se incluye directamente dentro de la etiqueta `<head>` de cada plantilla de página.
3. Pegue el fragmento de código **justo después del bloque `head_charset`**, es decir, antes de las hojas de estilo, de los scripts del tema y del hook `displayHeader` de los módulos, rodeándolo de `{literal}` y `{/literal}`:

```html title="themes/<nombre-del-tema>/templates/_partials/head.tpl"
{block name='head_charset'}
  <meta charset="utf-8">
{/block}

{literal}
<script>
// FlowConsent Loader - COLOCAR ANTES de cualquier otro script en el <head>
window.dataLayer=window.dataLayer||[];
function gtag(){dataLayer.push(arguments);}
gtag('consent','default',{
  'ad_storage':'denied',
  'analytics_storage':'denied',
  'ad_user_data':'denied',
  'ad_personalization':'denied',
  'wait_for_update':500
});
gtag('set','url_passthrough',true);
gtag('set','ads_data_redaction',true);
</script>
<!-- FlowConsent CMP -->
<script src="https://SU-CODIGO-LICENCIA.consent.flowconsent.com/cookie-manager.js?code=SU_CODIGO_LICENCIA"></script>
{/literal}

{* … el resto del archivo, sin cambios *}
```

> [!WARNING]
> Las etiquetas `{literal}` no son opcionales. Smarty interpreta las llaves: sin ellas, `function gtag(){dataLayer.push(arguments);}` se lee como una etiqueta Smarty y la página falla con un error de compilación. Todo lo que queda entre `{literal}` y `{/literal}` se muestra tal cual.

**¿Tema del marketplace o tema que actualiza?** Una actualización del tema sobrescribe `head.tpl`. Es mejor trabajar en un **tema hijo** (clave `parent` en su `theme.yml`): copie `templates/_partials/head.tpl` en la misma ruta del tema hijo, añada el fragmento de código y la copia del tema hijo sustituye a la del padre.

**¿Y los módulos de inserción de código?** Algunos módulos del marketplace añaden código al `<head>`. La mayoría usan el hook `displayHeader`, que se renderiza **al final del `<head>`**, después de los scripts del tema: demasiado tarde para garantizar el bloqueo previo. Es preferible `head.tpl`; si usa un módulo, compruebe con el asistente de instalación que el fragmento llega antes que cualquier rastreador.

## Paso 3: Vacíe la caché de Smarty

PrestaShop compila las plantillas y las guarda en caché: mientras no se vacíe, la tienda sigue sirviendo el `<head>` antiguo. Vaya a **Parámetros avanzados → Rendimiento** (*Advanced Parameters → Performance*) y haga clic en **Borrar caché** (*Clear cache*). Si la sección Smarty está configurada para no recompilar nunca las plantillas (*Never recompile template files*), hay que vaciar la caché tras cada cambio de archivo. Una caché del alojamiento o de una CDN (Varnish, Cloudflare) también debe purgarse.

## Módulos de seguimiento: desactívelos y declare los servicios

> [!NOTE]
> Los módulos de seguimiento (Google Analytics, píxel de Meta, Google Tag Manager, módulos publicitarios) inyectan sus etiquetas a través de los hooks del tema, sin esperar a la decisión del visitante. Desactívelos en **Módulos → Gestor de módulos** (*Modules → Module Manager*) o elimine el ID de seguimiento de su configuración, y declare los servicios correspondientes en **Builder → Servicios**: el banner solo los carga tras el consentimiento.

Si mantiene Google Tag Manager, no cargue FlowConsent desde GTM (llegaría demasiado tarde): coloque el fragmento de código **por encima** del contenedor de GTM en `head.tpl`. Las etiquetas de Google respetan entonces las señales de Consent Mode v2; las demás necesitan comprobaciones de consentimiento adicionales. Más detalles en la [guía de Google Consent Mode](/es/doc/google-consent-mode).

## Verifique la instalación

1. Abra la tienda en una ventana privada: el banner aparece.
2. En la pestaña **Red** de las herramientas para desarrolladores, no sale ninguna petición a terceros antes de hacer clic en **Aceptar**.
3. Lance el [asistente de instalación](/es/doc/setup-wizard) (Builder → Integración): comprueba la página publicada (cargador presente con el código de licencia correcto, stub de Consent Mode presente y colocado antes de cada etiqueta de Google).
4. Termine con un escaneo de rechazo desde la pestaña **Conformidad** ([verificación de conformidad](/es/doc/compliance-verification)).

## Hacerlo desde su agente de IA (MCP)

FlowConsent tiene un servidor MCP oficial, `https://mcp.flowconsent.com`, que se puede usar desde Claude, ChatGPT o cualquier cliente MCP. La conexión se hace con OAuth 2.0 y su cuenta de FlowConsent, sin clave de API. Su agente obtiene el fragmento de código y las instrucciones de colocación (`get_banner_snippet`, `get_setup_instructions`), verifica la instalación con un escaneo real (`verify_consent_compliance`) y puede programar una supervisión recurrente (`monitor_compliance`). La edición de `head.tpl` la hace usted o su agente de código: el servidor MCP aporta el fragmento, las instrucciones y la verificación.

Ejemplo de petición:

> Deme el fragmento de código de mi banner para mi tienda PrestaShop y compruebe que está bien instalado en https://mitienda.es

Más información: [servidor MCP](/es/doc/mcp-server) y [FlowConsent para agentes de IA](/es/mcp).

## Preguntas frecuentes

### He pegado el fragmento de código pero no cambia nada. ¿Por qué?

La caché de Smarty sigue sirviendo la versión antigua. Vacíela en **Parámetros avanzados → Rendimiento**, purgue la posible caché del alojamiento o de la CDN y recargue en una ventana privada.

### La tienda muestra un error después de editar head.tpl.

Casi siempre faltan las etiquetas `{literal}`: Smarty intenta interpretar las llaves del script. Rodee todo el fragmento de código con `{literal}` y `{/literal}` y vacíe la caché.

### ¿Hace falta un módulo de FlowConsent?

No. El fragmento de código es HTML estándar que se pega en el tema. Es el método más fiable, porque es el único que coloca el banner antes que los scripts inyectados por los módulos.

### Mi instalación es multitienda. ¿Qué hay que hacer?

Cada tema que usa una tienda tiene su propio `head.tpl`: añada el fragmento de código en cada uno. Si sus tiendas funcionan en dominios distintos, cada una con su banner, use en cada tema el código de licencia del banner correspondiente.
