# Facebook Dynamic Ads + Pixel PRO: volledige gids

> Overzicht Facebook Dynamic Ads + Pixel PRO verbindt uw PrestaShop-catalogus met Facebook en Instagram. De module exporteert een productfeed van hoge kwaliteit (XML in het Facebook RSS-formaat of CSV), plaatst…

- Pagina: <https://www.datafirefly.com/nl/documentation/dffbadspixel/>
- Taal: nl
- Bijgewerkt op: 2026-09-14
- Andere talen: [fr](https://www.datafirefly.com/documentation/dffbadspixel/index.md), [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)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

## Overzicht

Facebook Dynamic Ads + Pixel PRO verbindt uw PrestaShop-catalogus met Facebook en Instagram. De module exporteert een productfeed van hoge kwaliteit (XML in het Facebook RSS-formaat of CSV), plaatst de Facebook-pixel op uw winkel en schakelt de Conversions API in voor een betrouwbare opvolging aan serverzijde. Hij maakt per combinatie van land, taal en valuta een aparte feed, geeft u nauwkeurige controle over de geëxporteerde gegevens (uitsluitingen, eigen labels, koppeling met de Google-categorieën) en is gebouwd voor grote catalogi tot 200 000 producten.

Compatibel met PrestaShop 8.0 tot 9.x en PHP 7.4 tot 8.3, in multistore en meertalig. `cURL` is vereist voor de Conversions API. Geen enkele Composer-afhankelijkheid in productie.

## Installatie

1. Open in uw backoffice **Modules → Modulebeheer → Een module installeren**.
2. Upload het bestand `dffbadspixel.zip`.
3. De module installeert zichzelf en maakt automatisch zijn tabellen aan (`dffbadspixel_exclusion`, `dffbadspixel_label` en `dffbadspixel_capi_queue`) plus het beheertabblad **Facebook Dynamic Ads + Pixel**.

Bij de installatie ontstaat een uniek beveiligingstoken. Dat beveiligt de URL's van de feed en de CRON, en staat in het tabblad **URL's & CRON** van de module.

## Tabblad Productfeed

Dit is het hart van de module. Hier kiest u het formaat en de manier van aanmaken, de selectie van de producten en het detail van de geëxporteerde gegevens.

### Formaat en generatie

- **Formaat**: XML (Facebook RSS met de Google-namespace), CSV, of allebei.
- **Manier van aanmaken**: _Ter plekke_ (streaming bij elke aanroep van de URL) of _CRON_ (bestanden in cache, aanbevolen voor grote catalogi).
- **Gzip-compressie**, **batchgrootte** (chunking) en **alleen ingeschakelde landen** om de prestaties te sturen.

### Selectie en granulariteit

- **Exporteren per** categorie of per merk, met een fijne selectie (een filterveld helpt zoeken in de lijst).
- **Granulariteit** per product of per variant.
- **Opbouw van de feed-ID**: de backoffice-ID (met een optie voor taal en/of variant), de referentie of de EAN.
- **Soort beschrijving** (kort of lang), **beschikbaarheid** (volgens de voorraad of altijd op voorraad), **kleuren**, **maten**, extra afbeeldingen of **alleen de omslagafbeelding**.

### Verzendkosten, tracking en kwaliteit

- **Werkelijke verzendkosten**, berekend via uw PrestaShop-vervoerders (zone, gewicht- en prijsklassen), via een referentievervoerder of de goedkoopste, met een instelbare drempel voor gratis verzending.
- **UTM-parameters** en integratie met **GA4**.
- **Kwaliteitsgrenzen**: de maximale lengte van titel en beschrijving die de validator gebruikt (tabblad Diagnose).

### Algemene uitsluitingen

Meteen onder het tabblad Feed: uitverkochte producten uitsluiten, producten zonder EAN of MPN, of producten onder een minimumprijs.

## Geavanceerde uitsluitingen

Voeg in het tabblad **Uitsluitingen** gerichte regels toe om bepaalde producten uit de feed te houden. Elke regel berust op een type en een waarde:

- **Woord of uitdrukking**: sluit uit als de naam of de beschrijving die term bevat.
- **Product**, **Variant** of **Leverancier**: op ID.
- **Waarde van een kenmerk** of **Attribuut**: op ID.

## Eigen labels en kledingtags

De **eigen labels** (`custom_label_0` tot `custom_label_4`) verrijken de segmentatie van uw campagnes: de categorienaam, de waarde van een kenmerk, een prijsklasse, of labels als « nieuw » en « bestseller ».

Het tabblad **Kledingtags** voegt de Meta-velden voor mode toe: `age_group` en `gender`, plus `pattern` (motief) en `material` (materiaal), gekoppeld aan productkenmerken.

## Categoriekoppeling en valuta

Koppel in het tabblad **Koppeling & valuta** uw PrestaShop-categorieën aan de Google- en Facebook-categorieën:

- **CSV-import** in het formaat `id_category;google_category` (scheidingsteken `;` of `,`, kopregel optioneel).
- **Import vanuit een andere geïnstalleerde DataFirefly-module** (de standaardversie, Google Merchant Center, GMC Pro of TikTok Ads).
- **Automatisch voorstel op trefwoorden**: vult de lege koppelingen in op basis van de categorienaam.
- Handmatige bewerking per regel, met een zoekfilter.

De tabel **Valuta / Land** bepaalt welke valuta bij elk land wordt gebruikt wanneer de feeds voor meerdere landen worden aangemaakt. Zonder koppeling geldt de standaardvaluta van de winkel.

Begin zonder categoriekoppeling: Meta aanvaardt de feed ook zonder `google_product_category`. Voeg die geleidelijk toe voor uw belangrijkste categorieën om de verspreiding te verbeteren.

## Facebook-pixel

Schakel in het tabblad **Pixel** de pixel in en vul uw **pixel-ID** in. De module injecteert de basiscode (PageView) en de contextuele gebeurtenissen: ViewContent, ViewCategory, Search, InitiateCheckout, AddToCart en AddToWishlist.

- **Advanced matching**: stuurt bijkomende klantgegevens mee, gehasht met SHA-256, om uw doelgroepen te verbeteren.
- **Aanpasbare HTML-selectors** voor de knoppen « verlanglijst » en « bestellen », handig als uw thema de standaardopmaak heeft gewijzigd.
- **Instelbaar Purchase-bedrag**: met of zonder btw, met of zonder verzend- en verpakkingskosten.

## Conversions API (asynchroon)

De Conversions API stuurt de gebeurtenissen rechtstreeks vanaf uw server en vangt de conversies op die de pixel alleen niet ziet (blokkers, cookies). In het tabblad **Conversions API**:

1. Schakel de Conversions API in en plak het **toegangstoken** dat u in uw Meta Business Manager hebt aangemaakt.
2. Laat de **asynchrone modus** aanstaan (aanbevolen): de gebeurtenissen komen in een wachtrij en vertrekken daarna in batches via de CRON, zonder de winkel te vertragen.
3. Pas zo nodig de **batchgrootte** en het **maximale aantal pogingen** (retry) aan. Met een **testgebeurteniscode** valideert u de integratie in de Business Manager.

De gebeurtenissen worden met de browserpixel ontdubbeld dankzij een gedeelde `event_id` (bijvoorbeeld `order-1234` voor een aankoop). De gebruikersgegevens worden vóór verzending met SHA-256 gehasht.

### Statussen die Purchase activeren

Sinds versie 2.1.0 wordt de Purchase-gebeurtenis geactiveerd wanneer de bestelling **naar een triggerstatus overgaat**, en niet bij het aanmaken ervan. Vink de betreffende statussen aan op het tabblad Conversions API: bij installatie zijn de statussen die PrestaShop als betaald markeert vooraf geselecteerd. Wordt geen enkele status aangevinkt, dan valt de module terug op diezelfde betaalde statussen.

Dit gedrag is onmisbaar bij asynchrone betalingen (overboeking, iDEAL, SEPA, Klarna): de bestelling wordt aangemaakt in afwachting van betaling en Purchase wordt pas verzonden zodra de betaling is bevestigd. Omdat het verzenden volledig server-side gebeurt, is het niet afhankelijk van de bevestigingspagina, zelfs als de klant nooit terugkeert naar de winkel. Een `event_id`-beveiliging voorkomt duplicaten als de bestelling meerdere keren van status verandert.

### Verzonden gebruikersgegevens

Indien beschikbaar verstuurt de module: `em` (e-mail), `ph` (telefoon), `fn`, `ln`, `ct`, `zp`, `external_id`, `fbp`, `fbc`, `client_ip_address` en `client_user_agent`. Alle persoonsgegevens worden vóór verzending gehasht met SHA-256. De `external_id` gebruikt het klant-ID (of de gast-identificatie voor bezoekers). De `fbc` wordt gelezen uit de `_fbc`-cookie en, als die nog niet bestaat, gereconstrueerd uit de `fbclid`-URL-parameter.

## AVG-toestemming en CMP

Het tabblad **Toestemming** dwingt marketingtoestemming af voor de pixel _én_ voor server-side verzending. Zolang die niet is verleend, blijft de pixel in `revoke`-modus (Meta Consent Mode) en wordt er geen enkele gebeurtenis in de wachtrij geplaatst of via de Conversions API verzonden.

De detectie verloopt cascaderend:

1. **IAB TCF v2.2**: uitlezen van `__tcfapi` (doel 1 en Meta-vendor 89).
2. **Cookie van uw CMP**: configureerbare naam en verwachte waarde (Axeptio, Cookiebot, Didomi, AVG-modules voor PrestaShop…).
3. **JavaScript-API**: roep `window.dffbConsentGrant()` aan bij acceptatie en `window.dffbConsentRevoke()` bij weigering vanuit een eigen banner.

De in de browser gelezen keuze wordt gespiegeld in een `dffb_consent`-cookie, zodat de Conversions API server-side exact dezelfde beslissing toepast. Er wordt ook een `dffb:consent`-gebeurtenis op `document` verstuurd.

## Feed-URL's en de CRON-taak

Het tabblad **URL's & CRON** toont de basis-URL van de feed, de CRON-URL en de lijst met URL's per combinatie van land, taal en valuta.

### URL van de feed

```
https://uw-winkel.nl/index.php?fc=module&module=dffbadspixel&controller=feed&token=UW_TOKEN&id_lang=1&id_currency=1&id_country=8&format=xml
```

De parameters `id_lang`, `id_currency`, `id_country` en `format` (`xml` of `csv`) bepalen welke feed wordt geleverd. Die URL geeft u op als feedbron in de Meta-catalogus.

### CRON-taak

Plan in de CRON-modus de aanroep van het endpoint in om de bestanden in cache (opnieuw) aan te maken en de wachtrij van de Conversions API te legen:

```
*/30 * * * * curl -s "https://uw-winkel.nl/index.php?fc=module&module=dffbadspixel&controller=cron&token=UW_TOKEN" > /dev/null
```

Met de optionele parameter `job` richt u zich op één taak: `feeds` (de feeds aanmaken), `capi` (de wachtrij van de Conversions API versturen) of `all` (de standaardwaarde). Het antwoord is een tekstuele samenvatting.

## Diagnose: voorbeeld en validatie

Het tabblad **Diagnose** bundelt twee instrumenten:

- **Wachtrij van de Conversions API**: het aantal gebeurtenissen dat wacht, mislukt is en verstuurd is.
- **Voorbeeld en validatie van de feed**: maakt een XML-staal aan en een kwaliteitsrapport dat de problematische regels aanwijst: ontbrekende afbeelding, ongeldige GTIN (gecontroleerd via het controlecijfer), te lange titel of beschrijving, of een ontoereikende productidentificatie.

## Beveiliging

In het tabblad **Beveiliging**:

- **Lijst met toegestane IP-adressen**: beperkt de toegang tot de feed en de CRON tot bepaalde adressen of CIDR-reeksen (bijvoorbeeld de servers van Meta). Leeg betekent geen beperking.
- **Token roteren**: genereert het token van de URL's opnieuw. Het oude blijft geldig tot u het ongeldig maakt, zodat u de tijd hebt om uw feeds in Meta bij te werken.

Denk er na een tokenrotatie aan om uw feedbronnen in de Business Manager bij te werken, en maak daarna het oude token ongeldig via het tabblad Beveiliging om de overgangsperiode af te sluiten.

## Problemen oplossen

### De feed geeft « Forbidden »

Het token ontbreekt of klopt niet, of het aanroepende IP-adres staat niet in de toegestane lijst. Controleer het token in het tabblad URL's & CRON en maak de lijst met toegestane IP-adressen tijdelijk leeg om te testen.

### De feed is leeg of onvolledig

Controleer de selectie van categorieën en merken (leeg betekent de hele catalogus), de uitsluitingsregels en de voorraad als de uitsluiting « uitverkocht » aanstaat. Voer in de CRON-modus eerst de taak `job=feeds` uit om de cache aan te maken.

### De gebeurtenissen van de Conversions API komen niet aan in Meta

Ga na of `cURL` beschikbaar is, of het toegangstoken geldig is, en voer de taak `job=capi` uit. Volg de wachtrij in het tabblad Diagnose; de fouten worden gelogd in **Geavanceerde parameters → Logboeken** met het voorvoegsel `[dffbadspixel]`.

### De pixel gaat niet af bij een knop

Heeft uw thema de opmaak gewijzigd, pas dan de HTML-selectors voor « verlanglijst » en « bestellen » aan in het tabblad Pixel.

## Goede praktijken

- Gebruik de **CRON-modus met gzip** voor grote catalogi: aanmaken ter plekke blijft mogelijk maar kost bij elke aanroep meer.
- Schakel de **pixel en de Conversions API samen** in: de ontdubbeling op `event_id` vermijdt dubbeltellingen en verbetert tegelijk de dekking.
- Vul de **koppeling met de Google-categorieën** en de **GTIN's** in om uw producten zoveel mogelijk in aanmerking te laten komen voor Advantage+ en Shopping.
