"1.247 venduti." Due parole e un numero, appena sotto il prezzo — e per un acquirente che non ha mai sentito parlare del tuo negozio risponde all'unica domanda che conta davvero: qualcun altro si è fidato abbastanza da pagare? Un contatore del totale venduto prende un dato che il tuo database conosce già e lo mette nel punto in cui si decide l'acquisto. Questo articolo parla proprio di quel numero: il conteggio cumulativo, da sempre, delle unità vendute, mostrato come badge statico nella pagina prodotto. Non il ticker live "12 persone stanno guardando ora", non il popup "qualcuno a Monaco ha appena comprato questo prodotto" — quelli sono segnali diversi, con funzioni diverse, e li colleghiamo più sotto. Il contatore storico ha un solo compito: trasformare la tua cronologia vendite in prova.

Ultimo aggiornamento: giugno 2026.

Cosa significa davvero "totale prodotti venduti" in PrestaShop — e dove si trova il numero

Contatore a palette luminoso circondato da pacchi impilati e borse della spesa, a rappresentare un contatore di prodotti venduti come riprova sociale
Un contatore di vendite in tempo reale trasforma uno storico ordini silenzioso in una riprova sociale visibile che ispira fiducia.

Prima di mostrare un conteggio delle vendite, devi sapere quale numero stai mostrando, perché PrestaShop ne memorizza diversi che sembrano simili ma hanno significati diversi. Sbagliarlo è l'errore di implementazione più comune che vediamo.

Cosa vuoi ottenereDove si trovaChe cos'è davvero
Unità effettivamente venduteps_order_detail.product_quantity, sommato per quel prodotto su tutti gli ordini validiIl conteggio storico corretto — ogni riga d'ordine mai acquistata.
Stock disponibileps_stock_available.quantity (e il mirror legacy ps_product.quantity)Ciò che resta da vendere — non ciò che è stato venduto. Mostrarlo come "venduto" è sbagliato.
Colonna "Vendite" nelle statisticheps_product_sale (mantenuta dalla classe ProductSale quando gli ordini vengono convalidati)Un aggregato in cache che PrestaShop mantiene per la dashboard dei prodotti più venduti.

Quindi cosa significa per te? Il vero totale venduto è una somma su ps_order_detail, collegata a ps_orders per contare solo gli ordini in uno stato valido (pagato, spedito, consegnato) ed escludere carrelli abbandonati, annullati o in errore. Un contatore che include silenziosamente ordini annullati e rimborsati si sta gonfiando da solo — e il giorno in cui un cliente se ne accorge è il giorno in cui quel numero smette di costruire fiducia e comincia a costarla.

La versione corretta di quella query è questa — somma le quantità delle righe d'ordine, ma solo sugli ordini che PrestaShop ha contrassegnato come validi:

SELECT SUM(od.product_quantity) AS units_sold
FROM ps_order_detail od
JOIN ps_orders o ON o.id_order = od.id_order
WHERE od.product_id = :id_product
  AND o.valid = 1;

Il flag o.valid è il filtro decisivo: PrestaShop lo imposta a 1 solo quando un ordine raggiunge uno stato che il commerciante ha segnato come "logable" (pagato, spedito, consegnato), quindi collegarsi a quel dato è ciò che esclude gli ordini abbandonati, annullati e in errore. Eseguirlo però con un GROUP BY su ogni pagina prodotto diventa proprio il problema di performance da cui questo articolo mette in guardia — ed è il motivo per cui esiste la tabella in cache descritta sotto.

PrestaShop offre già una scorciatoia più pulita: la tabella ps_product_sale, mantenuta aggiornata dalla classe ProductSale di PrestaShop ogni volta che un ordine viene convalidato (gli stessi dati dietro Statistiche → Prodotti più venduti nel pannello di amministrazione). Leggere lì la colonna quantity in cache è molto più leggero che sommare i dettagli ordine a ogni caricamento pagina — e conta, perché la pagina prodotto è uno degli URL più visitati del tuo negozio e non vuoi eseguire un pesante GROUP BY per ogni visitatore.

Perché un contatore dei venduti funziona — e dove sta il limite

La riprova sociale funziona perché le persone guardano cosa fanno gli altri quando devono decidere in condizioni di incertezza. In un negozio fisico puoi vedere altri clienti che prendono in mano i prodotti; online, quel segnale scompare se non lo reintroduci. Un contatore dei venduti è il modo più quantitativo per farlo — un singolo numero che dice "altre persone hanno già percorso questa strada". Tende a essere più efficace sugli acquisti ragionati di fascia media: abbastanza costosi da richiedere rassicurazione, abbastanza accessibili da non spingere l'acquirente a leggere una dozzina di recensioni prima. Sui prodotti da impulso il cliente si ferma appena; sui prodotti ad alto prezzo farà comunque ricerche, con o senza badge.

Il confine onesto è questo: un contatore dei venduti è un segnale dentro un insieme più ampio, non un numero magico. Convalida la popolarità, ma non dice nulla sul fatto che il prodotto sia valido — quello è il ruolo delle recensioni prodotto, che portano un peso qualitativo che un conteggio grezzo non può avere. I due elementi si completano: "238 venduti · 4,7 stelle · 41 recensioni" è molto più forte di ciascuno preso da solo, perché risponde sia a "è popolare?" sia a "chi l'ha comprato è rimasto soddisfatto?" Se il tuo negozio si affida a widget di recensioni di terze parti, vale la pena capire perché da soli non bastano per il segnale di fiducia che un contatore dei venduti può rafforzare.

Quando il numero ti aiuta — e quando conviene nasconderlo

Il punto che molte guide saltano è questo: un contatore dei venduti non è sempre positivo. Lo stesso badge che converte su un prodotto può danneggiarne attivamente un altro. Un contatore intelligente su quando mostrarsi vale più di uno che stampa alla cieca qualunque dato ci sia nel database.

  • Mostralo solo dopo una soglia minima. "2 venduti" suona peggio di nessun contatore — sussurra "nessuno lo vuole". Imposta un minimo (di solito facciamo partire i commercianti intorno a 25–50 unità) e nascondi il badge sotto quella soglia. Un prodotto si guadagna il suo contatore; non nasce con il contatore addosso.
  • Negozio nuovo, nessuna recensione? È qui che il contatore si rende utile. Con zero recensioni e nessuna riconoscibilità del marchio, anche "47 venduti" dice a un visitatore alla prima visita che persone reali hanno acquistato e presumibilmente ricevuto i loro ordini. È la prova che il negozio funziona, non solo il prodotto.
  • Catalogo competitivo? Quando un acquirente confronta lo stesso articolo in tre schede, la pagina che mostra "3.400 venduti" ha un vantaggio sulle due che non mostrano nulla — il conteggio diventa il criterio di spareggio che il cliente non sapeva di cercare.
  • Posizionamento di lusso o esclusività? Disattivalo. Se il racconto del marchio è "edizione limitata, fatto a mano, ne esistono pochi", un conteggio a cinque cifre lo contraddice frontalmente. Non puoi essere esclusivo e di massa nella stessa pagina.
  • Prodotti digitali e temi? Fai attenzione. Un conteggio alto può essere letto come "ce l'hanno già tutti", che per risorse grafiche pensate per rendere un negozio distintivo diventa un'obiezione all'acquisto, non una rassicurazione.

Come presentare il numero perché sembri onesto

La stessa identica cronologia vendite può costruire fiducia o generare sospetto a seconda di come la formatti. Alcune regole reggono bene su negozi diversi:

  • Arrotonda i numeri grandi, mantieni esatti quelli piccoli. "247 venduti" è credibile perché è specifico; "12.847 venduti" sembra sospettosamente preciso e fa pensare "se lo sono inventato?" Oltre qualche migliaio, "12K+ venduti" o "10.000+ venduti" suona più onesto, non meno.
  • Valuta una finestra temporale. "124 venduti questo mese" segnala una domanda attuale, più persuasiva di "5.000 venduti" accumulati in silenzio in quattro anni. Una finestra recente aiuta anche i prodotti più datati, il cui totale storico è modesto ma il cui slancio attuale è reale. In termini PrestaShop significa una somma con limite di data su ps_order_detail collegata alla data dell'ordine — più pesante della tabella in cache, quindi il risultato va messo in cache.
  • Mettilo nella zona decisionale. Il contatore deve stare accanto al prezzo e al pulsante Aggiungi al carrello, dove il cliente sta davvero decidendo — non sepolto in fondo alla pagina o nascosto in una scheda. Nel template prodotto quella è l'area degli hook displayProductActions / displayProductPriceBlock; un contatore renderizzato in basso in displayFooterProduct spreca gran parte della sua forza psicologica. (Per capire dove dovrebbe stare ogni elemento della pagina e perché, vedi l'anatomia della pagina prodotto.)

Il contatore storico contro il ticker in tempo reale — non confonderli

Questa è la distinzione che decide quale strumento ti serve davvero. Un contatore del totale venduto è un dato stabile e cumulativo — cambia lentamente, si può mettere in cache senza problemi e il suo messaggio è "molte persone, nel tempo, hanno scelto questo prodotto". È il tema di questo articolo. È qualcosa di diverso dai segnali in tempo reale della stessa famiglia:

  • Vendite in tempo reale e statistiche di visualizzazione — "9 persone l'hanno acquistato oggi / 23 lo stanno guardando ora" — riguardano slancio e contemporaneità, e vengono ricalcolate di continuo. È una scelta separata, trattata in come mostrare vendite e visualizzazioni in tempo reale.
  • Popup di acquisti recenti — la notifica che scorre e dice "Anna a Cracovia ha appena ordinato questo prodotto" — sono notifiche di vendita in tempo reale e popup di vendita, che creano immediatezza invece di peso accumulato.

Qual è quindi la conclusione pratica? Il contatore storico e il ticker in tempo reale rispondono a obiezioni diverse. "È una scelta sicura?" trova risposta nel volume accumulato; "sta succedendo adesso?" trova risposta nei dati in tempo reale. Molti negozi usano entrambi — ma scegli il contatore statico quando vuoi una rassicurazione discreta e duratura, che non dipenda da un momento di traffico intenso per sembrare convincente.

Come inserirlo in una pagina prodotto PrestaShop

PrestaShop non ha un badge nativo "totale venduto" sul lato pubblico, quindi quel numero va aggiunto. Ci sono tre strade, in ordine crescente di impegno:

StradaImpegnoResiste agli aggiornamenti?Ideale quando…
Modifica del template — leggere il dato vendite in un override del tema child di product.tplMedio (serve uno sviluppatore)Fragile — le modifiche al tema possono rompersi con un aggiornamento e non gestiscono soglie o formattazioneHai esigenze una tantum e tempo di sviluppo interno.
Un modulo basato su hook — mostra il contatore tramite un hook di visualizzazione, senza interventi invasivi sul temaBasso — installazione e configurazione dal pannello di amministrazioneSì — nessun file del core o del tema viene duplicato e mantenuto separatamenteVuoi soglie, formattazione e cache già gestite, e vuoi che il badge sopravviva al prossimo aggiornamento 1.7 → 8 → 9.
Sviluppo personalizzatoAltoDipende da come viene costruitoHai logiche molto specifiche (regole per categoria, varianti A/B) e uno sviluppatore che se ne occupi.

La strada del modulo esiste proprio perché i requisiti che rendono sicuro un contatore dei venduti — escludere gli ordini annullati, nascondere i conteggi bassi, arrotondare quelli grandi, leggere la tabella in cache ps_product_sale invece di sommare i dettagli ordine a ogni caricamento — sono macchinosi da implementare a mano e facili da sbagliare. Un modulo costruito per questo si aggancia alla pagina prodotto con una singola installazione, tiene la query pesante fuori dal percorso critico e si configura interamente dal tuo pannello di amministrazione, invece che tramite una fattura dello sviluppatore. Se un contatore fa parte di un piano più ampio per aumentare le conversioni delle pagine prodotto, la nostra guida a design e conversione della pagina prodotto mostra come si integra con gli altri elementi.

Una nota sulle performance — perché è qui che i contatori fatti in casa sbagliano

La versione ingenua di un contatore dei venduti esegue un SELECT SUM(product_quantity) … GROUP BY su ps_order_detail a ogni singola visualizzazione della pagina prodotto. Su un negozio con uno storico ordini profondo e un traffico discreto, è un rallentamento autoinflitto sulla pagina più importante. Due difese, in ordine di preferenza: leggere la tabella preaggregata ps_product_sale (PrestaShop la mantiene già tramite la classe ProductSale quando gli ordini vengono convalidati, quindi il costo viene pagato una volta in background, non per ogni visitatore); e, se devi calcolare una finestra personalizzata, mettere in cache il risultato per prodotto con un TTL sensato, così il database viene interrogato ogni tanto, non continuamente. Un contatore che peggiora il tempo di caricamento della pagina fa l'opposto di aiutarti a vendere — le pagine lente perdono proprio i clienti che il badge doveva rassicurare.

Dove si colloca il contatore dei venduti nel tuo insieme più ampio di riprova sociale

Un contatore dei venduti è una tessera in un quadro di fiducia più grande, e lavora meglio quando le tessere intorno spingono nella stessa direzione. Il conteggio quantitativo si abbina naturalmente ai segnali qualitativi: valutazioni a stelle e recensioni rispondono a "chi ha comprato è rimasto soddisfatto?"; i badge di fiducia rispondono a "il pagamento è sicuro?"; e i segnali in tempo reale — vendite e visualizzazioni o un popup di acquisto recente — rispondono a "sta succedendo adesso?" Il contributo specifico del contatore storico è un peso duraturo e accumulato: la prova che il percorso su cui stai invitando un acquirente esitante è già stato fatto, migliaia di volte, da persone che hanno pagato e sono tornate con nient'altro in mano se non il prodotto che volevano.

Individua il numero giusto alla fonte (vendite reali, solo ordini validi), mostralo solo quando valorizza il prodotto, formattalo in modo che sembri onesto, posizionalo dove avviene la decisione e tieni la query fuori dal percorso critico di caricamento pagina. Così un dato che il tuo database registra in silenzio dal primo ordine comincia a fare il suo lavoro proprio nel momento in cui un cliente decide se fidarsi di te.

FAQ

Quale numero di PrestaShop è il vero dato delle "unità vendute"?

È la somma di product_quantity in ps_order_detail sugli ordini validi — non il dato dello stock. Lo stock disponibile si trova in ps_stock_available.quantity e indica cosa resta da vendere, cioè l'opposto di ciò che è stato venduto; mostrarlo come "venduto" è l'errore più comune. PrestaShop mantiene anche un aggregato in cache in ps_product_sale, aggiornato dalla sua classe ProductSale quando gli ordini vengono convalidati, ed è il numero più leggero da leggere su una pagina prodotto molto visitata.

Il contatore dei venduti include ordini annullati o rimborsati?

Non dovrebbe, ed è proprio questo il senso dell'unione su o.valid = 1. Senza quel filtro conteresti come vendite anche carrelli abbandonati e ordini annullati, gonfiando il badge. Un contatore gonfiato non si limita a esagerare — nel momento in cui un cliente percepisce che il numero è inventato, passa da segnale di fiducia a motivo per dubitare di tutto il resto della pagina.

Un contatore dei venduti non rallenterà le mie pagine prodotto?

Sì, se lo calcoli nel modo ingenuo — un SUM ... GROUP BY sullo storico ordini a ogni singola visualizzazione pagina, su quello che è già uno degli URL più trafficati. Due difese, in ordine: leggere la tabella preaggregata ps_product_sale che PrestaShop mantiene già in background oppure, se ti serve un dato su una finestra temporale personalizzata, calcolarlo una volta e mettere in cache il risultato per prodotto con un TTL sensato, così il database viene interrogato occasionalmente invece che a ogni visita.

Ogni prodotto dovrebbe mostrare il suo conteggio vendite?

No — un contatore è una risorsa solo sopra una certa soglia. "2 venduti" suona peggio di nessun badge, quindi imposta un minimo (spesso 25–50 unità) e nascondilo sotto quel valore. Disattivalo del tutto per posizionamenti di lusso o in edizione limitata, dove un conteggio alto contraddice la storia di esclusività, e usalo con cautela sui prodotti digitali, dove "ce l'hanno già tutti" può essere letto come un'obiezione invece che come una rassicurazione.

Meglio mostrare un totale storico o una finestra recente?

Dipende dal segnale che vuoi dare. Un totale storico ("5.000 venduti") mostra fiducia accumulata e duratura; una finestra ("124 venduti questo mese") mostra domanda attuale e può aiutare un prodotto più vecchio il cui numero complessivo è modesto ma il cui slancio attuale è reale. La finestra è più pesante da calcolare perché è una somma limitata per data invece di una lettura in cache, quindi il risultato va messo in cache. Molti negozi mostrano l'inquadramento che valorizza meglio il prodotto specifico.

Condividi questo articolo:
David Miller

David Miller

Fondatore, mypresta.rocks

David Miller è uno specialista PrestaShop con oltre dieci anni di esperienza sul campo e fondatore di mypresta.rocks, uno studio di sviluppo con sede a Tychy, in Polonia. Progetta e mantiene un catalogo di 152 moduli PrestaShop — tra cui 21 suite « Revolution » dedicate a SEO, checkout, sicurezza, performance, marketing, ricerca, supporto e gestione del magazzino — che ogni giorno migliorano negozi reali, testati su PrestaShop 1.7.8, 8.x e 9.x. Si occupa inoltre della gestione di negozi in produzione che generano milioni di fatturato annuo, perciò il suo lavoro si misura sulle vendite reali, non sulle demo. La sua esperienza abbraccia l'intero e-commerce — performance, sicurezza, SEO e marketing — e va oltre PrestaShop, fino a WooCommerce, Shopify e sistemi su misura. Sul blog scrive del lato tecnico di PrestaShop: cosa fa davvero la piattaforma, cosa si rompe in produzione e quali soluzioni reggono nel tempo.

Ti è piaciuto questo articolo?

Ricevi i nostri ultimi consigli, guide e aggiornamenti dei moduli nella tua casella di posta.

Commenti

Ancora nessun commento. Sii il primo!

Sii il primo a fare una domanda o a condividere un feedback utile.

Caricamento...
Torna su