Dynamic Pricing Engine — Guida completa
Guida completa: installazione, 4 tipi di regole, segmenti, scraping concorrenza, A/B testing, protezioni 3 livelli.
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
- Dal back-office WordPress, vai su Plugin → Aggiungi nuovo → Carica plugin.
- Seleziona il file
dfdynamicpricing.zipe fai clic su Installa ora. - 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 prezzowp_dfdpe_logs— il log degli aggiustamentiwp_dfdpe_segments— i segmenti cliente (3 pre-caricati automaticamente)wp_dfdpe_competitors— il monitoraggio concorrenzawp_dfdpe_ab_tests— i test A/Bwp_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).
Menu di amministrazione
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:
_costper 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_stockdefinito 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:
- Prodotto WooCommerce (ID): l’ID del prodotto locale a cui collegare il monitoraggio.
- Nome del concorrente: etichetta libera (es.: «Amazon», «ePrice»).
- URL: la pagina prodotto del concorrente da scrappare.
- Tipo di selettore: CSS, XPath, Regex o JSON-LD.
- Selettore: il selettore che punta al prezzo (vedi esempi sotto).
- Valuta: per impostazione predefinita la valuta WooCommerce del sito.
- 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.lowPricenei 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:
- Nome e slug.
- Varianti: elenco di etichette separate da virgole. Predefinito
A,B. - Ripartizione del traffico: peso relativo per variante (normalizzato automaticamente). Ad esempio
50/50,70/30o1/1/1per tre varianti equamente distribuite. - Stato: Bozza, In corso, In pausa o Completato. Solo un test In corso assegna visitatori.
- 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:
- Disattiva il plugin da Plugin.
- 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.