Wo WooCommerce Gemiddeld

DataFirefly Push: volledige handleiding

Ingebouwde Web Push-meldingen voor WooCommerce installeren, instellen en gebruiken: automatisch gegenereerde VAPID-sleutels, opt-in met meerdere stijlen, pre-prompt en A/B-test, tien automatische triggers, campagnes met visuele builder en gedragssegmentatie, volledige analyses en een klantpagina in Mijn account.

Bijgewerkt Moduleversie 1.0.4

Overzicht en vereisten

DataFirefly Push maakt van uw WooCommerce-winkel een volwaardig platform voor Web Push-meldingen. Zonder SDK en zonder tracking van derden: de volledige cryptografie (VAPID en versleuteling volgens RFC 8291) draait in pure PHP op uw eigen server via OpenSSL. De plugin biedt een slimme opt-in met meerdere stijlen, tien automatische triggers, handmatige campagnes met een visuele builder en segmentatie, een volledig analysedashboard, een eigen pagina in Mijn account voor uw klanten en ingebouwde AVG-conformiteit.

  • WordPress 6.2 en hoger.
  • WooCommerce 7.0 en hoger, getest tot 9.6, compatibel met HPOS en Cart/Checkout Blocks.
  • PHP 8.1 en hoger.
  • Meertalig (FR/EN/ES/DE/IT), compatibel met Polylang en WPML.
  • Compatibel met LiteSpeed Cache, WP Rocket en andere cacheplugins: de Service Worker wordt als standalone PHP geserveerd.

Er hoeft geen externe dienst te worden aangesloten en geen Composer-bibliotheek te worden onderhouden. De VAPID-sleutels worden bij activering automatisch gegenereerd, en de abonnementen en gebeurtenissen blijven in uw eigen database staan.

Installatie

  1. Download het archief df-push.zip vanuit uw klantaccount.
  2. Ga in het WordPress-beheer naar Plugins > Nieuwe plugin > Plugin uploaden en plaats daar het archief.
  3. Klik op Activeren.
  4. Het menu DF Push verschijnt in de beheerzijbalk met zeven submenu’s: Dashboard, Campagnes, Abonnees, Triggers, Opt-in, Instellingen, Webhooks en API.

Bij activering maakt de plugin acht eigen tabellen aan met het voorvoegsel dfpush_, genereert ze uw VAPID-sleutels, plant ze de dagelijkse cron df_push_daily_lifecycle in en registreert ze het endpoint voor Mijn account. Handmatig ingrijpen is niet nodig.

Eerste configuratie: VAPID-sleutels en opt-in

Na activering werkt de plugin meteen met de standaardinstellingen: het zwevende belletje verschijnt na vijf seconden rechtsonder, de pre-prompt staat aan en de automatische triggers zijn klaar. Controleer alleen twee zaken in DF Push > Instellingen voordat u de dienst aankondigt:

  • Openbare VAPID-sleutel: het blok toont uw automatisch gegenereerde openbare sleutel (de application server key die de browser gebruikt). U kunt die opnieuw genereren, maar dan vervallen alle bestaande abonnementen.
  • PWA-manifest en standaardpictogram: voeg uw pictogram toe (minstens 192×192) als site_icon niet op de site is ingesteld.

Er is geen externe dienst om te registreren en geen ontwikkelaarsaccount bij Firebase of OneSignal nodig. De VAPID-sleutels die de plugin genereert volstaan: ze authenticeren uw applicatieserver bij de pushdiensten FCM, Mozilla Push en WNS.

Tabblad Opt-in: prompt, stijlen en triggers

Dit tabblad stuurt de abonnementsvraag aan. Er zijn vijf stijlen beschikbaar, elk met eigen positie en vormgeving:

  • Zwevend belletje (standaard): een discrete knop rechtsonder of linksonder.
  • Banner boven- of onderaan de pagina.
  • Modal in het midden met overlay.
  • Slide-in aan de zijkant.
  • Sticky bar vast bovenaan.

De pre-prompt (soft ask), die wordt aanbevolen, toont uw eigen boodschap vóór de ingebouwde vraag van de browser. Dat mechanisme spaart uw opt-in-quotum: in Chrome verbruikt het weigeren van de pre-prompt het quotum aan ingebouwde vragen niet (drie kansen in plaats van één zonder pre-prompt).

Vijf instelbare triggers, die u kunt combineren:

  • Vertraging (in seconden) na het laden van de pagina.
  • Scroll in procenten van de pagina (0 betekent uit).
  • Exit intent bij een muisbeweging naar buiten (alleen desktop).
  • X paginaweergaven binnen de sessie.
  • Toevoegen aan winkelwagen (vangt de WooCommerce-gebeurtenis added_to_cart op).

Schakel de A/B-test van de prompt in met een titel en boodschap als variant B, en een instelbare verdeling. De toewijzing wordt in localStorage bewaard, zodat elke bezoeker over sessies heen dezelfde variant ziet.

Zodra de browsertoestemming is geweigerd, kan een script die niet opnieuw vragen. Besteed dus zorg aan uw pre-prompt en laat er niet meteen bij de eerste scroll een vraag op volgen: dan ziet men 70 procent weigeringen, tegenover 20 tot 30 procent met een pre-prompt op het juiste moment.

Tabblad Triggers: de automatismen

Tien automatische triggers, elk afzonderlijk in te schakelen via het tabblad Triggers. Elke trigger gebruikt Action Scheduler voor uitgestelde verzending, met een synchrone terugval als Action Scheduler niet beschikbaar is.

Verlaten winkelwagen

Drie instelbare herinneringen, standaard 1 uur, 24 uur en 72 uur na het verlaten. De detectie vangt de gebeurtenis added_to_cart op voor bezoekers die op Push zijn geabonneerd en plant drie acties df_push_abandoned_cart met afnemende tussenpozen. De herinneringen worden automatisch geannuleerd als de bestelling intussen wordt geplaatst.

Weer op voorraad (back in stock)

Op de productpagina kunnen uw geabonneerde bezoekers zich per product op een wachtlijst zetten. Wanneer WooCommerce woocommerce_product_set_stock_status uitstuurt met een terugkeer naar instock, verstuurt de plugin een melding naar de wachtlijst van dat product en maakt die daarna leeg.

Prijsverlaging

De plugin houdt per product een meta _df_push_last_price bij. Bij elke productwijziging vergelijkt ze de oude en de nieuwe prijs. Overschrijdt de verlaging de ingestelde minimale drempel in procenten, dan gaat er een melding naar het topic Promoties.

Bevestiging, verzending, review

  • Orderbevestiging: directe verzending bij woocommerce_thankyou naar de abonnee als de gebruikersidentificatie overeenkomt.
  • Verzending: detecteert het trackingnummer op de bestelling door achtereenvolgens de meta _tracking_number, _wc_shipment_tracking_items (WooCommerce Shipment Tracking) en _aftership_tracking_number (AfterShip) te lezen. Wordt er een nummer gevonden, dan neemt de melding het op in de boodschap.
  • Reviewverzoek: ingepland X dagen nadat de bestelling de status completed heeft gekregen (instelbare termijn).

Verjaardag, heractivering, nieuw product

  • Verjaardag: de dagelijkse cron df_push_daily_lifecycle leest het WooCommerce-veld billing_birthday en stuurt een melding naar de abonnees die jarig zijn.
  • Heractivering: verzending naar abonnees die 30, 60 en 90 dagen inactief zijn (vensters instelbaar als CSV: 30,60,90).
  • Nieuw product: bij publicatie van een product gaat er een melding naar het topic Nieuw.

Elke trigger accepteert een payload met sjabloonvariabelen: {firstname}, {product_name}, {product_price}, {old_price}, {order_number}, {tracking_number}, {category} en {discount_code}. De variabelen worden op het moment van verzending ingevuld, niet bij het inplannen.

Tabblad Campagnes: visuele builder, segmentatie, A/B-test

Bouw een handmatige campagne in DF Push > Campagnes > Nieuwe campagne. De builder toont een live voorbeeld van de melding zoals die op het toestel van de abonnee verschijnt.

  • Inhoud: titel, boodschap, bestemmings-URL, hero-afbeelding en tot twee actieknoppen met een eigen label en URL.
  • Blijvende melding (optie requireInteraction): de melding blijft staan tot de gebruiker erop reageert.
  • Segmentatie op taal, land, toesteltype en topic, en op RFM-gedrag: minimum aantal bestellingen, minimale gemiddelde bestelwaarde, dagen inactiviteit en gekochte categorie. De gedragssegmenten worden bij de start berekend via wc_get_orders.
  • A/B-test: schakel een variant B in (titel en boodschap); de verdeling is in procenten instelbaar. De toewijzing is willekeurig per abonnee en deterministisch op basis van de identificatie, zodat de analyses consistent blijven.
  • Planning: kies datum en tijd, of start meteen.
  • Testmodus: verstuur de campagne vanuit de builder alleen naar beheerders, vóór de productiestart.

De verzendmotor deelt het segment automatisch op, respecteert de stille uren in de tijdzone van de abonnee, past de ingestelde frequentielimiet toe en ruimt gaandeweg de endpoints op die 404 of 410 teruggeven (uitschrijving aan browserzijde).

Dashboard en analyses

Het dashboard DF Push > Dashboard bundelt uw KPI’s over 30 dagen. Chart.js wordt lokaal meegeleverd (geen externe CDN-afhankelijkheid).

  • KPI’s: actieve abonnees, opt-in-percentage, verzendingen, doorklikratio (CTR), conversies en toegewezen omzet.
  • Tijdreeks over 30 dagen: verzendingen tegenover kliks, met een lijn per dag.
  • Heatmap 7 × 24: de beste verzendmomenten op basis van kliks, uitgezet per weekdag en uur van de dag.
  • Funnel per campagne: verzonden, afgeleverd, geklikt, geconverteerd.
  • Toegewezen omzet: een instelbaar attributievenster (standaard 72 uur) koppelt elke klik aan de eerste aankoop die die abonnee binnen het venster doet.
  • CSV-export van alle gebeurtenissen voor een AVG-audit of een BI-integratie.

Klantpagina: Mijn account → Meldingen

Er wordt automatisch een eigen pagina Mijn account → Meldingen aan het WooCommerce-dashboard toegevoegd. De klant vindt daar vier blokken:

  • Dit apparaat: de huidige status (ingeschakeld, uitgeschakeld, geblokkeerd door de browser, niet ondersteund), met een knop om meldingen op dit apparaat in of uit te schakelen.
  • Al uw apparaten: lijst van geabonneerde toestellen (type, browser, taal, laatste activiteit), met de mogelijkheid om per apparaat of in één klik voor alles uit te schrijven.
  • Mijn voorkeuren: selectievakjes voor de ingebouwde topics (Nieuw, Promoties, Weer op voorraad). Opslaan verloopt via REST met een bevestiging.
  • Meldingsgeschiedenis: de 30 laatst ontvangen meldingen, met titel, tekst, pictogram, link en datum.

De URL is in het Frans /my-account/df-push-notifications/. Het rewrite endpoint wordt geregistreerd met het masker EP_ROOT | EP_PAGES, met een zelfherstel op init:999 dat een ontbrekende regel opmerkt (bijvoorbeeld na een gelijktijdige permalinkflush) en automatisch opnieuw flusht.

De klantacties (uitschrijven, voorkeuren) verlopen via de REST-routes onder df-push/v1/account/*, geauthenticeerd met cookie plus de nonce wp_rest. Er kan geen enkele actie op een ander account worden uitgevoerd, ook niet door de apparaatidentificatie in het verzoek aan te passen.

AVG en toestemmingsregister

De AVG-conformiteit is ingebouwd, niet cosmetisch toegevoegd. Elke opt-in en elke uitschrijving wordt vastgelegd in de tabel dfpush_consent_log met:

  • de identificatie van de abonnee;
  • de actie: subscribe of unsubscribe;
  • het IP-adres gehasht in SHA-256 (het leesbare IP-adres wordt nooit bewaard);
  • de user-agent;
  • een tijdstempel in UTC.

De ingebouwde WordPress Privacy Exporters en Erasers zijn aangesloten: een klant kan de export of verwijdering van zijn persoonsgegevens aanvragen via Gereedschap → Persoonlijke gegevens exporteren of Gereedschap → Persoonlijke gegevens wissen. De plugin neemt dan zijn abonnementen, topics, inbox en toestemmingsregister op in het antwoord, of verwijdert die naargelang de aanvraag.

Tabblad Instellingen: antispam en attributie

Dit tabblad bundelt de instellingen die uw abonnees ontzien, plus het attributievenster:

  • Stille uren: de periode waarin geen enkele melding wordt verstuurd. Houdt rekening met de tijdzone van de abonnee (bij de opt-in van zijn toestel gelezen via Intl.DateTimeFormat().resolvedOptions().timeZone). Standaard van 22 tot 8 uur lokale tijd.
  • Frequentielimiet: maximaal aantal meldingen per dag per abonnee. 0 betekent onbeperkt.
  • Smart send time: optimaliseert het verzendmoment per abonnee op basis van zijn historische kliktijdstippen.
  • Attributievenster: het aantal uren tussen een klik en een bestelling waarbinnen de bestelling aan de melding wordt toegeschreven. Standaard 72 uur.
  • Inbox op de site: schakelt het zwevende belletje met de meldingsgeschiedenis aan de voorkant in of uit.
  • PWA-manifest: schakelt het genereren van het manifest in, zodat de site op mobiel installeerbaar wordt.

Tabblad Webhooks en REST API

Het tabblad Webhooks en API behandelt twee integratiemechanismen.

Uitgaande webhooks

Stel per gebeurtenis een of meer HTTP-endpoints in. Er zijn drie formaten beschikbaar:

  • Slack: payload { text }, compatibel met Slack Incoming Webhooks.
  • Discord: payload { content }, compatibel met Discord Webhooks.
  • Generic: volledige JSON-payload met event, timestamp en data, compatibel met Zapier, n8n en Make.

Beschikbare gebeurtenissen: subscriber.created, campaign.launched, notification.clicked en order.attributed. De verzoeken zijn niet-blokkerend (wp_remote_post met blocking=false), zodat de hoofdverzending nooit wordt vertraagd.

REST API

Onder de namespace df-push/v1 biedt de plugin een publieke verzendroute met token: POST /wp-json/df-push/v1/send met de header X-DF-Push-Token. Het token is met één klik opnieuw te genereren vanuit het beheer.

curl -X POST https://uw-site.com/wp-json/df-push/v1/send 
  -H "Content-Type: application/json" 
  -H "X-DF-Push-Token: UW_TOKEN" 
  -d '{
    "title": "Flitsactie",
    "body": "20 procent op de hele catalogus tot middernacht",
    "url": "https://uw-site.com/promoties",
    "segment": { "lang": "nl", "topic": "promos" }
  }'

Behandel dit token als een wachtwoord. Wie het heeft, kan meldingen naar uw abonnees sturen. Genereer het meteen opnieuw als u een lek vermoedt.

Inbox op de site, PWA en meertaligheid

Drie aanvullende functies dekken de gevallen waarin de gebruiker geen toestemming voor Push heeft gegeven.

  • Inbox op de site: een zwevend belletje (instelbaar aan de voorkant) opent een lijst met de laatste meldingen die de gebruiker heeft ontvangen, gelezen of niet, ook als hij nooit toestemming voor Push heeft gegeven. Vooral nuttig voor iOS Safari vóór 16.4 en voor PWA-gebruikers.
  • PWA-manifest: dynamisch gegenereerd op /df-push-manifest.json, op basis van site_icon of een eigen pictogram. Het filter df_push_manifest is beschikbaar om theme color, display, scope en start_url aan te passen.
  • Meertaligheid: compatibel met Polylang en WPML. De meldingen gaan uit in de taal van de abonnee (bij de opt-in vastgesteld), met terugval op de standaardtaal van de site. De .po– en .mo-bestanden voor FR, EN, ES, DE en IT zijn inbegrepen.

Service Worker en technische architectuur

De Service Worker wordt geserveerd door een standalone PHP-bestand op de URL /wp-content/plugins/df-push/sw.php. Die aanpak omzeilt de routing van WordPress volledig: er is geen enkele kans op interferentie met een cacheplugin, een canonical redirect of een andere template_redirect-handler.

De header Service-Worker-Allowed: / wordt in het antwoord meegestuurd, zodat registratie met het rootbereik mogelijk is (scope: '/'), ook al staat het script onder /wp-content/.

Aan de databasezijde zijn er acht tabellen met het voorvoegsel dfpush_:

  • dfpush_subscribers: abonnees en hun Push-endpoint.
  • dfpush_topic_subs: koppelingen tussen topic en abonnee.
  • dfpush_campaigns: handmatige campagnes met payload, segment en planning.
  • dfpush_notifications: logboek van de individueel verstuurde meldingen.
  • dfpush_events: ruwe gebeurtenissen (opt-in, sent, delivered, clicked, converted) voor de analyses.
  • dfpush_inbox: blijvende kopie van de meldingen voor de inbox op de site.
  • dfpush_stock_waitlist: wachtlijsten voor producten die weer op voorraad komen.
  • dfpush_consent_log: het AVG-register.

Bij het verwijderen (volledige verwijdering via Plugins) worden deze acht tabellen gedropt en alle opties gewist. Alleen deactiveren behoudt de gegevens voor een latere heractivering.

Hooks voor ontwikkelaars

De plugin biedt acties en filters op de belangrijkste punten om het gedrag uit te breiden zonder de kern aan te passen.

  • df_push_booted (actie): gaat af nadat de plugin is opgestart, handig om eigen uitbreidingen te registreren.
  • df_push_payload_build (filter): de JSON-payload die naar de pushdienst gaat aanpassen vóór de versleuteling.
  • df_push_should_send (filter): de verzending op eigen voorwaarden onderbreken (geef false terug om over te slaan).
  • df_push_segment_query (filter): de criteria voor gedragssegmentatie uitbreiden.
  • df_push_webhook_payload (filter): de payloads van de uitgaande webhooks bijstellen.
  • df_push_manifest (filter): het gegenereerde PWA-manifest aanpassen.
  • Geregistreerde Action Scheduler-acties: df_push_send_one, df_push_fan_out, df_push_abandoned_cart, df_push_review_request en df_push_dispatch_campaign.

Veelgestelde vragen en probleemoplossing

De opt-in-prompt verschijnt niet

Drie mogelijke oorzaken: de browsertoestemming is al geweigerd (controleer dat in de browserinstellingen), de toestemming is al gegeven (dan heeft de prompt geen zin meer), of een trigger is niet bereikt (de vertraging is nog niet verstreken, of er is te weinig gescrold). Voer in de JavaScript-console window.DFPush.isSubscribed() uit om de huidige status te controleren.

Het abonneescherm is leeg terwijl een opt-in is gelukt

Controleer in het netwerkpaneel of het verzoek POST /wp-json/df-push/v1/subscribe een code 200 teruggeeft. Vanaf versie 1.0.1 synchroniseert de plugin bij elk paginabezoek automatisch een bestaande PushSubscription opnieuw met de server, en logt ze elke insertfout van de database in error_log.

De Service Worker geeft een registratiefout

Meldt de browser “The script resource is behind a redirect” of “Unexpected token ‘<‘”, test dan rechtstreeks de URL https://uw-site.com/wp-content/plugins/df-push/sw.php. U hoort de JavaScript-code van de Service Worker te zien, met Content-Type: application/javascript en de header Service-Worker-Allowed: /. Ziet u een HTML-pagina met 403, controleer dan de htaccess-regels die het rechtstreeks uitvoeren van PHP-bestanden onder wp-content/plugins/ kunnen blokkeren.

De meldingen komen niet aan op iOS

Safari op iOS ondersteunt Push-meldingen pas vanaf versie 16.4 en alleen voor sites die als PWA zijn geïnstalleerd via de knop Zet op beginscherm. Het PWA-manifest dat de plugin genereert, vergemakkelijkt die installatie. Richt u zich niet specifiek op iOS, dan is dit geen probleem: de andere browsers ontvangen de meldingen gewoon.

Hoe migreer ik vanaf OneSignal of Pusher?

Bestaande abonnees bij die externe diensten zijn niet overdraagbaar: de Push-cryptografie bindt elk abonnement aan een uniek paar (de VAPID-sleutel van de server en het browserendpoint). Uw bezoekers moeten zich dus opnieuw abonneren na de overstap naar DataFirefly Push. U kunt de overgang voorbereiden door de oude SDK enkele dagen vooraf uit te schakelen en de nieuwe ervaring via een aankondigingsbanner te communiceren.

Wat gebeurt er bij het verwijderen?

Alleen deactiveren behoudt alle tabellen en opties: u kunt de plugin opnieuw activeren en verdergaan waar u was. Het volledig verwijderen via Plugins voert uninstall.php uit, dat de acht dfpush_-tabellen dropt, alle opties van de plugin wist (ook de VAPID-sleutels en het API-token) en de crons uit de planning haalt. De permalinks worden bij het volgende verzoek automatisch geflusht.

Was deze pagina nuttig?

Loopt u nog vast? Neem contact op met support