Vendite e visualizzazioni del prodotto: mostrare statistiche in tempo reale per guidare le decisioni d'acquisto
Passa davanti a due ristoranti con menu identici e sceglierai quello pieno senza pensarci. Online, il cliente non può vedere la fila: deve essere la pagina prodotto a raccontargliela. "847 venduti" o "32 persone stanno guardando ora", accanto al pulsante Aggiungi al carrello, fa per un prodotto quello che una sala piena fa per un ristorante: dice a un acquirente indeciso che altre persone hanno già preso quella decisione e ne sono rimaste soddisfatte. Questo articolo parla in modo specifico della versione in tempo reale, per singolo prodotto di quel segnale in una pagina prodotto PrestaShop: il conteggio delle vendite e quello delle visualizzazioni che si aggiornano per il prodotto che il cliente sta effettivamente guardando, non un badge generale del negozio e non un popup nell'angolo.
Ultimo aggiornamento: giugno 2026.
Prima di iniziare vale la pena distinguere due strumenti molto vicini, perché confonderli è il punto in cui molti commercianti sbagliano l'implementazione. Un numero di fiducia valido per tutto il sito, come "12.400 prodotti venduti", è uno strumento diverso con un compito diverso: ne parliamo nel contatore totale dei prodotti venduti. Un toast flottante del tipo "Qualcuno a Cracovia ha appena acquistato questo prodotto" è ancora un altro formato: vedi il popup delle vendite e la questione se quei toast spostino davvero l'ago della bilancia nelle notifiche di vendita in tempo reale. Questo articolo resta concentrato sull'unica cosa che quei formati non fanno: numeri per prodotto inseriti nella pagina, ricavati dai tuoi dati reali di ordini e visite, mostrati direttamente nella pagina prodotto.
I due numeri e cosa comunica davvero ciascuno

Conteggio delle vendite e conteggio delle visualizzazioni sembrano simili, ma lavorano in modo psicologico opposto; questa differenza decide dove conviene usare ciascuno.
| Segnale | Esempio | Cosa comunica all'acquirente | Dove è più forte |
|---|---|---|---|
| Vendite complessive | "1.247 venduti" | Scelta comprovata: più di mille persone hanno speso soldi per questo prodotto | Articoli di valore elevato o di marchi poco conosciuti, quando il cliente teme di fare la scelta sbagliata |
| Vendite recenti | "23 venduti negli ultimi 7 giorni" | Domanda attuale: questa inserzione non è ferma, sta vendendo adesso | Prodotti di consumo a rotazione rapida, articoli di tendenza, tutto ciò per cui "è ancora rilevante?" è un dubbio reale |
| Visitatori in tempo reale | "32 persone stanno guardando ora" | Competizione: non sei l'unico a tenerlo d'occhio, decidi | Articoli con scorte limitate, vendite lampo, prodotti unici o vintage |
| Visualizzazioni di oggi | "156 visualizzazioni oggi" | Interesse senza la pressione di un contatore in tempo reale | Negozi con traffico medio, dove un numero in tempo reale sembrerebbe troppo basso |
Quindi? Le vendite complessive rassicurano; l'attività recente e i visitatori in tempo reale creano una leggera urgenza. Un acquirente nervoso davanti a un articolo da 600 € vuole rassicurazione: mostra il conteggio complessivo. Chi cerca un affare su un accessorio scontato risponde meglio a "7 venduti oggi". Mostrare il numero sbagliato nel contesto sbagliato è il motivo per cui alcuni commercianti provano i contatori, non vedono risultati e concludono che la riprova sociale "non funziona". Funziona; il numero deve corrispondere al dubbio.
Una cosa che questo articolo lascia volutamente fuori: anche le valutazioni a stelle e il numero di recensioni sono riprova sociale, ma appartengono a un sistema separato, con problemi propri di moderazione, spam e SEO: quello è il tema di recensioni integrate o di terze parti, non di questo articolo.
Dove PrestaShop conserva già questi numeri
La buona notizia è che PrestaShop registra già gran parte di ciò che ti serve: semplicemente non lo mostra nel lato pubblico. Sapere dove vivono i dati ti dice cosa è una semplice query e cosa richiede invece un nuovo tracciamento.
Le vendite sono già nel database. Ogni riga d'ordine vive in ps_order_detail (le colonne product_id e product_quantity), collegata a ps_orders per data e stato dell'ordine. Il conteggio delle vendite complessive di un prodotto è una SUM(product_quantity) su ps_order_detail per quel product_id; un conteggio degli "ultimi 7 giorni" aggiunge un WHERE sulla date_add dell'ordine. La decisione importante qui è quali stati ordine contare. Contare ogni carrello che abbia mai raggiunto uno stato provvisorio gonfierà il numero e, a tutti gli effetti, rischia di trasformarlo in una bugia; la maggior parte dei commercianti conta solo gli stati validi/pagati. PrestaShop mantiene anche una tabella separata ps_product_sale (la colonna quantity, esposta come vendite nelle query sui più venduti): un aggregato denormalizzato delle vendite che PrestaShop aggiorna quando gli ordini vengono validati. Ma quando ti serve una logica personalizzata su stati ordine o date, interrogare direttamente ps_order_detail con stati validi espliciti può essere preferibile al totale in cache.
La lettura delle vendite complessive è una singola query. PrestaShop imposta ps_orders.valid = 1 quando un ordine raggiunge uno stato pagato/accettato, quindi usare un join su quel flag è il modo onesto per contare solo gli ordini realmente avvenuti (adatta il prefisso ps_ alla tua installazione). È una lettura sola: non modifica nulla:
-- Lifetime units sold for one product, counting only valid orders
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 = 123 -- the product you're displaying
AND o.valid = 1;
-- "Sold in the last 7 days" — same query, with a date window
SELECT SUM(od.product_quantity) AS units_7d
FROM ps_order_detail od
JOIN ps_orders o ON o.id_order = od.id_order
WHERE od.product_id = 123
AND o.valid = 1
AND o.date_add >= DATE_SUB(NOW(), INTERVAL 7 DAY);
Esegui queste query in Parametri avanzati → Database → Gestore SQL per verificare i numeri reali di un prodotto prima ancora di mettere un contatore nella pagina: se la cifra onesta è bassa, quello è il prodotto su cui lasciare il contatore spento.
Le visualizzazioni ci sono in parte, in parte no. PrestaShop conta già le visualizzazioni di pagina per giorno in ps_page_viewed (collegata tramite ps_page / ps_page_type per capire a quale prodotto appartiene una visita a una pagina "product"): sono i dati usati dai moduli statistiche di PrestaShop, come Prodotti più visti quando il modulo statistiche è installato/attivo. Quindi "visualizzato oggi / questa settimana" può essere letto direttamente dalle tabelle esistenti. Ciò che PrestaShop non traccia nativamente è il dato in tempo reale, simultaneo "X persone stanno guardando ora": non esiste un contatore integrato di presenza sessione. Quel numero richiede un tracciamento leggero dedicato: un piccolo heartbeat AJAX che registra una sessione su un prodotto e la fa scadere dopo un paio di minuti di silenzio. È utile saperlo prima di prometterti un contatore in tempo reale: metà è una query SQL, l'altra metà è qualcosa che devi costruire o acquistare.
Portarli nella pagina prodotto: la parte specifica di PrestaShop
Comunque tu generi i numeri, devono essere visualizzati nel punto giusto del tema, e PrestaShop offre hook puliti così non devi mai modificare i file core (che comunque un aggiornamento sovrascriverebbe).
- displayProductPriceBlock — viene eseguito intorno all'area del prezzo, con un $type che puoi controllare ('after_price', 'weight', ecc.). È qui che deve stare il conteggio delle vendite: proprio accanto al prezzo, nella linea visiva principale del cliente.
- displayProductButtons / displayProductActions — accanto ad Aggiungi al carrello, la posizione naturale per una riga di urgenza come "32 persone stanno guardando ora", perché è l'ultima cosa letta prima del clic.
- displayProductAdditionalInfo — sotto il riquadro d'acquisto, uno spazio più discreto per "156 visualizzazioni oggi", dove informa senza gridare.
Il modello più pulito è un modulo che registra questi hook e porta con sé i propri template .tpl, così un aggiornamento del tema non cancella le modifiche e disattivare il modulo rimuove la funzione in modo pulito. L'alternativa, cioè modificare direttamente product.tpl (o i partial templates/catalog/_partials/ nei temi 1.7+), funziona, ma lega la funzione a un tema e a una versione, e dovrai rifarla al prossimo aggiornamento. Se stai toccando il template prodotto per questo, vale la pena leggere prima la logica più ampia del layout: migliori pratiche per il design della pagina prodotto e cosa spinge davvero il clic nell'anatomia della pagina prodotto.
Una nota sulle prestazioni che conta quando il negozio cresce: un'implementazione ingenua esegue un nuovo COUNT/SUM sulle tabelle degli ordini a ogni singolo caricamento della pagina prodotto. Su un catalogo trafficato è una pressione reale sul database per un numero che non ha bisogno di essere esatto al secondo. Mettilo in cache: calcola i conteggi a intervalli programmati (ogni ora è più che sufficiente per i dati complessivi) oppure usa il livello di cache di PrestaShop, e in fase di rendering leggi il valore già salvato. "Leggero e in cache" è la differenza tra una funzione che aiuta la conversione e una che rallenta la velocità della pagina proprio nel punto in cui la velocità conta di più.
Le regole dell'onestà: e perché la visualizzazione per prodotto le rende severe
Qui mostrare numeri su uno specifico prodotto è molto meno indulgente di un badge valido per tutto il negozio. Un totale del sito di "12.400 venduti" può assorbire silenziosamente qualche prodotto debole. Un contatore inserito nella pagina sta su ogni prodotto singolarmente, quindi ogni numero imbarazzante viene esposto.
- Imposta una soglia di visualizzazione. Mostra "X venduti" solo sopra una soglia minima: 50, 100, qualunque valore sia coerente con i tuoi volumi. "3 venduti" sotto un prezzo non suona come una prova; suona come "nessuno lo compra", che è peggio di non mostrare nulla. Sotto la soglia, nascondi del tutto il contatore. Un buon modulo espone questa opzione come impostazione, così la configuri una volta sola.
- Non inventare mai. Niente conteggi di visualizzazioni inventati con "base falsa + reale", niente "solo 2 rimasti!" su un prodotto con 400 pezzi disponibili, niente numeri casuali di "persone che stanno guardando" che si azzerano all'aggiornamento della pagina. I clienti fanno screenshot e confrontano; farsi scoprire a costruire una scarsità artificiale danneggia la reputazione a lungo, ed è sempre più facile accorgersene. Se il traffico reale non c'è, non mostrare il conteggio dei visitatori su quel prodotto: mostralo solo su quelli davvero frequentati.
- Allinea il numero all'attività reale. "Visualizzato oggi" deve riflettere i dati effettivi di ps_page_viewed, non un moltiplicatore. Tutto il valore delle statistiche inserite nella pagina sta nel fatto che sono vere; nel momento in cui un cliente esperto sospetta che un numero sia inventato, ogni altro numero sulla pagina: prezzo, stock, recensioni, eredita quel dubbio.
Se i tuoi numeri onesti non sono ancora impressionanti, non è un fallimento della tattica: è un segnale per usarla in modo selettivo. Attivala sui prodotti che hanno già traffico e vendite, lasciala fuori dalla coda lunga, e la pagina dirà la verità ovunque.
Combinare le statistiche senza affollare la pagina
I contatori in tempo reale sono un elemento persuasivo tra molti, e impilarli tutti produce una pagina prodotto rumorosa, da venditore aggressivo, che converte peggio di una pagina calma. Il punto è abbinare, non accumulare.
Un conteggio delle vendite accanto al prezzo, abbinato a una foto prodotto onesta e a una stima di consegna chiara, costruisce un argomento coerente: popolare, reale, in arrivo presto. Aggiungere una riga di visitatori in tempo reale sopra un conteggio vendite, sopra un badge "caldo", sopra un timer conto alla rovescia fa l'opposto: comunica disperazione. Scegli il singolo segnale, o i due segnali, che rispondono al dubbio specifico generato da quel prodotto. Per capire dove i badge si inseriscono in questo quadro (e se meritano davvero il loro spazio), badge ed etichette prodotto approfondisce il tema; per portare i clienti da un articolo popolare a un carrello più grande una volta che si fidano, vedi cross-selling e upselling.
Come capire se ha funzionato davvero
Non giudicare questa funzione a sensazione o dopo tre giorni di dati. Prima di attivare i contatori, registra la base di partenza per i prodotti che vuoi colpire: tasso di conversione della pagina prodotto (da visualizzazioni ad aggiunte al carrello, e da aggiunte al carrello a ordine) e frequenza di rimbalzo su quelle pagine. Attiva i contatori, poi confronta gli stessi numeri su almeno 30 giorni e un volume d'ordini significativo: abbastanza per leggere una tendenza, non il rumore da una settimana all'altra. La lettura più pulita consiste nell'abilitare le statistiche su un gruppo di prodotti comparabili e lasciare intatto un gruppo simile come controllo, così le oscillazioni stagionali colpiscono entrambi allo stesso modo.
La maggior parte dei negozi che lo fa in modo onesto vede un aumento interessante sui prodotti in cui i numeri sottostanti erano già forti, e risultati piatti o negativi quando i contatori vengono forzati su prodotti deboli. Questo schema è tutta la lezione dell'articolo in una frase: vendite in tempo reale e statistiche di visualizzazione non creano domanda, la mettono in evidenza quando esiste già. Mostra numeri reali, sui prodotti che li hanno, nello spazio adatto al dubbio da sciogliere, e lascia che l'istinto del ristorante pieno faccia il resto.
Se preferisci non costruire a mano il tracciamento heartbeat, la cache, la soglia di visualizzazione e gli hook del tema, il nostro modulo Product Sales & Views Live Stats collega questi elementi dal pannello di amministrazione: conteggi ricavati dai tuoi dati reali di ordini e visite, una soglia minima di visualizzazione per lasciare silenziosi i prodotti deboli, e letture in cache così il contatore non esegue una nuova query a ogni caricamento della pagina prodotto. Le regole di onestà qui sopra sono il punto; il modulo si limita a farle rispettare al posto tuo, invece di lasciarle alla disciplina.
Domande frequenti
Dove conserva già PrestaShop il conteggio delle vendite che voglio mostrare? In ps_order_detail (le colonne product_id e product_quantity), collegata a ps_orders per data e flag di validità. Un conteggio complessivo è una SUM(product_quantity) sugli ordini validi per quel prodotto. PrestaShop mantiene anche un aggregato denormalizzato ps_product_sale, ma interrogare direttamente ps_order_detail ti permette di controllare con precisione quali stati ordine contare.
PrestaShop può mostrare un vero contatore "X persone stanno guardando ora" appena installato? No. PrestaShop conta le visualizzazioni di pagina per giorno in ps_page_viewed (quindi "visualizzato oggi / questa settimana" è una query), ma non ha un contatore in tempo reale integrato di presenza sessione. Un numero in tempo reale di "persone che stanno guardando ora" richiede un tracciamento leggero dedicato: un heartbeat AJAX che registra una sessione su un prodotto e la fa scadere dopo un paio di minuti.
Qual è il numero minimo che dovrei mostrare? Imposta una soglia: 50 o 100, qualunque valore sia coerente con i tuoi volumi, e nascondi il contatore sotto quel livello. "3 venduti" sotto un prezzo suona come "nessuno lo compra", che è peggio di non mostrare nulla. Un buon modulo espone questa soglia come impostazione.
Un contatore su ogni prodotto non rallenterà il mio negozio? Sì, se esegue un nuovo COUNT/SUM a ogni caricamento di pagina. Metti i dati in cache: calcolali a intervalli programmati (ogni ora è più che sufficiente per i conteggi complessivi) e leggi il valore in cache in fase di rendering. "Leggero e in cache" è la differenza tra una funzione che aiuta la conversione e una che rallenta la pagina proprio dove la velocità conta di più.
Va bene gonfiare i numeri per far sembrare il prodotto più richiesto? No. Niente conteggi di visualizzazioni con base falsa, niente "solo 2 rimasti" su un prodotto con 400 pezzi disponibili, niente numeri casuali di visitatori che si azzerano all'aggiornamento della pagina. I clienti fanno screenshot e confrontano; quando un numero sembra inventato, ogni altro numero nella pagina: prezzo, scorte, recensioni, eredita quel dubbio. Mostra cifre reali solo sui prodotti che le hanno davvero.
Commenti
Ancora nessun commento. Sii il primo!
Sii il primo a fare una domanda o a condividere un feedback utile.
Lascia un commento
Condividi una domanda, un dettaglio di installazione o un feedback utile per un altro lettore.