Sconti Fuorilegge: l'Architettura n8n che Traccia il Prezzo Più Basso a 30 Giorni ed Evita le Sanzioni della Direttiva Omnibus
— Cosmio Team

Shopify, WooCommerce e PrestaShop non tracciano lo storico prezzi richiesto dalla direttiva Omnibus. Ecco come costruire con n8n un layer di automazione che calcola il minimo a 30 giorni ed evita le sanzioni Antitrust.
Un venditore Shopify ha posto la domanda in una community di settore: la piattaforma gestisce in automatico l'obbligo di mostrare il prezzo più basso degli ultimi 30 giorni prima di uno sconto? La risposta del supporto Shopify è stata netta: il "prezzo di confronto" nativo esiste, ma nessuno storico viene tracciato in automatico. Chi gestisce il catalogo deve calcolarlo a mano, SKU per SKU, ogni volta che lancia una promozione.
Il problema non è teorico. L'indagine a tappeto ("sweep") condotta dalla Commissione Europea insieme alle autorità di tutela dei consumatori di 23 Stati membri — Italia incluse — ha controllato 314 operatori e-commerce e ha riscontrato che il 30% presentava gli sconti in modo non conforme alla normativa sui prezzi di riferimento. Nel 23% dei casi, le percentuali di sconto del Black Friday erano gonfiate o praticamente inesistenti. In Italia, l'Antitrust (AGCM) ha già sanzionato per oltre 5 milioni di euro un grande player della moda online per prezzi ingannevoli e limitazioni al diritto di recesso — un precedente che chiarisce quanto le sanzioni, previste tra 5.000 e 5.000.000 di euro per pratiche commerciali scorrette, non siano un rischio remoto.
TL;DR — Executive Summary - L'art. 17-bis del Codice del Consumo (recepimento della direttiva Omnibus, in vigore dal 1° luglio 2023) obbliga a mostrare il prezzo più basso applicato negli ultimi 30 giorni prima di ogni sconto comunicato. - Shopify, WooCommerce e PrestaShop offrono solo il "prezzo di confronto" manuale: nessuno storico prezzi persistente, nessun calcolo automatico del minimo a 30 giorni. - Un layer di automazione n8n — webhook a ogni variazione di prezzo, storico su database o Google Sheets, job giornaliero di calcolo del minimo, aggiornamento via API del campo prezzo barrato — chiude il gap senza cambiare piattaforma e-commerce. - Un LLM può generare in pochi secondi il micro-testo legale conforme da affiancare al prezzo scontato, verificando che la dicitura sia corretta prima della pubblicazione.
Il tuo catalogo ha questo problema?
- Il tuo sito mostra "sconto -X%" senza indicare esplicitamente il prezzo più basso degli ultimi 30 giorni accanto al prezzo scontato?
- Alzi il prezzo di listino nelle settimane precedenti a un saldo, per poi "scontarlo" allo stesso livello di prima?
- Gestisci più di 500 SKU senza uno storico prezzi tracciato in automatico (solo il prezzo attuale nel gestionale, nessun log delle variazioni)?
- Prima di ogni campagna promozionale, qualcuno in azienda verifica manualmente, SKU per SKU, quale sia stato il prezzo minimo degli ultimi 30 giorni?
- Hai mai lanciato una promozione stagionale senza sapere con certezza se il prezzo di riferimento indicato fosse legalmente corretto?
Se hai risposto Sì a 3 o più domande, il collo di bottiglia descritto in questo articolo sta probabilmente impattando la tua operatività — le sezioni seguenti mostrano come quantificarlo e affrontarlo. Se hai risposto Sì a meno di 2 domande, il tuo processo è più maturo della media — le sezioni seguenti possono comunque rivelare ottimizzazioni incrementali, specialmente in vista del prossimo Black Friday.
Perché il "prezzo di confronto" nativo non basta
Shopify, WooCommerce e PrestaShop nascono per gestire un prezzo e, al massimo, un prezzo "barrato" da mostrare accanto. Nessuna delle tre piattaforme, nella configurazione standard, conserva uno storico delle variazioni di prezzo né calcola automaticamente il minimo di un intervallo mobile di 30 giorni. Il risultato è un processo di compliance che oggi si regge quasi sempre su controlli manuali, con tre criticità concrete. Per chi gestisce un intero processo di crescita degli ordini, questa automazione si inserisce nello stesso impianto descritto nella guida 2026 all'automazione IA per l'e-commerce italiano, di cui la compliance sui prezzi è un modulo specifico.
| Fattore | Oggi (processo manuale) | Con l'automazione n8n |
|---|---|---|
| Tracciamento storico prezzi | Foglio Excel aggiornato a mano, spesso in ritardo o incompleto | Storico persistente alimentato da webhook a ogni variazione, nessuna voce mancante |
| Calcolo minimo 30gg per SKU | Verifica manuale prima di ogni lancio, impraticabile sopra qualche decina di SKU | Job giornaliero che ricalcola il minimo per ogni SKU in automatico |
| Audit pre-lancio saldi | Controllo a campione, spesso saltato per mancanza di tempo | Blocco automatico degli sconti non conformi prima della pubblicazione |
| Rischio sanzionatorio | Dipende dalla diligenza di chi lancia la promozione quel giorno | Log di conformità generato automaticamente, consultabile in caso di controllo |
La criticità aumenta in modo non lineare con il numero di SKU: un catalogo di 50 prodotti può ancora essere controllato a mano in un paio d'ore; un catalogo di 2.000 SKU con sconti flash settimanali rende il controllo manuale economicamente insostenibile, ed è proprio lì che si concentrano gli errori rilevati negli sweep UE — un tema che riguarda trasversalmente l'intero settore e-commerce.
L'architettura: storico persistente, job di calcolo, audit automatico
La soluzione implementativa si costruisce su tre componenti, orchestrati da n8n: un workflow open-source di automazione che si collega via webhook e API REST a Shopify, WooCommerce o PrestaShop senza richiedere sviluppo custom pesante.
Esempio pratico passo-passo (livello avanzato):
Input: un catalogo Shopify con webhook products/update attivo, un database PostgreSQL (o, per volumi contenuti, un Google Sheet) come storico prezzi, e un job n8n schedulato ogni notte alle 02:00.
Workflow:
- Nodo Webhook: riceve l'evento
products/updateda Shopify ogni volta che il campopriceocompare_at_pricecambia, e scrive una riga nello storico:{sku, prezzo, timestamp}. - Nodo Cron (giornaliero): interroga lo storico con una query che filtra gli ultimi 30 giorni per ogni SKU e calcola il minimo.
- Nodo HTTP Request: aggiorna via API REST il campo
compare_at_pricedi Shopify con il minimo calcolato, prima che qualcuno lanci un nuovo sconto. - Nodo IF: se lo sconto configurato manualmente risulta inferiore al minimo storico registrato (cioè il prezzo "da" dichiarato è falso), blocca la pubblicazione e notifica via email il team marketing.
Dati di esempio nello storico:
| SKU | Prezzo | Data registrazione |
|---|---|---|
| ZAINO-URB25L | 89,00€ | 2026-09-01 |
| ZAINO-URB25L | 69,00€ | 2026-09-05 |
| ZAINO-URB25L | 59,00€ | 2026-09-20 |
Output atteso: il sistema calcola automaticamente che il prezzo più basso degli ultimi 30 giorni per "Zaino Urban 25L" è 59€, aggiorna il campo compare_at_price prima che il team lanci uno sconto al 40% il 3 ottobre, e genera un log di conformità con timestamp consultabile in caso di controllo da parte dell'Antitrust.
Sullo stesso principio si basano app di settore come Omnibus by Netkodo o Omnibus Price Manager, che offrono una versione "pronta all'uso" dello storico prezzi per chi non vuole costruire il workflow internamente. La scelta tra costruire con n8n o adottare un'app verticale dipende da due variabili concrete: se il catalogo supera le 2.000 SKU e serve integrazione con più canali di vendita (marketplace, negozio fisico, listini B2B), un workflow n8n custom è preferibile perché scala senza costi per-SKU crescenti; se il catalogo è sotto le 500 SKU e l'obiettivo è solo la conformità sul singolo store Shopify, un'app verticale con abbonamento mensile fisso richiede meno effort di implementazione. Per il monitoraggio dei prezzi competitor — utile per capire se lo sconto è anche competitivo, non solo conforme — Prisync resta un riferimento di mercato, con piani che partono da un tracciamento di circa 100 prodotti; la stessa logica di monitoraggio automatizzato dei competitor è approfondita nel caso applicato a dynamic pricing su WooCommerce e Shopify.
Come usare l'IA Generativa per automatizzare il micro-testo legale
Il software di settore rimane al centro del processo: n8n gestisce il calcolo del minimo e l'aggiornamento del prezzo, le app Omnibus gestiscono la visualizzazione sul frontend. Un LLM colma un gap specifico che nessuno dei due copre nativamente: generare e verificare il micro-testo legale da mostrare sotto il prezzo scontato, partendo dal testo grezzo della landing promozionale.
Input: il testo bozza della landing, es. "Sconto -40% da 89€ a 53€, ultimo prezzo 69€ il 12/9".
Prompt strutturato: "Verifica se questo testo promozionale indica correttamente il prezzo più basso degli ultimi 30 giorni secondo l'art. 17-bis del Codice del Consumo. Se manca o è formulato in modo ambiguo, genera il micro-testo legale corretto da affiancare al prezzo scontato. Testo: [testo landing]. Prezzo più basso registrato nello storico: 59€ il 20/9."
Output atteso: "Dicitura prezzo precedente assente o ambigua. Micro-testo corretto da inserire sotto il prezzo scontato: 'Prezzo più basso applicato negli ultimi 30 giorni: 59€'."
Per questo caso d'uso, Claude è preferibile quando il volume di landing page da controllare in un'unica sessione è alto (centinaia di varianti per campagna) grazie alla finestra di contesto estesa che permette di caricare più testi insieme; Gemini è preferibile se il team lavora già dentro Google Workspace e vuole integrare il controllo direttamente in Google Sheets o Docs senza cambiare strumento; ChatGPT resta una scelta solida per chi ha già integrazioni API esistenti nel proprio stack di marketing automation. In tutti i casi il flusso tratta solo dati di prodotto e prezzo, non dati personali di clienti: il rischio privacy di questo specifico utilizzo è minimo, ma resta comunque buona prassi non includere mai dati cliente nei prompt di audit copy.
Azioni immediate (questa settimana, senza cambiare software)
- Esporta dal gestionale o da Shopify l'elenco delle prossime 10 promozioni in programma, con relativo prezzo di listino attuale.
- Per ciascuna, apri lo storico ordini o le fatture degli ultimi 30 giorni e individua manualmente il prezzo di vendita più basso effettivamente applicato — non il prezzo di listino, il prezzo a cui hai davvero venduto.
- Confronta il prezzo "da" che intendi comunicare nello sconto con il minimo trovato al punto 2: se sono diversi, la promozione così com'è non è conforme all'art. 17-bis del Codice del Consumo.
- Calcola su queste 10 promozioni la percentuale di casi non conformi: è un indicatore diretto di quanto il problema sia estero al resto del catalogo.
Hai ora un numero concreto — la percentuale di non conformità sulle prossime promozioni — e la prova che il controllo manuale non scala oltre una manciata di SKU a settimana. Se quella percentuale è superiore a zero, il questionario di Analisi IA incrocia questo dato con benchmark tecnici di settore per stimare l'effort di automazione necessario nel tuo caso specifico.
Quale approccio per la tua realtà
| Profilo | Priorità di intervento | Approccio consigliato | Risultato atteso nel primo mese |
|---|---|---|---|
| Meno di 500 SKU, saldi stagionali fissi (2-4 volte/anno) | Media — il rischio è concentrato in poche finestre temporali | App verticale (Omnibus by Netkodo o simile) + verifica manuale pre-lancio | Storico prezzi visibile sul frontend, zero sconti pubblicati senza controllo |
| Oltre 2.000 SKU e/o sconti flash continui (promo settimanali, flash sale) | Alta — il volume rende impossibile il controllo manuale senza errori | Workflow n8n custom con storico su database, job giornaliero e blocco automatico pre-pubblicazione | Log di conformità automatico su 100% delle promozioni, zero intervento manuale ricorrente |
Se il tuo profilo rientra nella riga ad alta priorità, il questionario di Analisi IA genera un assessment architetturale personalizzato che mappa le integrazioni necessarie in 3 minuti.
Dubbi frequenti
La privacy dei clienti è a rischio con questo tipo di automazione? Il flusso descritto tratta esclusivamente dati di prodotto e prezzo — SKU, importi, timestamp — non dati personali di clienti, quindi il perimetro GDPR applicabile è ridotto. Resta comunque necessario usare esclusivamente versioni Enterprise/Business degli strumenti LLM (ChatGPT Enterprise, Claude for Work, Gemini for Google Workspace), che garantiscono che i dati inviati non vengano utilizzati per l'addestramento dei modelli, e verificare il DPA (Data Processing Agreement) del fornitore prima dell'adozione. Nessun dato cliente, anche se raramente presente in questo flusso, deve mai essere caricato su versioni consumer gratuite. Per settori con obblighi normativi più stringenti su altri flussi dati aziendali, resta comunque opportuno valutare soluzioni on-premise o API private.
Un LLM può sbagliare nel generare il micro-testo legale? Sì: un LLM può produrre un'allucinazione o un calcolo errato se i dati di input (lo storico prezzi) sono incompleti. Per questo il modello va usato come layer di generazione e verifica testuale, non come fonte del dato — il minimo a 30 giorni deve sempre arrivare dal job n8n basato sullo storico reale, e il testo generato dall'LLM va controllato da una persona prima della pubblicazione (human-in-the-loop), almeno nella fase di avvio del processo.
Quanto è complesso implementare questa architettura? Il nodo webhook e il job di calcolo giornaliero sono configurazioni standard in n8n, realizzabili in giorni se esiste già familiarità con l'ambiente; l'integrazione via API con Shopify, WooCommerce o PrestaShop richiede credenziali e permessi che un System Integrator configura rapidamente. La complessità cresce se il catalogo è distribuito su più piattaforme (es. Shopify + marketplace) con prezzi non sincronizzati tra loro.
Dove questo approccio ha dei limiti. Il workflow descritto presuppone uno storico prezzi minimamente pulito: se i prezzi sono stati modificati manualmente nel gestionale senza passare dal webhook, il calcolo del minimo a 30 giorni sarà incompleto e inaffidabile quanto il controllo manuale che sostituisce. Per cataloghi sotto le 100 SKU con una sola promozione all'anno, il costo di costruire un'automazione n8n supera probabilmente il rischio reale: in quel caso un controllo manuale trimestrale, supportato da un semplice foglio di calcolo, resta la scelta più efficiente. Infine, l'LLM nella generazione del micro-testo legale non sostituisce una consulenza legale: per campagne promozionali complesse (bundle, sconti progressivi, prezzi B2B differenziati) la formulazione corretta richiede comunque una revisione da un consulente legale o dal commercialista.
Un log di conformità, non solo un prezzo barrato
L'esempio dello "Zaino Urban 25L" mostrato sopra racchiude il punto centrale: non si tratta di mostrare un prezzo barrato più basso per apparire convincenti, ma di avere una prova verificabile — un log con timestamp — che quel prezzo barrato è quello realmente applicato nei 30 giorni precedenti. È la differenza tra una pratica commerciale difendibile in caso di controllo e una sanzione che, come dimostra il precedente da oltre 5 milioni di euro applicato dall'Antitrust a un grande player della moda online, non è un rischio remoto. Se dall'azione immediata di questa settimana è emersa anche una sola promozione non conforme, il questionario di Analisi IA è il passo logico successivo per capire quanto effort richiede automatizzare l'intero processo sul proprio catalogo, prima del prossimo saldo stagionale. Chi lavora già su strategie di pricing dinamico può approfondire l'approccio adottato nel caso fine stagione moda con n8n e Claude, mentre chi preferisce una valutazione guidata dell'intero stack può partire dalla pagina servizi di Cosmio.
Domande Frequenti
Cosa prevede l'art. 17-bis del Codice del Consumo sugli sconti online?
L'articolo, introdotto dal recepimento della direttiva Omnibus (D.Lgs. 26/2023, in vigore dal 1° luglio 2023 per le disposizioni sui prezzi), impone che ogni comunicazione di sconto indichi come prezzo di riferimento il prezzo più basso applicato al pubblico negli ultimi 30 giorni, e non il prezzo di listino. Se il prodotto è in vendita da meno di 30 giorni, va indicato il periodo di riferimento effettivo. Non si applica ai prezzi di lancio con aumenti successivi.
Shopify traccia automaticamente il prezzo più basso degli ultimi 30 giorni?
No. Shopify, come WooCommerce e PrestaShop, offre solo un campo 'prezzo di confronto' (compare_at_price) che va impostato manualmente: nessuna delle piattaforme conserva uno storico delle variazioni di prezzo né calcola in automatico il minimo mobile a 30 giorni. Serve un layer aggiuntivo — un'app verticale come Omnibus by Netkodo o un workflow n8n custom — per ottenere questa funzione.
Quali sono le sanzioni per sconti non conformi alla direttiva Omnibus?
In Italia le pratiche commerciali scorrette, incluse le comunicazioni di sconto ingannevoli, sono sanzionabili dall'Antitrust (AGCM) con importi che vanno da 5.000 a 5.000.000 di euro. Un precedente concreto è la sanzione di oltre 5 milioni di euro applicata a un grande player della moda online per prezzi ingannevoli. A livello UE, uno sweep su 314 operatori ha rilevato che il 30% presentava sconti non conformi.