Ventas y visitas de productos: mostrar estadísticas en tiempo real para impulsar las decisiones de compra
Pasa por delante de dos restaurantes con menús idénticos y, casi sin pensarlo, elegirás el que está lleno. En Internet, el cliente no puede ver la cola, así que la página de producto tiene que contárselo. Un "847 vendidos" o "32 personas viendo ahora", colocado junto al botón de Añadir al carrito, hace por un producto lo mismo que un comedor lleno por un restaurante: le dice a un comprador indeciso que otras personas ya tomaron esa decisión y les fue bien. Este artículo trata específicamente de la versión en tiempo real y por producto de esa señal en una página de producto de PrestaShop: el contador de ventas y el contador de visitas que se actualizan para el producto concreto que está viendo el cliente, no una insignia general de la tienda ni una ventana emergente en una esquina.
Última actualización: junio de 2026.
Antes de empezar conviene separar dos parientes cercanos, porque confundirlos es donde la mayoría de los comerciantes implementan esto mal. Un número de confianza para toda la tienda, como "12.400 productos vendidos", es una herramienta distinta con otra función; eso lo tratamos en contador de productos vendidos totales. Una notificación flotante tipo "Alguien en Cracovia acaba de comprar esto" vuelve a ser otro formato; consulta ventana emergente de ventas y la cuestión de si esas notificaciones realmente cambian los resultados en notificaciones de ventas en tiempo real. Este artículo se centra en lo que esas opciones no hacen: números integrados en la propia página, por producto, extraídos de tus datos reales de pedidos y visitas, mostrados en la página de producto.
Los dos números, y qué dice realmente cada uno

El contador de ventas y el contador de visitas se parecen, pero trabajan psicológicamente en direcciones opuestas, y esa diferencia determina dónde usar cada uno.
| Señal | Ejemplo | Qué le dice al comprador | Dónde funciona mejor |
|---|---|---|---|
| Ventas acumuladas | "1.247 vendidos" | Elección probada: más de mil personas pusieron dinero en esto | Artículos de alto valor o de marcas poco conocidas, donde el cliente teme equivocarse |
| Ventas recientes | "23 vendidos en los últimos 7 días" | Demanda actual: no es una ficha olvidada, se está vendiendo ahora | Consumibles de alta rotación, productos de tendencia, cualquier caso en el que "¿sigue siendo relevante?" sea una duda real |
| Visitantes en tiempo real | "32 personas viendo esto ahora" | Competencia: no eres el único que lo está mirando, decide | Productos con stock limitado, ventas flash, artículos únicos o vintage |
| Visitas de hoy | "156 visitas hoy" | Interés sin la presión de un contador en vivo | Tiendas con tráfico medio donde un número en tiempo real se vería demasiado bajo |
¿Y qué? Las ventas acumuladas tranquilizan; la actividad reciente y los visitantes en tiempo real crean una urgencia suave. Un comprador nervioso ante un producto de 600 € quiere seguridad: muestra el contador acumulado. Un cazador de ofertas ante un accesorio rebajado responde a "7 vendidos hoy". Mostrar el número equivocado para el contexto es la razón por la que algunos comerciantes prueban contadores, no ven nada y concluyen que la prueba social "no funciona". Funciona; el número tiene que encajar con la duda.
Hay algo que este artículo deja fuera deliberadamente: las valoraciones con estrellas y los recuentos de reseñas también son prueba social, pero pertenecen a un sistema aparte, con sus propios problemas de moderación, spam y SEO; eso es reseñas integradas frente a reseñas de terceros, no esto.
Dónde guarda ya PrestaShop estos números
La buena noticia es que PrestaShop ya registra la mayor parte de lo que necesitas; simplemente no lo muestra en la tienda. Saber dónde viven los datos te dice qué es una consulta y qué requiere seguimiento nuevo.
Las ventas ya están en la base de datos. Cada línea de pedido vive en ps_order_detail (las columnas product_id y product_quantity), unida a ps_orders para obtener la fecha y el estado del pedido. Un contador de ventas acumuladas de un producto es un SUM(product_quantity) sobre ps_order_detail para ese product_id; un contador de "últimos 7 días" añade un WHERE sobre el date_add del pedido. La decisión importante aquí es qué estados de pedido cuentan. Contar todos los carritos que alguna vez llegaron a un estado provisional inflará el número y, en la práctica, lo convertirá en una mentira; la mayoría de los comerciantes cuentan solo los estados válidos o pagados. PrestaShop también mantiene una tabla separada, ps_product_sale (la columna quantity, expuesta como ventas en las consultas de más vendidos), un agregado de ventas desnormalizado que PrestaShop mantiene cuando se validan los pedidos; pero cuando necesitas lógica personalizada por estado de pedido o por fecha, consultar ps_order_detail directamente con estados válidos explícitos puede ser preferible al total en caché.
La lectura de ventas acumuladas es una sola consulta. PrestaShop establece ps_orders.valid = 1 cuando un pedido alcanza un estado pagado o aceptado, así que unir por esa marca es la forma honesta de contar solo pedidos que realmente ocurrieron (ajusta el prefijo ps_ a tu instalación). Es de solo lectura: no cambia nada:
-- 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);
Ejecuta esas consultas en Parámetros avanzados → Base de datos → Gestor SQL para comprobar con criterio los números reales de un producto antes de poner un contador en la página: si la cifra honesta es pequeña, ese es el producto en el que conviene dejar el contador desactivado.
Las visitas están en parte, pero no del todo. PrestaShop ya cuenta las visitas de página por día en ps_page_viewed (unida mediante ps_page / ps_page_type para resolver a qué producto pertenece una visita a una página de tipo "product"); esos son los datos que usan los módulos de estadísticas de PrestaShop, como Productos más vistos cuando el módulo de estadísticas está instalado y activado. Así que "visto hoy / esta semana" puede leerse directamente de las tablas existentes. Lo que PrestaShop no rastrea de forma nativa es el contador en vivo y concurrente de "X personas viendo ahora": no existe un contador integrado de presencia de sesiones. Ese número requiere su propio seguimiento ligero: un pequeño latido AJAX que registra una sesión contra un producto y la expira tras un par de minutos de silencio. Conviene saberlo antes de prometerte un contador en tiempo real: la mitad es una consulta SQL, la otra mitad es algo que tienes que construir o comprar.
Llevarlo a la página de producto: la parte específica de PrestaShop
Generes los números como los generes, tienen que mostrarse en el lugar correcto del tema, y PrestaShop te da hooks limpios para que no tengas que editar nunca archivos del núcleo (que, de todos modos, una actualización sobrescribiría).
- displayProductPriceBlock: se ejecuta alrededor de la zona del precio, con un $type que puedes comprobar ('after_price', 'weight', etc.). Aquí es donde debe ir un contador de ventas: justo al lado del precio, en la línea principal de visión del cliente.
- displayProductButtons / displayProductActions: junto a Añadir al carrito, el lugar natural para una línea de urgencia como "32 viendo ahora", porque es lo último que se lee antes del clic.
- displayProductAdditionalInfo: debajo del bloque de compra, una ubicación más calmada para "156 visitas hoy", donde informa sin gritar.
El patrón más limpio es un módulo que registre estos hooks y traiga sus propias plantillas .tpl, de modo que una actualización del tema no destruya tus cambios y desactivar el módulo elimine la función de forma limpia. La alternativa, editar product.tpl (o los parciales de templates/catalog/_partials/ en temas 1.7+) directamente, funciona, pero ata la función a un tema y a una versión, y tendrás que rehacerla en la siguiente actualización. Si vas a tocar la plantilla de producto para esto, vale la pena leer antes la lógica de maquetación más amplia: buenas prácticas de diseño de páginas de producto y qué impulsa realmente el clic en anatomía de una página de producto.
Una nota de rendimiento que importa a escala: una implementación ingenua ejecuta un COUNT/SUM nuevo contra las tablas de pedidos en cada carga de página de producto. En un catálogo con mucho tráfico, eso es presión real sobre la base de datos para un número que no necesita ser exacto al segundo. Guárdalo en caché: calcula los contadores de forma programada (cada hora es más que suficiente para cifras acumuladas) o usa la capa de caché de PrestaShop, y lee el valor en caché al renderizar. "Ligero y en caché" es la diferencia entre una función que ayuda a la conversión y una que empeora la velocidad de página justo en la página donde la velocidad más importa.
Las reglas de honestidad, y por qué mostrarlas por producto las vuelve estrictas
Aquí es donde mostrar números en un producto concreto no perdona, a diferencia de una insignia para toda la tienda. Un total del sitio de "12.400 vendidos" puede absorber discretamente algunos productos flojos. Un contador integrado aparece en cada producto individualmente, así que cada número incómodo queda expuesto.
- Define un umbral de visualización. Muestra "X vendidos" solo por encima de un mínimo: 50, 100, lo que encaje con tu volumen. "3 vendidos" debajo de un precio no se lee como prueba; se lee como "nadie está comprando esto", que es peor que no mostrar nada. Por debajo del umbral, oculta el contador por completo. Un buen módulo expone esto como ajuste para configurarlo una sola vez.
- Nunca fabriques números. Nada de recuentos de visitas inventados con "base falsa + real", nada de "¡solo quedan 2!" en un producto con 400 unidades en stock, nada de cifras aleatorias de "personas viendo" que se reinician al actualizar. Los clientes hacen capturas y comparan; que te pillen fabricando escasez provoca un daño reputacional duradero, y cada vez es más fácil detectarlo. Si el tráfico real no existe, no muestres el contador de visitantes en ese producto: muéstralo solo en los que de verdad tienen movimiento.
- Ajusta el número a la actividad real. "Visto hoy" debe reflejar datos reales de ps_page_viewed, no un multiplicador. Todo el valor de las estadísticas integradas está en que son verdaderas; en el momento en que un cliente informado sospecha que un número está inventado, todos los demás números de la página (precio, stock, reseñas) heredan la duda.
Si tus números honestos aún no impresionan, no es un fracaso de la táctica; es una señal para usarla de forma selectiva. Actívala en los productos que ya tienen tráfico y ventas, déjala fuera de la cola larga, y la página dirá la verdad en todas partes.
Combinar estadísticas sin saturar la página
Los contadores en tiempo real son un elemento de persuasión entre varios, y apilarlos todos produce una página de producto ruidosa, de vendedor de coches usados, que convierte peor que una página tranquila. La tarea es combinar, no amontonar.
Un contador de ventas junto al precio, combinado con una foto de producto honesta y una estimación de entrega clara, construye un argumento coherente: popular, real, llega pronto. Añadir una línea de visitantes en tiempo real encima de un contador de ventas, encima de una insignia de "popular", encima de una cuenta atrás, hace lo contrario: suena a desesperación. Elige una o dos señales que encajen con la duda específica que provoca ese producto. Sobre dónde encajan las insignias en todo esto (y si se ganan realmente su sitio), insignias y etiquetas de producto profundiza más; para mover a los clientes desde un artículo popular hacia un carrito mayor una vez que confían en él, consulta venta cruzada y venta adicional.
Cómo saber si realmente ha funcionado
No juzgues esto por intuición ni por tres días de datos. Antes de activar los contadores, registra la línea base de los productos a los que apuntas: tasa de conversión de la página de producto (de visitas a añadir al carrito, y de añadir al carrito a pedido) y tasa de rebote en esas páginas. Activa los contadores y después compara las mismas cifras durante al menos 30 días y con un volumen de pedidos significativo: lo suficiente para leer una tendencia, no ruido de una semana a otra. La lectura más limpia es activar las estadísticas en un conjunto de productos comparables y dejar un conjunto similar intacto como control, para que las variaciones estacionales afecten a ambos grupos por igual.
La mayoría de las tiendas que lo hacen con honestidad ven una mejora que merece la pena en los productos donde los números de base ya eran fuertes, y resultados planos o negativos cuando fuerzan contadores en productos débiles. Ese patrón resume toda la lección de este artículo en una frase: las estadísticas de ventas y visitas en tiempo real no crean demanda, difunden la demanda que ya existe. Muestra números reales, en los productos que los tienen, en el lugar que encaja con la duda, y deja que el instinto del restaurante lleno haga el resto.
Si prefieres no construir tú mismo el seguimiento por latido, la caché, el umbral de visualización y los hooks del tema, nuestro módulo Product Sales & Views Live Stats conecta esas piezas desde el panel de administración: contadores extraídos de tus datos reales de pedidos y visitas, un mínimo de visualización para que los productos débiles permanezcan discretos, y lecturas en caché para que el contador no ejecute una consulta nueva en cada carga de página de producto. Las reglas de honestidad anteriores son lo importante; el módulo simplemente las aplica por ti en lugar de dejarlas a la disciplina manual.
Preguntas frecuentes
¿Dónde guarda ya PrestaShop el contador de ventas que quiero mostrar? En ps_order_detail (las columnas product_id y product_quantity), unido a ps_orders para obtener la fecha y la marca de validez. Un contador acumulado es un SUM(product_quantity) sobre los pedidos válidos de ese producto. PrestaShop también mantiene un agregado desnormalizado en ps_product_sale, pero consultar ps_order_detail directamente te permite controlar exactamente qué estados de pedido cuentan.
¿Puede PrestaShop mostrar de serie un contador real de "X personas viendo ahora"? No. PrestaShop cuenta las visitas de página por día en ps_page_viewed (así que "visto hoy / esta semana" es una consulta), pero no tiene un contador integrado de presencia de sesiones en tiempo real. Un número real de "viendo ahora" necesita su propio seguimiento ligero: un latido AJAX que registre una sesión contra un producto y la expire después de un par de minutos.
¿Cuál es el número mínimo que debería mostrar? Define un mínimo: 50 o 100, lo que encaje con tu volumen, y oculta el contador por debajo de ahí. "3 vendidos" debajo de un precio se lee como "nadie está comprando esto", que es peor que no mostrar nada. Un buen módulo expone este umbral como ajuste.
¿Un contador en cada producto no ralentizará mi tienda? Sí, si ejecuta un COUNT/SUM nuevo en cada carga de página. Guarda las cifras en caché: calcúlalas de forma programada (cada hora basta para contadores acumulados) y lee el valor en caché al renderizar. "Ligero y en caché" es la diferencia entre una función que ayuda a la conversión y una que arrastra la velocidad justo en la página donde más importa.
¿Está bien engordar los números para que parezca que hay más actividad? No. Nada de recuentos de visitas con base falsa, nada de "solo quedan 2" en un producto con 400 unidades en stock, nada de números aleatorios de visitantes que se reinician al actualizar. Los clientes hacen capturas y comparan; cuando un número parece inventado, todos los demás números de la página (precio, stock, reseñas) heredan la duda. Muestra cifras reales solo en los productos que de verdad las tienen.
Comentarios
Aún no hay comentarios. ¡Sé el primero!
Sé el primero en hacer una pregunta o compartir una opinión útil.
Dejar un comentario
Comparte una pregunta, un detalle de instalación o una opinión que pueda ayudar a otro lector.