Wo WooCommerce Intermedio

Dynamic Pricing Engine — Guida completa

Guida completa: installazione, 4 tipi di regole, segmenti, scraping concorrenza, A/B testing, protezioni 3 livelli.

Aggiornato Versione del modulo 1.0.0

Benvenuto nella documentazione completa di Dynamic Pricing Engine, il motore di tariffazione dinamica per WooCommerce di DataFirefly. Questa guida copre installazione, configurazione iniziale, ogni tipo di regola, segmentazione cliente, scraping concorrenza, A/B testing, log, protezioni e disinstallazione.

Requisiti: WordPress 6.0+, WooCommerce 8.0+, PHP 7.4+. Compatibile HPOS e blocchi Checkout.

Installazione

Caricamento del plugin

  1. Dal back-office WordPress, vai su Plugin → Aggiungi nuovo → Carica plugin.
  2. Seleziona il file dfdynamicpricing.zip e fai clic su Installa ora.
  3. Una volta completata l’installazione, fai clic su Attiva plugin.

Cosa succede all’attivazione

Il plugin crea 6 tabelle personalizzate (con prefisso wp_dfdpe_):

  • wp_dfdpe_rules — le regole di prezzo
  • wp_dfdpe_logs — il log degli aggiustamenti
  • wp_dfdpe_segments — i segmenti cliente (3 pre-caricati automaticamente)
  • wp_dfdpe_competitors — il monitoraggio concorrenza
  • wp_dfdpe_ab_tests — i test A/B
  • wp_dfdpe_ab_events — gli eventi di esposizione, ATC e conversione

Vengono anche pianificate due attività cron: lo scraping concorrenza (orario per impostazione predefinita) e la purga del log (giornaliera).

Un nuovo menu Dynamic Pricing appare nella barra laterale con 7 sottomenu: Dashboard, Regole, Segmenti, Concorrenti, A/B Testing, Log, Impostazioni. Tutte le azioni richiedono la capacità WordPress manage_woocommerce.

Configurazione iniziale (Impostazioni)

Prima di creare la tua prima regola, fai un giro veloce in Dynamic Pricing → Impostazioni per regolare i parametri globali.

Log

  • Attiva log: attivato per impostazione predefinita. Ogni aggiustamento viene registrato con prodotto, regola, cliente, contesto.
  • Ritenzione (giorni): 60 giorni per impostazione predefinita. La purga automatica gira ogni giorno.

Il log è rate-limited a 1 voce per sessione, prodotto e ora per evitare il flooding. Puoi disattivarlo completamente se non lo usi.

Protezioni globali

  • Prezzo pavimento (% del prezzo originale): ad esempio, 70 = non scendere mai sotto il 70 % del prezzo originale. 0 = disattivato.
  • Prezzo tetto (% del prezzo originale): ad esempio, 130 = non superare mai il 130 %. 0 = disattivato.
  • Non vendere mai sotto il costo d’acquisto: attivare se memorizzi il costo in un meta prodotto.
  • Chiave meta del costo d’acquisto: _cost per impostazione predefinita (compatibile con WooCommerce Cost of Goods).

Scraper concorrenti

  • Frequenza di esecuzione: oraria, due volte al giorno o giornaliera. Lo scraper elabora 25 URL per batch.

Visualizzazione front-office

  • Mostra prezzo originale barrato: utile per un effetto promo visibile. Da disattivare per test A/B confidenziali.

Crea la tua prima regola

Vai su Dynamic Pricing → Regole → Aggiungi. Ogni regola ha gli stessi campi base, qualunque sia il suo tipo.

Campi comuni

  • Nome: etichetta interna, utile nel log (es.: «Happy hour 18-20»).
  • Tipo: Orario, Stock, Segmento cliente o Concorrente.
  • Stato: Attiva o Inattiva. Una regola inattiva non viene mai valutata.
  • Priorità: le regole vengono eseguite in ordine crescente di priorità. Ogni regola lavora sul risultato della precedente.
  • Portata: Globale, Categoria, Etichetta o Prodotto specifico.
  • Aggiustamento: Percentuale, Importo fisso, Valore definito o Match concorrente (solo con tipo Concorrente).
  • Pavimento / Tetto: protezioni opzionali a livello di regola.
  • Finestra di date: date di inizio e fine per rendere la regola attiva solo durante un periodo dato.
  • Test A/B: collegamento opzionale a un test A/B e alla sua variante (vedi sezione A/B Testing).

Consiglio di priorità: inizia dalle regole più ampie (globali) con priorità bassa, poi affina con regole mirate a priorità più alta. Le protezioni globali configurate in Impostazioni si applicano sempre per ultime.

Tipo 1 — Regola per orario

Aggiusta il prezzo in base all’orario e al giorno della settimana. Ideale per l’effetto happy hour, le promo del weekend o le tariffe notturne.

Condizioni disponibili

  • Giorni della settimana: seleziona uno o più giorni (lunedì-domenica, formato ISO).
  • Ora di inizio / Ora di fine: formato 24h. Gli intervalli che attraversano la mezzanotte sono gestiti automaticamente (es.: 22-02).
  • Fuso orario: sito (predefinito, usa il fuso orario WordPress) o un fuso specifico (es.: Europe/Rome).

Esempi concreti

  • Happy hour: −15 %, giovedì-venerdì, 18-20, fuso Europe/Rome.
  • Promo weekend: −10 %, sabato-domenica, 00-23:59.
  • Prezzo notturno: +5 %, ogni giorno, 22-06 (attraversa la mezzanotte, gestito automaticamente).

Tipo 2 — Regola per stock

Aggiusta il prezzo in base al livello di stock del prodotto. Utile per smaltire rapidamente prodotti in eccesso o valorizzare quelli che stanno diventando rari.

Condizioni disponibili

  • Operatore: <, <=, ==, >=, >.
  • Soglia: numero intero.
  • Modalità: Assoluta (numero di unità) o Percentuale dello stock iniziale (richiede il meta _initial_stock definito sul prodotto).

Esempi concreti

  • Svendita: stock >= 50 (eccesso) → −20 %.
  • Rarità: stock < 5 → +10 %.
  • Percentuale dello stock iniziale: modalità percentuale, stock < 20 % dello stock iniziale → −5 %.

Per usare la modalità Percentuale, aggiungi un campo meta _initial_stock ai tuoi prodotti (via WP All Import, ACF o un semplice update_post_meta). Senza questo meta, la modalità percentuale viene ignorata.

Tipo 3 — Regola per segmento cliente

Applica un aggiustamento solo ai clienti che appartengono a uno o più segmenti definiti.

Condizioni disponibili

  • Segmenti: uno o più segmenti esistenti (vedi sezione Segmenti).
  • Corrispondenza: Any (il cliente appartiene ad almeno un segmento) o All (appartiene a tutti).

Esempi concreti

  • Fedeltà: segmento loyal-customers, aggiustamento −10 %.
  • Riconquista: segmento dormant (da creare), aggiustamento −20 % per 7 giorni.
  • B2B: segmento b2b (ruolo wholesale), aggiustamento −25 %.

Tipo 4 — Regola per prezzo concorrente

Allinea il tuo prezzo a quello di un concorrente configurato nella sezione Concorrenti. Tre strategie disponibili.

Strategie

  • Match: il tuo prezzo diventa esattamente il prezzo del concorrente.
  • Undercut: il tuo prezzo scende sotto quello del concorrente, in percentuale o importo fisso.
  • Overprice: il tuo prezzo sale sopra il concorrente (posizionamento premium).

Condizioni disponibili

  • Modalità: Percentuale o Importo fisso.
  • Importo: percentuale (es.: 5 per 5 %) o importo nella valuta.
  • Età massima dei dati (ore): oltre, i dati di scraping sono considerati troppo vecchi e la regola passa al comportamento di fallback.
  • Fallback: comportamento se i dati concorrente non sono disponibili (ad esempio, applicare un aggiustamento neutro o saltare la regola).

Esempio concreto

Undercut del 3 % del concorrente A, con età massima di 6 ore. Se il concorrente A non è stato scrappato da 6 ore, la regola viene ignorata e il prezzo rimane invariato.

Segmenti cliente

Un segmento è una combinazione di criteri che definisce un gruppo di clienti. Una volta creato, un segmento può essere mirato da una regola di tipo Segmento cliente.

Segmenti pre-caricati all’attivazione

  • new-customers: clienti con 0 o 1 ordine.
  • loyal-customers: clienti con 5 ordini o più.
  • vip: clienti che hanno speso almeno 500 €.

Creare un segmento

Da Dynamic Pricing → Segmenti → Aggiungi, definisci:

  • Nome e Slug (auto-generato se vuoto).
  • Descrizione (opzionale, per il tuo team).
  • Criteri: aggiungi tante righe quante necessario. Tutti i criteri devono essere soddisfatti (logica AND).
  • Stato: attivo o inattivo.

Campi disponibili per i criteri

  • order_count — numero di ordini del cliente.
  • total_spent — totale speso (nella valuta del sito).
  • is_guest — 1 se il visitatore non è connesso, 0 altrimenti.
  • user_roles — ruoli WordPress del cliente (es.: customer, subscriber, wholesale).
  • days_since_last_order — giorni dall’ultimo ordine.

Operatori disponibili

Dieci operatori: ==, !=, >, >=, <, <=, in, not_in, contains, not_contains.

Per in e not_in, separa i valori con virgole nel campo Valore (es.: customer,subscriber).

Esempio avanzato — segmento «Riconquista»: order_count >= 2 + days_since_last_order >= 60. Mira ai vecchi clienti che non ordinano da 2 mesi.

Concorrenti (scraping)

Lo scraper recupera automaticamente il prezzo mostrato su una pagina prodotto di un concorrente, secondo una frequenza configurabile. I prezzi recuperati vengono poi usati dalle regole di tipo Concorrente.

Aggiungere un concorrente

Da Dynamic Pricing → Concorrenti → Aggiungi:

  1. Prodotto WooCommerce (ID): l’ID del prodotto locale a cui collegare il monitoraggio.
  2. Nome del concorrente: etichetta libera (es.: «Amazon», «ePrice»).
  3. URL: la pagina prodotto del concorrente da scrappare.
  4. Tipo di selettore: CSS, XPath, Regex o JSON-LD.
  5. Selettore: il selettore che punta al prezzo (vedi esempi sotto).
  6. Valuta: per impostazione predefinita la valuta WooCommerce del sito.
  7. Stato: monitoraggio attivo o in pausa.

Tipi di selettori

  • CSS: selettore CSS classico. Esempi: .price .amount, #product-price, span[itemprop=price].
  • XPath: espressione XPath. Esempio: //span[@class="price"].
  • Regex: espressione regolare PHP. Esempio: /€s*([d,.]+)/ — si usa il primo gruppo catturato.
  • JSON-LD: auto-rilevamento Schema.org. Cerca price, offers.price, offers.lowPrice nei tag JSON-LD. Lascia il campo Selettore vuoto.

Parsing dei prezzi

Lo scraper gestisce i formati europei (1 299,90) e americani (1,299.90) automaticamente. Simboli di valuta e spazi vengono puliti.

Esecuzione manuale

Il pulsante Scrapa ora accanto a ogni concorrente forza un aggiornamento immediato in AJAX. Utile per testare un nuovo selettore.

Stati possibili

  • pending — mai scrappato, in attesa del prossimo cron.
  • ok — ultima esecuzione riuscita.
  • error — ultima esecuzione fallita (messaggio memorizzato nel campo last_error).

Rispetto dei T&C dei concorrenti: lo scraper effettua una semplice richiesta HTTP con timeout breve, ma sta a te verificare che lo scraping sia autorizzato dai Termini e Condizioni dei siti target. Alcune giurisdizioni regolano questa pratica.

A/B Testing

Il modulo A/B integrato consente di confrontare più strategie di prezzo sullo stesso prodotto e misurare il loro impatto in tempo reale (esposizioni, aggiunte al carrello, conversioni, RPV).

Creare un test

Da Dynamic Pricing → A/B Testing → Nuovo test:

  1. Nome e slug.
  2. Varianti: elenco di etichette separate da virgole. Predefinito A,B.
  3. Ripartizione del traffico: peso relativo per variante (normalizzato automaticamente). Ad esempio 50/50, 70/30 o 1/1/1 per tre varianti equamente distribuite.
  4. Stato: Bozza, In corso, In pausa o Completato. Solo un test In corso assegna visitatori.
  5. Finestra: date opzionali di inizio e fine.

Collegare una regola a una variante

Nel form di una regola, seleziona il test A/B e la variante target. La regola si applicherà solo ai visitatori assegnati a quella variante specifica.

Come funziona l’assegnazione

Alla prima esposizione, il plugin assegna il visitatore a una variante secondo i pesi configurati, poi memorizza questa scelta in un cookie dfdpe_ab. Un cookie di sessione separato dfdpe_sid consente di seguire lo stesso visitatore su tutta la sua sessione, connesso o meno.

Eventi tracciati

  • exposure — prima volta che il visitatore vede un prezzo influenzato dal test.
  • atc — aggiunta al carrello (hook woocommerce_add_to_cart).
  • conversion — ordine finalizzato (hook woocommerce_thankyou). L’importo totale dell’ordine viene registrato.

Metriche calcolate (pagina Risultati)

  • Esposizioni e Sessioni uniche.
  • CR ATC — tasso di aggiunta al carrello (ATC / esposizioni).
  • CR Conv. — tasso di conversione (conversioni / esposizioni).
  • Ricavo — totale delle conversioni.
  • RPV — ricavo per visitatore (ricavo / esposizioni). È la metrica chiave di decisione: la variante con il RPV più alto viene evidenziata automaticamente (badge Vincitore).

Buona pratica: lascia girare un test almeno 2 settimane prima di concludere. Un test A/B affidabile richiede diverse migliaia di esposizioni per raggiungere la significatività statistica.

Log degli aggiustamenti

Ogni aggiustamento di prezzo applicato al front-office può essere loggato. Il log è accessibile via Dynamic Pricing → Log.

Informazioni registrate

  • Data e ora.
  • Prodotto e variazione.
  • Regola attivata (ID).
  • Cliente (ID) o sessione anonima.
  • Prezzo originale, prezzo finale, importo dell’aggiustamento.
  • Test A/B e variante (se applicabile).
  • Contesto: frontend, cart, checkout.

Filtri disponibili

Puoi filtrare per ID prodotto, ID regola o ID test A/B. La paginazione mostra 50 voci per pagina.

Rate-limiting

Per evitare il flooding, il plugin limita la registrazione a 1 voce per sessione, prodotto e ora. Una sessione che consulta 100 volte la stessa scheda prodotto in un’ora genera solo una riga.

Purga automatica

Un’attività cron giornaliera (dfdpe_cron_purge_logs) elimina le voci più vecchie della ritenzione configurata (60 giorni per impostazione predefinita).

Protezioni: come funzionano

Tre livelli di protezione successivi impediscono al tuo prezzo finale di raggiungere un livello pericoloso.

Livello 1 — Protezioni per regola

Ogni regola può definire il proprio pavimento e tetto. Si applicano immediatamente dopo l’aggiustamento di quella regola. Utile per limitare gli effetti di una regola specifica (es.: «l’happy hour non può mai scendere sotto i 30 €, qualunque sia il prezzo originale»).

Livello 2 — Protezioni globali

Definite in Impostazioni, come percentuale del prezzo originale:

  • Prezzo pavimento: il prezzo finale non può scendere sotto questa percentuale.
  • Prezzo tetto: il prezzo finale non può superare questa percentuale.

Esempio: pavimento al 70 % e tetto al 130 %. Un prodotto a 100 € non potrà mai scendere sotto 70 € né superare 130 €, qualunque siano le regole applicate.

Livello 3 — Protezione costo d’acquisto

Se attivata in Impostazioni, questa protezione impedisce al prezzo finale di scendere sotto il valore del meta _cost (o della chiave personalizzata che configuri). È la garanzia ultima per non vendere mai in perdita.

I tre livelli sono cumulativi e si applicano in questo ordine: regola → globale → costo. Il prezzo finale è sempre il risultato più «protetto» dei tre.

Compatibilità HPOS e cache

HPOS (High-Performance Order Storage)

Il plugin dichiara la compatibilità con custom_order_tables e cart_checkout_blocks fin dall’inizializzazione. Nessuna azione aggiuntiva è richiesta se hai attivato HPOS in WooCommerce.

Cache dei prezzi di variazione

WooCommerce mette in cache i prezzi minimo e massimo dei prodotti variabili tramite un hash. Il plugin inietta un seed dinamico (utente + sessione + bucket di 5 minuti) in questo hash tramite il filtro woocommerce_get_variation_prices_hash, il che forza WooCommerce a ricalcolare i prezzi al momento giusto senza rompere la cache per gli altri visitatori.

FAQ

Posso combinare più regole sullo stesso prodotto?

Sì. Le regole vengono eseguite in ordine di priorità, ognuna lavorando sul risultato della precedente. Puoi concatenare «−10 % VIP» e poi «tetto al 130 % del costo».

Le regole si applicano anche al carrello e al checkout?

Sì. Un hook su woocommerce_before_calculate_totals ricalcola i prezzi delle righe del carrello a ogni visualizzazione.

Il plugin è compatibile con le cache server (Redis, Varnish)?

Sì, ma se la tua cache è molto aggressiva a livello di pagina completa, i prezzi mostrati possono essere quelli in cache. Per una visualizzazione dinamica affidabile, escludi le pagine prodotto dalla cache full-page, o usa frammenti ESI.

Posso disattivare il plugin senza perdere le mie regole?

Sì. La disattivazione non elimina alcun dato. Solo la disinstallazione via Plugin → Elimina attiva lo script uninstall.php.

Come esporto i miei dati?

Tutti i dati sono memorizzati nelle 6 tabelle wp_dfdpe_*. Puoi esportarle via phpMyAdmin, WP-CLI (wp db export) o qualsiasi strumento di backup WordPress.

Disinstallazione

Per disinstallare completamente:

  1. Disattiva il plugin da Plugin.
  2. Fai clic su Elimina.

Lo script uninstall.php rimuove quindi:

  • Le 6 tabelle wp_dfdpe_*.
  • Le 9 opzioni WordPress create.
  • Le attività cron pianificate.

La disinstallazione è definitiva e non reversibile. Fai un backup delle tue regole, segmenti e log prima se vuoi poter tornare indietro.

Supporto

La tua licenza include 12 mesi di supporto e aggiornamenti. Per qualsiasi domanda, contattaci via datafirefly.com/contact.

Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza