Wo WooCommerce Gemiddeld

Dynamic Pricing Engine: volledige handleiding

Volledige handleiding: installatie, 4 regeltypes, segmenten, concurrentiescraping, A/B-testen en beveiligingen op 3 niveaus.

Bijgewerkt Moduleversie 1.0.0

Welkom bij de volledige documentatie van Dynamic Pricing Engine, de motor voor dynamische prijsstelling in WooCommerce, uitgegeven door DataFirefly. Deze handleiding behandelt de installatie, de eerste configuratie, elk regeltype, klantsegmentatie, concurrentiescraping, A/B-testen, het logboek, de beveiligingen en het verwijderen.

Vereisten: WordPress 6.0+, WooCommerce 8.0+, PHP 7.4+. Compatibel met HPOS en de Checkout-blokken.

Installatie

De plugin uploaden

  1. Ga in het WordPress-beheer naar Plugins → Nieuwe plugin → Plugin uploaden.
  2. Selecteer het bestand dfdynamicpricing.zip en klik op Nu installeren.
  3. Klik na de installatie op Plugin activeren.

Wat er bij activering gebeurt

De plugin maakt 6 eigen tabellen aan (met het voorvoegsel wp_dfdpe_):

  • wp_dfdpe_rules: de prijsregels
  • wp_dfdpe_logs: het logboek van de aanpassingen
  • wp_dfdpe_segments: de klantsegmenten (3 worden automatisch aangemaakt)
  • wp_dfdpe_competitors: de concurrentiemonitoring
  • wp_dfdpe_ab_tests: de A/B-testen
  • wp_dfdpe_ab_events: de gebeurtenissen voor vertoning, toevoegen aan winkelwagen en conversie

Er worden ook twee crontaken ingepland: de concurrentiescraping (standaard elk uur) en het opruimen van het logboek (dagelijks).

Beheermenu

Er verschijnt een nieuw menu Dynamic Pricing in de zijbalk met 7 submenu’s: Dashboard, Regels, Segmenten, Concurrenten, A/B-testen, Logboek en Instellingen. Alle handelingen vereisen de WordPress-capability manage_woocommerce.

Eerste configuratie (Instellingen)

Loop vóór het aanmaken van uw eerste regel even door Dynamic Pricing → Instellingen om de algemene parameters bij te stellen.

Logboek

  • Logboek inschakelen: standaard aangevinkt. Elke aanpassing wordt vastgelegd met product, regel, klant en context.
  • Bewaartermijn (dagen): standaard 60 dagen. Het automatisch opruimen draait dagelijks.

Het logboek is beperkt tot 1 regel per sessie, product en uur, om overstroming te voorkomen. U kunt het volledig uitschakelen als u het niet gebruikt.

Algemene beveiligingen

  • Bodemprijs (procent van de oorspronkelijke prijs): bijvoorbeeld 70 betekent nooit onder 70 procent van de oorspronkelijke prijs. 0 schakelt dit uit.
  • Plafondprijs (procent van de oorspronkelijke prijs): bijvoorbeeld 130 betekent nooit boven 130 procent. 0 schakelt dit uit.
  • Nooit onder de inkoopprijs verkopen: schakel dit in als u de kostprijs in een productmeta opslaat.
  • Metasleutel van de inkoopprijs: standaard _cost (compatibel met WooCommerce Cost of Goods).

Concurrentiescraper

  • Uitvoeringsfrequentie: elk uur, tweemaal per dag of dagelijks. De scraper verwerkt 25 URL’s per batch.

Weergave aan de voorkant

  • De oorspronkelijke prijs doorgestreept tonen: handig voor een zichtbaar actie-effect. Schakel dit uit bij vertrouwelijke A/B-testen.

Uw eerste regel aanmaken

Ga naar Dynamic Pricing → Regels → Toevoegen. Elke regel heeft dezelfde basisvelden, ongeacht het type.

Gemeenschappelijke velden

  • Naam: interne aanduiding, handig in het logboek (bijvoorbeeld “Happy hour 18 tot 20 uur”).
  • Type: Tijdstip, Voorraad, Klantsegment of Concurrent.
  • Status: Actief of Inactief. Een inactieve regel wordt nooit geëvalueerd.
  • Prioriteit: de regels draaien in oplopende volgorde van prioriteit. Elke regel werkt op het resultaat van de vorige.
  • Bereik: Globaal, Categorie, Tag of een specifiek product.
  • Aanpassing: Percentage, Vast bedrag, Vaste waarde of Concurrent volgen (alleen bij het type Concurrent).
  • Bodem en plafond: optionele beveiligingen op regelniveau.
  • Datumvenster: begin- en einddatum om de regel alleen tijdens een bepaalde periode actief te maken.
  • A/B-test: optionele koppeling met een A/B-test en de variant ervan (zie het onderdeel A/B-testen).

Tip voor de prioritering: begin met de breedste regels (globaal) op een lage prioriteit en verfijn daarna met gerichte regels op een hogere prioriteit. De algemene beveiligingen uit Instellingen gelden altijd als laatste.

Type 1: regel op tijdstip

Past de prijs aan op basis van het uur en de dag van de week. Ideaal voor een happy hour, weekendacties of nachttarieven.

Beschikbare voorwaarden

  • Dagen van de week: selecteer een of meer dagen (maandag tot zondag, ISO-formaat).
  • Begin- en eindtijd: in 24-uursformaat. Periodes die middernacht overschrijden, worden automatisch afgehandeld (bijvoorbeeld 22 tot 2 uur).
  • Tijdzone: site (standaard, gebruikt de WordPress-tijdzone) of een specifieke zone (bijvoorbeeld Europe/Amsterdam).

Concrete voorbeelden

  • Happy hour: min 15 procent, donderdag en vrijdag, 18 tot 20 uur, tijdzone Europe/Amsterdam.
  • Weekendactie: min 10 procent, zaterdag en zondag, 0 tot 23.59 uur.
  • Nachttarief: plus 5 procent, elke dag, 22 tot 6 uur (overschrijdt middernacht, wordt automatisch afgehandeld).

Type 2: regel op voorraad

Past de prijs aan op basis van het voorraadniveau van het product. Handig om overtollige voorraad snel weg te werken of om schaars wordende artikelen op te waarderen.

Beschikbare voorwaarden

  • Operator: <, <=, ==, >=, >.
  • Drempel: een geheel getal.
  • Modus: Absoluut (aantal eenheden) of Percentage van de beginvoorraad (vereist de meta _initial_stock op het product).

Concrete voorbeelden

  • Uitverkoop: voorraad >= 50 (overvoorraad) geeft min 20 procent.
  • Schaarste: voorraad < 5 geeft plus 10 procent.
  • Percentage van de beginvoorraad: modus percentage, voorraad < 20 procent van de beginvoorraad geeft min 5 procent.

Om de modus Percentage te gebruiken, voegt u een metaveld _initial_stock toe aan uw producten (via WP All Import, ACF of een eenvoudige update_post_meta). Zonder die meta wordt de modus percentage genegeerd.

Type 3: regel op klantsegment

Past een aanpassing alleen toe op klanten die tot een of meer gedefinieerde segmenten behoren.

Beschikbare voorwaarden

  • Segmenten: een of meer bestaande segmenten (zie het onderdeel Segmenten).
  • Overeenkomst: Any (de klant hoort bij minstens één segment) of All (hij hoort bij alle segmenten).

Concrete voorbeelden

  • Loyaliteit: segment loyal-customers, aanpassing min 10 procent.
  • Heractivering: segment dormant (zelf aan te maken), aanpassing min 20 procent gedurende 7 dagen.
  • B2B: segment b2b (rol wholesale), aanpassing min 25 procent.

Type 4: regel op concurrentieprijs

Stemt uw prijs af op die van een concurrent die u in het onderdeel Concurrenten hebt ingesteld. Er zijn drie strategieën beschikbaar.

Strategieën

  • Match: uw prijs wordt exact de prijs van de concurrent.
  • Undercut: uw prijs gaat onder die van de concurrent, in procenten of met een vast bedrag.
  • Overprice: uw prijs gaat boven die van de concurrent (premiumpositionering).

Beschikbare voorwaarden

  • Modus: Percentage of Vast bedrag.
  • Bedrag: percentage (bijvoorbeeld 5 voor 5 procent) of een bedrag in de valuta.
  • Maximale ouderdom van de gegevens (uren): daarboven worden de scrapinggegevens als te oud beschouwd en valt de regel terug op het terugvalgedrag.
  • Terugval: het gedrag wanneer de concurrentiegegevens niet beschikbaar zijn (bijvoorbeeld een neutrale aanpassing toepassen of de regel overslaan).

Concreet voorbeeld

Undercut van 3 procent op concurrent A, met een maximale ouderdom van 6 uur. Is concurrent A al meer dan 6 uur niet gescrapet, dan wordt de regel overgeslagen en blijft de prijs ongewijzigd.

Klantsegmenten

Een segment is een combinatie van criteria die een groep klanten afbakent. Eenmaal aangemaakt, kan een segment worden aangesproken door een regel van het type Klantsegment.

Segmenten die bij activering worden aangemaakt

  • new-customers: klanten met 0 of 1 bestelling.
  • loyal-customers: klanten met 5 bestellingen of meer.
  • vip: klanten die minstens 500 euro hebben uitgegeven.

Een segment aanmaken

Bepaal via Dynamic Pricing → Segmenten → Toevoegen:

  • Naam en slug (automatisch gegenereerd als u dit leeg laat).
  • Beschrijving (optioneel, voor uw team).
  • Criteria: voeg zoveel regels toe als nodig. Aan alle criteria moet worden voldaan (logische EN).
  • Status: actief of inactief.

Beschikbare velden voor de criteria

  • order_count: het aantal bestellingen van de klant.
  • total_spent: het totaal uitgegeven bedrag (in de valuta van de site).
  • is_guest: 1 als de bezoeker niet is ingelogd, anders 0.
  • user_roles: de WordPress-rollen van de klant (bijvoorbeeld customer, subscriber, wholesale).
  • days_since_last_order: het aantal dagen sinds de laatste bestelling.

Beschikbare operatoren

Tien operatoren: ==, !=, >, >=, <, <=, in, not_in, contains en not_contains.

Bij in en not_in scheidt u de waarden in het veld Waarde met komma’s (bijvoorbeeld customer,subscriber).

Gevorderd voorbeeld, segment “Heractivering”: order_count >= 2 plus days_since_last_order >= 60. Dit richt zich op oude klanten die al twee maanden niet meer hebben besteld.

Concurrenten (scraping)

De scraper haalt automatisch de prijs op die op de productpagina van een concurrent staat, met een instelbare frequentie. De opgehaalde prijzen worden vervolgens gebruikt door regels van het type Concurrent.

Een concurrent toevoegen

Via Dynamic Pricing → Concurrenten → Toevoegen:

  1. WooCommerce-product (ID): het ID van het lokale product waaraan de monitoring wordt gekoppeld.
  2. Naam van de concurrent: vrije aanduiding (bijvoorbeeld “Amazon”, “Bol”).
  3. URL: de productpagina van de concurrent die gescrapet moet worden.
  4. Type selector: CSS, XPath, Regex of JSON-LD.
  5. Selector: de selector die naar de prijs wijst (zie de voorbeelden hieronder).
  6. Valuta: standaard de WooCommerce-valuta van de site.
  7. Status: monitoring actief of gepauzeerd.

Types selectors

  • CSS: een gewone CSS-selector. Voorbeelden: .price .amount, #product-price, span[itemprop=price].
  • XPath: een XPath-expressie. Voorbeeld: //span[@class="price"].
  • Regex: een reguliere PHP-expressie. Voorbeeld: /€s*([d,.]+)/, waarbij de eerste vastgelegde groep wordt gebruikt.
  • JSON-LD: automatische detectie via Schema.org. Zoekt naar price, offers.price en offers.lowPrice in de JSON-LD-tags. Laat het veld Selector leeg.

Prijzen inlezen

De scraper verwerkt de Europese notatie (1 299,90) en de Amerikaanse notatie (1,299.90) automatisch. Valutasymbolen en spaties worden opgeschoond.

Handmatig uitvoeren

De knop Nu scrapen naast elke concurrent forceert via AJAX een onmiddellijke update. Handig om een nieuwe selector te testen.

Mogelijke statussen

  • pending: nog nooit gescrapet, wacht op de volgende cron.
  • ok: de laatste uitvoering is gelukt.
  • error: de laatste uitvoering is mislukt (de melding staat in het veld last_error).

Respecteer de voorwaarden van de concurrenten: de scraper doet een eenvoudig HTTP-verzoek met een korte timeout, maar het is aan u om na te gaan of scraping is toegestaan volgens de algemene voorwaarden van de doelsites. In sommige rechtsgebieden is deze praktijk aan regels gebonden.

A/B-testen

Met de ingebouwde A/B-module vergelijkt u meerdere prijsstrategieën op hetzelfde product en meet u het effect in realtime (vertoningen, toevoegingen aan de winkelwagen, conversies, RPV).

Een test aanmaken

Via Dynamic Pricing → A/B-testen → Nieuwe test:

  1. Naam en slug.
  2. Varianten: een lijst met labels, gescheiden door komma’s. Standaard A,B.
  3. Verkeersverdeling: relatief gewicht per variant (automatisch genormaliseerd). Bijvoorbeeld 50/50, 70/30 of 1/1/1 voor drie gelijk verdeelde varianten.
  4. Status: Concept, Loopt, Gepauzeerd of Afgerond. Alleen een test die loopt wijst bezoekers toe.
  5. Venster: optionele begin- en einddatum.

Een regel aan een variant koppelen

Selecteer in het formulier van een regel de A/B-test en de beoogde variant. De regel geldt dan alleen voor bezoekers die aan die specifieke variant zijn toegewezen.

Hoe de toewijzing werkt

Bij de eerste vertoning wijst de plugin de bezoeker volgens de ingestelde gewichten aan een variant toe en slaat die keuze op in een cookie dfdpe_ab. Een aparte sessiecookie dfdpe_sid maakt het mogelijk dezelfde bezoeker gedurende zijn hele sessie te volgen, ingelogd of niet.

Gevolgde gebeurtenissen

  • exposure: de eerste keer dat de bezoeker een prijs ziet die door de test wordt beïnvloed.
  • atc: toevoegen aan de winkelwagen (hook woocommerce_add_to_cart).
  • conversion: afgeronde bestelling (hook woocommerce_thankyou). Het totaalbedrag van de bestelling wordt vastgelegd.

Berekende cijfers (pagina Resultaten)

  • Vertoningen en unieke sessies.
  • CR ATC: het percentage toevoegingen aan de winkelwagen (ATC gedeeld door vertoningen).
  • CR Conv.: het conversiepercentage (conversies gedeeld door vertoningen).
  • Omzet: het totaal van de conversies.
  • RPV: omzet per bezoeker (omzet gedeeld door vertoningen). Dit is het beslissende cijfer: de variant met de hoogste RPV wordt automatisch uitgelicht met een badge Winnaar.

Goede gewoonte: laat een test minstens 2 weken lopen voordat u conclusies trekt. Een betrouwbare A/B-test vraagt enkele duizenden vertoningen om statistisch betekenisvol te worden.

Logboek van de aanpassingen

Elke prijsaanpassing die aan de voorkant wordt toegepast, kan worden gelogd. Het logboek vindt u via Dynamic Pricing → Logboek.

Vastgelegde informatie

  • Datum en tijd.
  • Product en variatie.
  • De regel die is afgegaan (ID).
  • Klant (ID) of anonieme sessie.
  • Oorspronkelijke prijs, eindprijs en het bedrag van de aanpassing.
  • A/B-test en variant (indien van toepassing).
  • Context: frontend, cart of checkout.

Beschikbare filters

U kunt filteren op product-ID, regel-ID of A/B-test-ID. De paginering toont 50 regels per pagina.

Snelheidslimiet

Om overstroming te voorkomen, beperkt de plugin de registratie tot 1 regel per sessie, product en uur. Een sessie die dezelfde productpagina 100 keer binnen een uur bekijkt, levert dus maar één regel op.

Automatisch opruimen

Een dagelijkse crontaak (dfdpe_cron_purge_logs) verwijdert regels die ouder zijn dan de ingestelde bewaartermijn (standaard 60 dagen).

Beveiligingen: hoe het werkt

Drie opeenvolgende beschermingsniveaus voorkomen dat uw eindprijs op een gevaarlijk niveau uitkomt.

Niveau 1: beveiligingen per regel

Elke regel kan een eigen bodem en plafond hebben. Die gelden meteen na de aanpassing van die regel. Handig om het effect van één regel af te toppen (bijvoorbeeld “de happy hour mag nooit onder 30 euro komen, wat de oorspronkelijke prijs ook is”).

Niveau 2: algemene beveiligingen

Ingesteld bij Instellingen, in procenten van de oorspronkelijke prijs:

  • Bodemprijs: de eindprijs mag niet onder dat percentage komen.
  • Plafondprijs: de eindprijs mag dat percentage niet overschrijden.

Voorbeeld: bodem op 70 procent en plafond op 130 procent. Een product van 100 euro kan dan nooit onder 70 euro zakken of boven 130 euro uitkomen, welke regels er ook worden toegepast.

Niveau 3: bescherming van de inkoopprijs

Is deze bescherming in de instellingen actief, dan voorkomt ze dat de eindprijs onder de waarde van de meta _cost komt (of onder de eigen sleutel die u instelt). Dat is de ultieme garantie om nooit met verlies te verkopen.

De drie niveaus stapelen en worden in deze volgorde toegepast: regel, dan algemeen, dan kostprijs. De eindprijs is altijd het best beschermde resultaat van de drie.

Compatibiliteit met HPOS en cache

HPOS (High-Performance Order Storage)

De plugin verklaart bij de initialisatie haar compatibiliteit met custom_order_tables en cart_checkout_blocks. Hebt u HPOS in WooCommerce ingeschakeld, dan hoeft u niets extra’s te doen.

Cache van variatieprijzen

WooCommerce cachet de minimum- en maximumprijzen van variabele producten via een hash. De plugin voegt via het filter woocommerce_get_variation_prices_hash een dynamische seed toe aan die hash (gebruiker plus sessie plus een blok van 5 minuten), waardoor WooCommerce de prijzen op het juiste moment herberekent zonder de cache voor andere bezoekers te breken.

Veelgestelde vragen

Kan ik meerdere regels op hetzelfde product combineren?

Ja. De regels draaien in volgorde van prioriteit, waarbij elke regel op het resultaat van de vorige werkt. Zo kunt u “min 10 procent VIP” laten volgen door “plafond op 130 procent van de kostprijs”.

Gelden de regels ook in de winkelwagen en bij het afrekenen?

Ja. Een hook op woocommerce_before_calculate_totals herberekent de prijzen van de winkelwagenregels bij elke weergave.

Is de plugin compatibel met servercaches (Redis, Varnish)?

Ja, maar als uw cache op paginaniveau erg agressief is, kunnen de getoonde prijzen uit de cache komen. Voor een betrouwbare dynamische weergave sluit u de productpagina’s uit van de full page cache, of gebruikt u ESI-fragmenten.

Kan ik de plugin deactiveren zonder mijn regels kwijt te raken?

Ja. Deactiveren verwijdert geen enkele gegevens. Alleen het verwijderen via Plugins → Verwijderen start het script uninstall.php.

Hoe exporteer ik mijn gegevens?

Alle gegevens staan in de 6 tabellen wp_dfdpe_*. U kunt ze exporteren via phpMyAdmin, WP-CLI (wp db export) of elk WordPress-back-uphulpmiddel.

Verwijderen

Volledig verwijderen doet u zo:

  1. Deactiveer de plugin via Plugins.
  2. Klik op Verwijderen.

Het script uninstall.php verwijdert dan:

  • de 6 tabellen wp_dfdpe_*;
  • de 9 aangemaakte WordPress-opties;
  • de ingeplande crontaken.

Verwijderen is definitief en onomkeerbaar. Maak vooraf een back-up van uw regels, segmenten en logboek als u nog wilt kunnen terugkeren.

Support

Uw licentie omvat 12 maanden ondersteuning en updates. Neem bij vragen contact met ons op via datafirefly.com/contact.

Was deze pagina nuttig?

Loopt u nog vast? Neem contact op met support