PS PrestaShop Gemiddeld

Facebook Dynamic Ads + Pixel PRO: volledige gids

De export van productfeeds (XML en CSV), de Facebook-pixel en de Conversions API installeren, configureren en benutten op PrestaShop 8 en 9: meerdere landen, talen en valuta, uitsluitingen, labels, beveiliging en CRON.

Bijgewerkt Moduleversie 2.1.0

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.
Was deze pagina nuttig?

Loopt u nog vast? Neem contact op met support