"1.247 vendidos." Dos palabras y una cifra, justo debajo del precio — y para un comprador que nunca ha oído hablar de tu tienda, responde a la única pregunta que de verdad importa: ¿alguien más ha confiado lo suficiente como para pagar por esto? Un contador de ventas totales toma un dato que tu base de datos ya conoce y lo coloca allí donde se decide la compra. Esta entrada trata específicamente de esa cifra: el recuento acumulado de unidades vendidas desde siempre, mostrado como una insignia estática en la página de producto. No el indicador en directo de "12 personas lo están viendo ahora", ni la ventana emergente de "alguien en Múnich acaba de comprarlo" — esas son señales distintas, con funciones propias, y las enlazamos más abajo. El contador histórico tiene un único objetivo: convertir tu historial de ventas en prueba.

Última actualización: junio de 2026.

Qué significa realmente "productos vendidos en total" en PrestaShop — y dónde vive esa cifra

Contador de paletas luminoso rodeado de paquetes apilados y bolsas de compra, representando un contador de productos vendidos como prueba social
Un contador de ventas en vivo convierte un historial de pedidos silencioso en una prueba social visible que genera confianza.

Antes de mostrar un recuento de ventas, tienes que saber qué cifra estás enseñando, porque PrestaShop guarda varios datos que se parecen, pero significan cosas distintas. Confundirlos es, con diferencia, el error de implementación más común que vemos.

Qué quieres mostrarDónde se guardaQué es realmente
Unidades realmente vendidasps_order_detail.product_quantity, sumado para ese producto en todos los pedidos válidosEl recuento histórico honesto — cada línea de pedido realizada.
Stock disponibleps_stock_available.quantity (y el espejo heredado ps_product.quantity)Lo que queda por vender — no lo que se ha vendido. Mostrarlo como "vendido" es incorrecto.
Columna "Ventas" en Estadísticasps_product_sale (mantenida por la clase ProductSale a medida que se validan los pedidos)Un agregado en caché que PrestaShop mantiene para el panel de productos más vendidos.

¿Qué significa esto para ti? La cifra real de ventas totales es una suma sobre ps_order_detail, unida a ps_orders para contar solo pedidos en un estado válido (pagado, enviado, entregado) y excluir carritos abandonados, pedidos cancelados o pedidos en estado de error. Un contador que incluye silenciosamente pedidos cancelados y reembolsados se está inflando a sí mismo — y el día en que un cliente lo note será el día en que esa cifra deje de generar confianza y empiece a destruirla.

La versión honesta de esa consulta tiene este aspecto — suma las cantidades de las líneas de pedido, pero solo en pedidos que PrestaShop ha marcado como válidos:

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;

La marca o.valid es la puerta que importa: PrestaShop la establece en 1 solo cuando un pedido llega a un estado que el comerciante ha marcado como "registrable" (pagado, enviado, entregado), así que unir por ella es lo que excluye los pedidos abandonados, cancelados y en estado de error. Sin embargo, ejecutar eso con un GROUP BY en cada página de producto se convierte en el problema de rendimiento del que advierte esta entrada — y por eso existe la tabla en caché de más abajo.

PrestaShop ya ofrece un atajo más limpio: la tabla ps_product_sale, que la clase ProductSale de PrestaShop mantiene actualizada cada vez que se valida un pedido (los mismos datos que hay detrás de Estadísticas → Productos más vendidos en el panel de administración). Leer allí la columna quantity en caché es mucho más ligero que sumar detalles de pedidos en cada carga de página — algo importante, porque la página de producto es una de las URL más visitadas de tu tienda y no quieres disparar un GROUP BY pesado para cada visitante.

Por qué funciona un contador de ventas — y dónde está el límite

La prueba social funciona porque las personas miran lo que hacen otros cuando tienen que decidir con incertidumbre. En una tienda física ves a otros clientes coger productos; en Internet, esa señal desaparece salvo que la vuelvas a introducir. Un contador de ventas es la forma más cuantitativa de hacerlo — una sola cifra que dice "otras personas ya han elegido este camino". Suele rendir mejor en compras meditadas de precio medio: lo bastante caras como para que el comprador quiera seguridad, pero no tanto como para que lea una docena de reseñas antes. En productos de compra impulsiva el cliente apenas se detiene; en productos de precio alto investigará de todos modos, con o sin insignia.

El límite honesto: un contador de ventas es una señal dentro de un conjunto, no una cifra mágica. Valida la popularidad, pero no dice nada sobre si el producto es bueno — ese es el trabajo de las reseñas de producto, que aportan un peso cualitativo que un recuento bruto no puede dar. Ambos se complementan: "238 vendidos · 4,7 estrellas · 41 reseñas" es mucho más fuerte que cualquiera de esos datos por separado, porque responde tanto a "¿es popular?" como a "¿quedaron satisfechos?" Si tu tienda depende de widgets de reseñas de terceros, conviene entender por qué por sí solos no bastan para la señal de confianza que acompaña a un contador de ventas.

Cuándo te ayuda la cifra — y cuándo conviene ocultarla

Lo que muchas guías pasan por alto: un contador de ventas no es bueno de forma incondicional. La misma insignia que convierte en un producto puede perjudicar activamente a otro. Un contador que sabe cuándo mostrarse vale más que uno que imprime a ciegas lo que tenga la base de datos.

  • Muéstralo cuando supere un umbral. "2 vendidos" se lee peor que no mostrar ningún contador — susurra "nadie quiere esto". Define un mínimo (normalmente recomendamos a los comerciantes empezar alrededor de 25–50 unidades) y oculta la insignia por debajo de ese punto. Un producto se gana su contador; no nace con él.
  • ¿Tienda nueva, sin reseñas? Aquí es donde se gana su sitio. Con cero reseñas y sin reconocimiento de marca, incluso "47 vendidos" le dice a un visitante nuevo que personas reales compraron y, presumiblemente, recibieron sus pedidos. Es una prueba de que la tienda funciona, no solo el producto.
  • ¿Catálogo competitivo? Cuando un comprador compara el mismo artículo en tres pestañas, la ficha que muestra "3.400 vendidos" tiene ventaja frente a las dos que no muestran nada — el recuento se convierte en el desempate que no sabía que estaba buscando.
  • ¿Posicionamiento de lujo o exclusividad? Desactívalo. Si el relato de marca es "edición limitada, hecho a mano, existen pocas unidades", un recuento de cinco cifras lo contradice de plano. No puedes ser exclusivo y masivo en la misma página.
  • ¿Productos digitales y temas? Ve con cuidado. Un recuento alto puede leerse como "todo el mundo ya tiene esto", lo que para activos de diseño que deberían hacer que una tienda destaque se convierte en una objeción de compra, no en una garantía.

Cómo presentar la cifra para que se perciba como honesta

El mismo historial de ventas puede generar confianza o despertar sospechas dependiendo por completo de cómo lo formatees. Hay algunas reglas que funcionan bien en distintos tipos de tienda:

  • Redondea las cifras grandes y mantén exactas las pequeñas. "247 vendidos" resulta creíble porque es específico; "12.847 vendidos" parece sospechosamente preciso e invita a pensar "¿se lo habrán inventado?" Por encima de unos pocos miles, "12K+ vendidos" o "10.000+ vendidos" se percibe como más honesto, no menos.
  • Considera una ventana temporal. "124 vendidos este mes" transmite demanda actual, algo más persuasivo que "5.000 vendidos" acumulados silenciosamente durante cuatro años. Una ventana reciente también rescata productos antiguos cuyo total histórico es modesto, pero cuyo impulso actual es real. En términos de PrestaShop, eso es una suma acotada por fecha sobre ps_order_detail unida a la fecha del pedido — más pesada que la tabla en caché, así que guarda el resultado en caché.
  • Colócalo en la zona de decisión. El contador pertenece junto al precio y el botón de añadir al carrito, donde el cliente está decidiendo de verdad — no enterrado al pie de la página ni escondido en una pestaña. En la plantilla de producto, esa es la zona de los hooks displayProductActions / displayProductPriceBlock; un contador renderizado abajo en displayFooterProduct desperdicia buena parte de su fuerza psicológica. (Para ver dónde debería ir cada elemento de la página y por qué, consulta la anatomía de una página de producto.)

El contador histórico frente al indicador en directo — no los confundas

Esta distinción decide qué herramienta necesitas realmente. Un contador de ventas totales es un dato estable y acumulado — cambia lentamente, se puede cachear con seguridad y su mensaje es "muchas personas, a lo largo del tiempo, eligieron esto". Ese es el tema de esta entrada. Es algo distinto de las señales en tiempo real de la misma familia:

Entonces, ¿cuál es la conclusión práctica? El contador histórico y el indicador en directo responden a objeciones distintas. "¿Es una elección segura?" se responde con volumen acumulado; "¿está pasando ahora?" se responde con datos en directo. Muchas tiendas usan ambos — pero recurre al contador estático cuando quieras una tranquilidad discreta y duradera que no dependa de un pico de tráfico para resultar convincente.

Cómo llevarlo a una página de producto de PrestaShop

PrestaShop no trae de serie una insignia de "total vendido" en la tienda, así que hay que colocar esa cifra allí. Hay tres caminos, de menor a mayor esfuerzo:

RutaEsfuerzo¿Resiste las actualizaciones?Cuándo encaja mejor…
Ajuste de plantilla — leer la cifra de ventas en una sobrescritura de product.tpl dentro de un tema hijoMedio (requiere un desarrollador)Frágil — las ediciones del tema pueden romperse al actualizar y no gestionan umbrales ni formatoTienes una necesidad puntual y tiempo de desarrollo interno.
Un módulo basado en hooks — renderiza el contador mediante un hook de visualización, sin tocar la plantilla del temaBajo — instalar y configurar desde el panel de administraciónSí — no se bifurcan archivos del núcleo ni del temaQuieres que los umbrales, el formato y la caché queden resueltos, y que la insignia sobreviva a la próxima actualización 1.7 → 8 → 9.
Desarrollo a medidaAltoDepende de cómo se construyaTienes una lógica muy específica (reglas por categoría, variantes A/B) y un desarrollador que se hará cargo.

La vía del módulo existe precisamente porque los requisitos que hacen que un contador de ventas sea seguro — excluir pedidos cancelados, ocultar recuentos bajos, redondear cifras grandes, leer la tabla en caché ps_product_sale en lugar de sumar detalles de pedidos en cada carga — son delicados de resolver a mano y fáciles de hacer mal. Un módulo creado para esto se engancha a la página de producto con una sola instalación, mantiene la consulta pesada fuera de la ruta crítica y se configura por completo desde tu panel de administración, no mediante una factura de desarrollo. Si un contador forma parte de un plan más amplio para que tus páginas de producto conviertan mejor, nuestra guía de diseño y conversión de páginas de producto muestra cómo encaja junto al resto de elementos.

Una nota sobre rendimiento — porque aquí es donde fallan los contadores caseros

La versión ingenua de un contador de ventas ejecuta un SELECT SUM(product_quantity) … GROUP BY sobre ps_order_detail en cada vista de cada página de producto. En una tienda con mucho historial de pedidos y un tráfico razonable, eso es una ralentización autoinfligida en tu página más importante. Dos defensas, por orden de preferencia: leer la tabla preagregada ps_product_sale (PrestaShop ya la mantiene mediante la clase ProductSale a medida que se validan los pedidos, así que el coste se paga una vez en segundo plano, no por visitante); y, si necesitas calcular una ventana personalizada, cachear el resultado por producto con un TTL sensato para que la base de datos se consulte de vez en cuando, no constantemente. Un contador que empeora el tiempo de carga de tu página está haciendo lo contrario de ayudarte a vender — las páginas lentas pierden precisamente a los clientes a los que la insignia debía tranquilizar.

Dónde encaja el contador de ventas en tu estrategia más amplia de prueba social

Un contador de ventas es una pieza dentro de una imagen de confianza más amplia, y funciona mejor cuando las piezas que lo rodean empujan en la misma dirección. El recuento cuantitativo combina de forma natural con las señales cualitativas: las valoraciones con estrellas y las reseñas responden a "¿quedaron satisfechos?"; los sellos de confianza responden a "¿es seguro el proceso de pago?"; y las señales en directo — ventas y visualizaciones o una ventana emergente de compra reciente — responden a "¿está pasando ahora?" La aportación específica del contador histórico es el peso duradero y acumulado: la prueba de que el camino por el que invitas a avanzar a un comprador indeciso ya lo han recorrido, miles de veces, personas que pagaron y no volvieron por nada más que el producto que querían.

Obtén bien la cifra de origen (ventas reales, solo pedidos válidos), muéstrala solo cuando favorezca al producto, dale un formato que resulte honesto, colócala donde se toma la decisión y mantén la consulta fuera de la ruta crítica de carga de la página. Haz eso, y un dato que tu base de datos lleva registrando discretamente desde tu primer pedido empezará a ganarse su sitio justo en el momento exacto en que un cliente decide si confiar en ti.

Preguntas frecuentes

¿Qué cifra de PrestaShop representa realmente las "unidades vendidas"?

Es la suma de product_quantity en ps_order_detail para los pedidos válidos — no la cifra de stock. El stock disponible vive en ps_stock_available.quantity y te dice qué queda por vender, que es lo contrario de lo vendido; mostrarlo como "vendido" es el error más común. PrestaShop también mantiene un agregado en caché en ps_product_sale, actualizado por su clase ProductSale a medida que se validan los pedidos, y esa es la cifra más ligera de leer en una página de producto con mucho tráfico.

¿El contador de ventas incluye pedidos cancelados o reembolsados?

No debería, y ese es precisamente el objetivo de unir con o.valid = 1. Sin ese filtro estarías contando carritos abandonados y pedidos cancelados como ventas, inflando la insignia. Un contador inflado no solo exagera — en cuanto un cliente percibe que la cifra está inventada, pasa de ser una señal de confianza a ser un motivo para dudar de todo lo demás en la página.

¿Un contador de ventas no ralentizará mis páginas de producto?

Lo hará si lo calculas de la forma ingenua — un SUM ... GROUP BY sobre el historial de pedidos en cada vista de página, en una URL que ya suele ser de las más visitadas. Dos defensas, por orden: leer la tabla preagregada ps_product_sale que PrestaShop ya mantiene en segundo plano o, si necesitas una cifra para una ventana temporal personalizada, calcularla una vez y cachear el resultado por producto con un TTL sensato para que la base de datos se consulte ocasionalmente y no en cada visita.

¿Todos los productos deberían mostrar su recuento de ventas?

No — un contador solo es un activo por encima de un umbral. "2 vendidos" se lee peor que no mostrar ninguna insignia, así que define un mínimo (a menudo 25–50 unidades) y ocúltalo por debajo. Desactívalo por completo para posicionamientos de lujo o edición limitada, donde un recuento alto contradice el relato de exclusividad, y sé prudente con los productos digitales, donde "todo el mundo ya tiene esto" puede percibirse como una objeción en lugar de una garantía.

¿Debería mostrar el total histórico o una ventana reciente?

Depende de lo que quieras transmitir. Un total histórico ("5.000 vendidos") muestra confianza duradera y acumulada; una ventana ("124 vendidos este mes") muestra demanda actual y puede rescatar un producto antiguo cuyo número de por vida es modesto, pero cuyo impulso actual es real. La ventana es más pesada de calcular porque es una suma acotada por fecha en lugar de una lectura en caché, así que guarda el resultado en caché. Muchas tiendas muestran el encuadre que mejor favorece a cada producto concreto.

Compartir esta publicación:
David Miller

David Miller

Fundador, mypresta.rocks

David Miller es un especialista en PrestaShop con más de una década de experiencia práctica y fundador de mypresta.rocks, un estudio de desarrollo con sede en Tychy, Polonia. Crea y mantiene un catálogo de 152 módulos PrestaShop —incluidas 21 suites «Revolution» que abarcan SEO, checkout, seguridad, rendimiento, marketing, búsqueda, soporte y gestión de almacén— que mejoran tiendas reales cada día, probados en PrestaShop 1.7.8, 8.x y 9.x. También se encarga del mantenimiento de tiendas en producción que facturan millones al año, por lo que su trabajo se mide por ventas reales, no por demos. Su experiencia abarca todo el comercio electrónico —rendimiento, seguridad, SEO y marketing— y va más allá de PrestaShop, hasta WooCommerce, Shopify y sistemas a medida. En el blog escribe sobre la parte técnica de PrestaShop: qué hace realmente la plataforma, qué se rompe en producción y qué soluciones aguantan.

¿Te gustó este artículo?

Recibe nuestros últimos consejos, guías y actualizaciones de módulos en tu bandeja de entrada.

Comentarios

Aún no hay comentarios. ¡Sé el primero!

Sé el primero en hacer una pregunta o compartir una opinión útil.

Cargando...
Volver arriba