# Facebook Dynamic Ads + Pixel PRO — Guide complet

> Présentation Facebook Dynamic Ads + Pixel PRO connecte votre catalogue PrestaShop à Facebook et Instagram. Le module exporte un flux produits de haute qualité (XML au format Facebook RSS ou…

- Page: <https://www.datafirefly.com/documentation/dffbadspixel/>
- Langue: fr
- Mis à jour le: 2026-09-14
- Autres langues: [en](https://www.datafirefly.com/en/documentation/dffbadspixel-2/index.md), [es](https://www.datafirefly.com/es/documentation/dffbadspixel-3/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)
- Index: <https://www.datafirefly.com/documentation/llms.txt>

## Présentation

Facebook Dynamic Ads + Pixel PRO connecte votre catalogue PrestaShop à Facebook et Instagram. Le module exporte un flux produits de haute qualité (XML au format Facebook RSS ou CSV), installe le pixel Facebook sur votre boutique et active l'API Conversions pour un suivi fiable côté serveur. Il génère un flux distinct par combinaison Pays / Langue / Devise, offre un contrôle fin des données exportées (exclusions, libellés personnalisés, mapping des catégories Google) et est conçu pour les catalogues volumineux jusqu'à 200 000 produits.

Compatible PrestaShop 8.0 à 9.x, PHP 7.4 à 8.3, multiboutique et multilingue. `cURL` est requis pour l'API Conversions. Aucune dépendance Composer en production.

## Installation

1. Dans votre back-office, ouvrez **Modules → Gestionnaire de modules → Installer un module**.
2. Uploadez le fichier `dffbadspixel.zip`.
3. Le module s'installe et crée automatiquement ses tables (`dffbadspixel_exclusion`, `dffbadspixel_label`, `dffbadspixel_capi_queue`) ainsi que l'onglet d'administration **Facebook Dynamic Ads + Pixel**.

Un jeton de sécurité (token) unique est généré à l'installation. Il sécurise les URLs du flux et du CRON, et s'affiche dans l'onglet **URLs & CRON** du module.

## Onglet Flux produits

C'est le cœur du module. Vous y choisissez le format et le mode de génération, la sélection des produits et le détail des données exportées.

### Format et génération

- **Format** — XML (Facebook RSS + namespace Google), CSV, ou les deux.
- **Mode de génération** — _À la volée_ (streaming à chaque appel de l'URL) ou _CRON_ (fichiers mis en cache, recommandé pour les gros catalogues).
- **Compression gzip**, **taille de lot** (chunking) et **pays activés uniquement** pour optimiser les performances.

### Sélection et granularité

- **Exporter par** catégorie ou par marque, avec sélection fine (un champ de filtre facilite la recherche dans la liste).
- **Granularité** par produit ou par déclinaison.
- **Construction de l'ID de flux** : ID back-office (avec option langue et/ou déclinaison), référence ou EAN.
- **Type de description** (courte/longue), **disponibilité** (selon le stock ou toujours en stock), **couleurs**, **tailles**, images additionnelles ou **image de couverture uniquement**.

### Frais de port, tracking et qualité

- **Frais de port réels** calculés via vos transporteurs PrestaShop (zone, plages poids/prix), transporteur de référence ou le moins cher, avec franco de port paramétrable.
- **Paramètres UTM** et intégration **GA4**.
- **Limites qualité** : longueurs maximales de titre et de description utilisées par le validateur (onglet Diagnostic).

### Exclusions générales

Directement sous l'onglet Flux : exclure les produits hors stock, sans EAN/MPN, ou en dessous d'un prix minimum.

## Exclusions avancées

Dans l'onglet **Exclusions**, ajoutez des règles ciblées pour écarter certains produits du flux. Chaque règle repose sur un type et une valeur :

- **Mot / expression** — exclut si le nom ou la description contient le terme.
- **Produit**, **Déclinaison**, **Fournisseur** — par ID.
- **Valeur de caractéristique** ou **Attribut** — par ID.

## Libellés personnalisés et tags vestimentaires

Les **libellés personnalisés** (`custom_label_0` à `custom_label_4`) enrichissent la segmentation de vos campagnes : nom de catégorie, valeur d'une caractéristique, tranche de prix, ou labels « nouveau » / « meilleure vente ».

L'onglet **Tags vestimentaires** ajoute les champs Meta dédiés au prêt-à-porter : `age_group`, `gender`, ainsi que `pattern` (motif) et `material` (matière) mappés sur des caractéristiques produit.

## Mapping des catégories & devises

Dans l'onglet **Mapping & devises**, associez vos catégories PrestaShop aux catégories Google/Facebook :

- **Import CSV** au format `id_category;google_category` (séparateur `;` ou `,`, en-tête optionnel).
- **Import depuis un autre module** DataFirefly installé (version standard, Google Merchant Center, GMC Pro ou TikTok Ads).
- **Suggestion automatique par mots-clés** — remplit les correspondances vides à partir du nom de catégorie.
- Édition manuelle ligne par ligne, avec filtre de recherche.

La **table Devise / Pays** définit la devise utilisée pour chaque pays lors de la génération des flux multi-pays. Sans association, la devise par défaut de la boutique est utilisée.

Commencez sans mapping catégories : Meta accepte le flux sans `google_product_category`. Ajoutez-le progressivement sur vos catégories principales pour améliorer la diffusion.

## Pixel Facebook

Dans l'onglet **Pixel**, activez le pixel et renseignez votre **ID de pixel**. Le module injecte le code de base (PageView) et les événements contextuels : ViewContent, ViewCategory, Search, InitiateCheckout, AddToCart et AddToWishlist.

- **Correspondance avancée** (advanced matching) — envoie des informations client supplémentaires, hachées en SHA-256, pour améliorer vos audiences.
- **Sélecteurs HTML personnalisables** pour les boutons « liste d'envie » et « commander », utiles si votre thème a modifié le balisage par défaut.
- **Montant Purchase configurable** : avec ou sans taxe, avec ou sans frais de port et/ou d'emballage.

## API Conversions (asynchrone)

L'API Conversions envoie les événements directement depuis votre serveur et récupère les conversions que le pixel seul ne détecte pas (bloqueurs, cookies). Dans l'onglet **API Conversions** :

1. Activez l'API Conversions et collez le **token d'accès** généré dans votre Business Manager Meta.
2. Laissez le **mode asynchrone** activé (recommandé) : les événements sont mis en file d'attente puis envoyés par lots via le CRON, sans ralentir la boutique.
3. Ajustez la **taille de lot** et le nombre de **tentatives max** (retry) si besoin. Un **code d'événement test** permet de valider l'intégration dans le Business Manager.

Les événements sont dédupliqués avec le pixel navigateur grâce à un `event_id` partagé (par exemple `order-1234` pour un achat). Les données utilisateur sont hachées SHA-256 avant envoi.

### Statuts déclencheurs du Purchase

Depuis la version 2.1.0, l'événement Purchase est émis lorsque la commande **passe dans un statut déclencheur**, et non à sa création. Cochez les statuts concernés dans l'onglet API Conversions : à l'installation, les statuts marqués « payé » par PrestaShop sont pré-sélectionnés. Si aucun statut n'est coché, le module retombe sur ces mêmes statuts payés.

Ce fonctionnement est indispensable avec les paiements asynchrones (virement, Bizum, SEPA, Klarna) : la commande est créée en attente de paiement et le Purchase n'est envoyé qu'une fois le paiement confirmé. L'envoi étant entièrement côté serveur, il ne dépend pas de la page de confirmation, même si le client ne revient jamais sur la boutique. Une garde par `event_id` empêche tout doublon si la commande change plusieurs fois de statut.

### Données utilisateur envoyées

Lorsqu'elles sont disponibles, le module transmet : `em` (email), `ph` (téléphone), `fn`, `ln`, `ct`, `zp`, `external_id`, `fbp`, `fbc`, `client_ip_address` et `client_user_agent`. Toutes les données personnelles sont hachées en SHA-256 avant envoi. L'`external_id` reprend l'identifiant client (ou l'identifiant visiteur pour un invité). Le `fbc` est lu depuis le cookie `_fbc` et, s'il n'existe pas encore, reconstruit à partir du paramètre d'URL `fbclid`.

## Consentement RGPD et CMP

L'onglet **Consentement** applique le consentement marketing au pixel _et_ aux envois serveur. Tant qu'il n'est pas accordé, le pixel reste en mode `revoke` (Consent Mode de Meta) et aucun événement n'est mis en file ni envoyé par l'API Conversions.

La détection se fait en cascade :

1. **IAB TCF v2.2** — lecture de `__tcfapi` (finalité 1 et vendor Meta 89).
2. **Cookie de votre CMP** — nom et valeur attendue configurables (Axeptio, Cookiebot, Didomi, modules RGPD PrestaShop…).
3. **API JavaScript** — appelez `window.dffbConsentGrant()` à l'acceptation et `window.dffbConsentRevoke()` au refus depuis une bannière sur mesure.

La décision lue dans le navigateur est reflétée dans un cookie `dffb_consent`, ce qui permet à l'API Conversions d'appliquer exactement le même choix côté serveur. Un événement `dffb:consent` est également émis sur `document`.

## URLs du flux et tâche CRON

L'onglet **URLs & CRON** affiche l'URL de base du flux, l'URL du CRON et la liste des URLs par combinaison Pays / Langue / Devise.

### URL du flux

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

Les paramètres `id_lang`, `id_currency`, `id_country` et `format` (`xml` ou `csv`) sélectionnent le flux à servir. C'est cette URL que vous déclarez comme source de flux dans le catalogue Meta.

### Tâche CRON

En mode CRON, programmez l'appel de l'endpoint pour (re)générer les fichiers en cache et vider la file de l'API Conversions :

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

Le paramètre optionnel `job` cible une tâche précise : `feeds` (génération des flux), `capi` (envoi de la file API Conversions) ou `all` (défaut). La réponse est un récapitulatif texte.

## Diagnostic : aperçu et validation

L'onglet **Diagnostic** réunit deux outils :

- **File d'attente API Conversions** — nombre d'événements en attente, en échec et envoyés.
- **Aperçu & validation du flux** — génère un échantillon XML et un rapport qualité signalant les lignes problématiques : image manquante, GTIN invalide (vérifié par chiffre de contrôle), titre ou description trop longs, identifiant produit insuffisant.

## Sécurité

Dans l'onglet **Sécurité** :

- **Liste d'IP autorisées** — restreint l'accès au flux et au CRON à certaines adresses ou plages CIDR (par exemple les serveurs Meta). Vide = aucune restriction.
- **Rotation du token** — régénère le token des URLs. L'ancien reste toléré jusqu'à invalidation, le temps de mettre à jour vos flux dans Meta.

Après une rotation de token, pensez à mettre à jour vos sources de flux dans le Business Manager, puis à invalider l'ancien token depuis l'onglet Sécurité pour fermer la fenêtre de transition.

## Dépannage

### Le flux renvoie « Forbidden »

Le token est absent, incorrect, ou l'IP appelante n'est pas dans la liste autorisée. Vérifiez le token dans l'onglet URLs & CRON et videz la liste d'IP autorisées le temps du test.

### Le flux est vide ou incomplet

Vérifiez la sélection de catégories/marques (vide = tout le catalogue), les règles d'exclusion, et le stock si l'exclusion « hors stock » est active. En mode CRON, lancez d'abord la tâche `job=feeds` pour générer le cache.

### Les événements API Conversions n'arrivent pas dans Meta

Assurez-vous que `cURL` est disponible, que le token d'accès est valide, et exécutez la tâche `job=capi`. Suivez la file dans l'onglet Diagnostic ; les erreurs sont journalisées dans **Paramètres avancés → Logs** avec le préfixe `[dffbadspixel]`.

### Le pixel ne se déclenche pas sur un bouton

Si votre thème a modifié le balisage, ajustez les sélecteurs HTML « liste d'envie » et « commander » dans l'onglet Pixel.

## Bonnes pratiques

- Utilisez le **mode CRON + gzip** pour les catalogues volumineux : la génération à la volée reste possible mais plus coûteuse à chaque appel.
- Activez **pixel et API Conversions ensemble** : la déduplication par `event_id` évite le double comptage tout en améliorant la couverture.
- Renseignez le **mapping des catégories Google** et les **GTIN** pour maximiser l'éligibilité de vos produits aux placements Advantage+ et Shopping.
