Facebook Dynamic Ads + Pixel PRO — Guía completa
Instalar, configurar y explotar la exportación de feed de productos (XML y CSV), el píxel de Facebook y la API de Conversiones en PrestaShop 8 y 9: multi país/idioma/moneda, exclusiones, etiquetas, seguridad y CRON.
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
- En tu back-office, abre Módulos → Gestor de módulos → Subir un módulo.
- Sube el archivo
dffbadspixel.zip. - 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:
- Activa la API de Conversiones y pega el token de acceso generado en tu Business Manager de Meta.
- 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.
- 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:
- IAB TCF v2.2: lectura de
__tcfapi(finalidad 1 y vendor Meta 89). - Cookie de tu CMP: nombre y valor esperado configurables (Axeptio, Cookiebot, Didomi, módulos RGPD de PrestaShop…).
- API JavaScript: llama a
window.dffbConsentGrant()al aceptar y awindow.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_idevita 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.