# Facebook Dynamic Ads + Pixel PRO — Guía completa

> Presentación Facebook Dynamic Ads + Pixel PRO conecta tu catálogo PrestaShop con Facebook e Instagram. El módulo exporta un feed de productos de alta calidad (XML en formato Facebook RSS…

- Página: <https://www.datafirefly.com/es/documentation/dffbadspixel-3/>
- Idioma: es
- Actualizado el: 2026-09-14
- Otros idiomas: [fr](https://www.datafirefly.com/documentation/dffbadspixel/index.md), [en](https://www.datafirefly.com/en/documentation/dffbadspixel-2/index.md), [de](https://www.datafirefly.com/de/documentation/dffbadspixel-4/index.md), [it](https://www.datafirefly.com/it/documentation/dffbadspixel-5/index.md), [pl](https://www.datafirefly.com/pl/documentation/dffbadspixel/index.md), [pt](https://www.datafirefly.com/pt/documentation/dffbadspixel/index.md), [nl](https://www.datafirefly.com/nl/documentation/dffbadspixel/index.md)
- Índice: <https://www.datafirefly.com/es/documentation/llms.txt>

## Presentación

Facebook Dynamic Ads + Pixel PRO conecta tu catálogo PrestaShop con Facebook e Instagram. El módulo exporta un feed de productos de alta calidad (XML en formato Facebook RSS o CSV), instala el píxel de Facebook en tu tienda y activa la API de Conversiones para un seguimiento fiable del lado del servidor. Genera un feed distinto para cada combinación País / Idioma / Moneda, ofrece un control preciso de los datos exportados (exclusiones, etiquetas personalizadas, mapeo de categorías de Google) y está diseñado para catálogos grandes de hasta 200 000 productos.

Compatible con PrestaShop 8.0 a 9.x, PHP 7.4 a 8.3, multitienda y multilingüe. `cURL` es necesario para la API de Conversiones. Sin dependencia de Composer en producción.

## Instalación

1. En tu back-office, abre **Módulos → Gestor de módulos → Subir un módulo**.
2. Sube el archivo `dffbadspixel.zip`.
3. El módulo se instala y crea automáticamente sus tablas (`dffbadspixel_exclusion`, `dffbadspixel_label`, `dffbadspixel_capi_queue`) así como la pestaña de administración **Facebook Dynamic Ads + Pixel**.

Se genera un token de seguridad único durante la instalación. Protege las URL del feed y del CRON, y se muestra en la pestaña **URLs y CRON** del módulo.

## Pestaña Feed de productos

Es el corazón del módulo. Ahí eliges el formato y el modo de generación, la selección de productos y el detalle de los datos exportados.

### Formato y generación

- **Formato** — XML (Facebook RSS + espacio de nombres de Google), CSV o ambos.
- **Modo de generación** — _Al vuelo_ (streaming en cada llamada a la URL) o _CRON_ (archivos en caché, recomendado para catálogos grandes).
- **Compresión gzip**, **tamaño de lote** (chunking) y **solo países activados** para optimizar el rendimiento.

### Selección y granularidad

- **Exportar por** categoría o por marca, con selección precisa (un campo de filtro facilita la búsqueda en la lista).
- **Granularidad** por producto o por variante.
- **Construcción del ID del feed**: ID de back-office (con opción idioma y/o variante), referencia o EAN.
- **Tipo de descripción** (corta/larga), **disponibilidad** (según el stock o siempre en stock), **colores**, **tallas**, imágenes adicionales o **solo imagen de portada**.

### Gastos de envío, tracking y calidad

- **Gastos de envío reales** calculados vía tus transportistas de PrestaShop (zona, rangos peso/precio), transportista de referencia o el más barato, con envío gratuito configurable.
- **Parámetros UTM** e integración con **GA4**.
- **Límites de calidad**: longitudes máximas de título y descripción usadas por el validador (pestaña Diagnóstico).

### Exclusiones generales

Justo debajo de la pestaña Feed: excluir productos sin stock, sin EAN/MPN o por debajo de un precio mínimo.

## Exclusiones avanzadas

En la pestaña **Exclusiones**, añade reglas específicas para descartar ciertos productos del feed. Cada regla se basa en un tipo y un valor:

- **Palabra / expresión** — excluye si el nombre o la descripción contiene el término.
- **Producto**, **Variante**, **Proveedor** — por ID.
- **Valor de característica** o **Atributo** — por ID.

## Etiquetas personalizadas y etiquetas de moda

Las **etiquetas personalizadas** (`custom_label_0` a `custom_label_4`) enriquecen la segmentación de tus campañas: nombre de categoría, valor de una característica, rango de precio, o etiquetas «nuevo» / «más vendido».

La pestaña **Etiquetas de moda** añade los campos de Meta dedicados a la ropa: `age_group`, `gender`, además de `pattern` (patrón) y `material` mapeados sobre características de producto.

## Mapeo de categorías y monedas

En la pestaña **Mapeo y monedas**, asocia tus categorías de PrestaShop con las categorías de Google/Facebook:

- **Importación CSV** en formato `id_category;google_category` (separador `;` o `,`, encabezado opcional).
- **Importación desde otro módulo** DataFirefly instalado (versión estándar, Google Merchant Center, GMC Pro o TikTok Ads).
- **Sugerencia automática por palabras clave** — rellena las correspondencias vacías a partir del nombre de la categoría.
- Edición manual línea por línea, con filtro de búsqueda.

La **tabla Moneda / País** define la moneda usada para cada país al generar los feeds multipaís. Sin asociación, se usa la moneda por defecto de la tienda.

Empieza sin mapeo de categorías: Meta acepta el feed sin `google_product_category`. Añádelo progresivamente a tus categorías principales para mejorar la difusión.

## Píxel de Facebook

En la pestaña **Píxel**, activa el píxel e introduce tu **ID de píxel**. El módulo inyecta el código base (PageView) y los eventos contextuales: ViewContent, ViewCategory, Search, InitiateCheckout, AddToCart y AddToWishlist.

- **Concordancia avanzada** — envía información adicional del cliente, cifrada con SHA-256, para mejorar tus audiencias.
- **Selectores HTML personalizables** para los botones «lista de deseos» y «finalizar compra», útiles si tu tema modificó el marcado por defecto.
- **Importe de Purchase configurable**: con o sin impuestos, con o sin gastos de envío y/o embalaje.

## API de Conversiones (asíncrona)

La API de Conversiones envía los eventos directamente desde tu servidor y recupera las conversiones que el píxel por sí solo no puede detectar (bloqueadores, cookies). En la pestaña **API de Conversiones**:

1. Activa la API de Conversiones y pega el **token de acceso** generado en tu Business Manager de Meta.
2. Deja activado el **modo asíncrono** (recomendado): los eventos se ponen en cola y se envían por lotes vía CRON, sin ralentizar la tienda.
3. Ajusta el **tamaño de lote** y el número de **reintentos máximos** si es necesario. Un **código de evento de prueba** permite validar la integración en el Business Manager.

Los eventos se deduplican con el píxel del navegador mediante un `event_id` compartido (por ejemplo `order-1234` para una compra). Los datos de usuario se cifran con SHA-256 antes del envío.

### Estados que disparan el Purchase

Desde la versión 2.1.0, el evento Purchase se emite cuando el pedido **pasa a un estado disparador**, y no al crearse. Marca los estados correspondientes en la pestaña API de Conversiones: en la instalación, los estados que PrestaShop marca como pagados vienen pre-seleccionados. Si no se marca ningún estado, el módulo vuelve a esos mismos estados pagados.

Este comportamiento es imprescindible con pagos asíncronos (transferencia, Bizum, SEPA, Klarna): el pedido se crea a la espera del pago y el Purchase solo se envía una vez confirmado el pago. Al ser un envío totalmente del lado servidor, no depende de la página de confirmación, aunque el cliente no vuelva nunca a la tienda. Una protección por `event_id` evita duplicados si el pedido cambia de estado varias veces.

### Datos de usuario enviados

Cuando están disponibles, el módulo transmite: `em` (email), `ph` (teléfono), `fn`, `ln`, `ct`, `zp`, `external_id`, `fbp`, `fbc`, `client_ip_address` y `client_user_agent`. Todos los datos personales se cifran con SHA-256 antes del envío. El `external_id` usa el ID de cliente (o el identificador de invitado para visitantes). El `fbc` se lee de la cookie `_fbc` y, si aún no existe, se reconstruye a partir del parámetro de URL `fbclid`.

## Consentimiento RGPD y CMP

La pestaña **Consentimiento** aplica el consentimiento de marketing al píxel _y_ a los envíos del servidor. Mientras no se conceda, el píxel permanece en modo `revoke` (Consent Mode de Meta) y no se pone en cola ni se envía ningún evento por la API de Conversiones.

La detección es en cascada:

1. **IAB TCF v2.2**: lectura de `__tcfapi` (finalidad 1 y vendor Meta 89).
2. **Cookie de tu CMP**: nombre y valor esperado configurables (Axeptio, Cookiebot, Didomi, módulos RGPD de PrestaShop…).
3. **API JavaScript**: llama a `window.dffbConsentGrant()` al aceptar y a `window.dffbConsentRevoke()` al rechazar desde un banner propio.

La decisión leída en el navegador se refleja en una cookie `dffb_consent`, lo que permite a la API de Conversiones aplicar exactamente el mismo criterio del lado servidor. También se emite un evento `dffb:consent` sobre `document`.

## URLs del feed y tarea CRON

La pestaña **URLs y CRON** muestra la URL base del feed, la URL del CRON y la lista de URLs por combinación País / Idioma / Moneda.

### URL del feed

```
https://tu-tienda.com/index.php?fc=module&module=dffbadspixel&controller=feed&token=TU_TOKEN&id_lang=1&id_currency=1&id_country=8&format=xml
```

Los parámetros `id_lang`, `id_currency`, `id_country` y `format` (`xml` o `csv`) seleccionan el feed a servir. Es la URL que declaras como fuente de feed en el catálogo de Meta.

### Tarea CRON

En modo CRON, programa la llamada al endpoint para (re)generar los archivos en caché y vaciar la cola de la API de Conversiones:

```
*/30 * * * * curl -s "https://tu-tienda.com/index.php?fc=module&module=dffbadspixel&controller=cron&token=TU_TOKEN" > /dev/null
```

El parámetro opcional `job` apunta a una tarea concreta: `feeds` (generación de feeds), `capi` (envío de la cola de la API de Conversiones) o `all` (por defecto). La respuesta es un resumen de texto.

## Diagnóstico: vista previa y validación

La pestaña **Diagnóstico** reúne dos herramientas:

- **Cola de la API de Conversiones** — número de eventos en espera, en error y enviados.
- **Vista previa y validación del feed** — genera una muestra XML y un informe de calidad que señala las líneas problemáticas: imagen ausente, GTIN no válido (comprobado por dígito de control), título o descripción demasiado largos, identificador de producto insuficiente.

## Seguridad

En la pestaña **Seguridad**:

- **Lista de IP autorizadas** — restringe el acceso al feed y al CRON a ciertas direcciones o rangos CIDR (por ejemplo los servidores de Meta). Vacío = sin restricción.
- **Rotación del token** — regenera el token de las URL. El antiguo se sigue tolerando hasta su invalidación, dándote tiempo para actualizar tus feeds en Meta.

Tras una rotación de token, recuerda actualizar tus fuentes de feed en el Business Manager y luego invalidar el token antiguo desde la pestaña Seguridad para cerrar la ventana de transición.

## Resolución de problemas

### El feed devuelve «Forbidden»

El token falta, es incorrecto, o la IP que llama no está en la lista autorizada. Comprueba el token en la pestaña URLs y CRON y vacía la lista de IP autorizadas mientras pruebas.

### El feed está vacío o incompleto

Comprueba la selección de categorías/marcas (vacío = todo el catálogo), las reglas de exclusión, y el stock si la exclusión «sin stock» está activa. En modo CRON, ejecuta primero la tarea `job=feeds` para generar la caché.

### Los eventos de la API de Conversiones no llegan a Meta

Asegúrate de que `cURL` esté disponible, de que el token de acceso sea válido, y ejecuta la tarea `job=capi`. Sigue la cola en la pestaña Diagnóstico; los errores se registran en **Parámetros avanzados → Logs** con el prefijo `[dffbadspixel]`.

### El píxel no se dispara en un botón

Si tu tema modificó el marcado, ajusta los selectores HTML «lista de deseos» y «finalizar compra» en la pestaña Píxel.

## Buenas prácticas

- Usa el **modo CRON + gzip** para catálogos grandes: la generación al vuelo sigue siendo posible pero más costosa en cada llamada.
- Activa **el píxel y la API de Conversiones juntos**: la deduplicación por `event_id` evita el doble conteo mientras mejora la cobertura.
- Rellena el **mapeo de categorías de Google** y los **GTIN** para maximizar la elegibilidad de tus productos para las ubicaciones Advantage+ y Shopping.
