Introduccion
Uno de los problemas silenciosos en cualquier eCommerce es tener productos que nunca se han vendido. Están publicados, ocupan espacio, pueden salir en el buscador interno, pero no han generado ni una sola venta.
¿Te suena?
→ Productos con descripciones pobres, precios poco competitivos, imágenes olvidadas…
→ O simplemente errores de carga que han dejado artículos huérfanos.
En este artículo te muestro cómo identificar rápidamente esos productos en WooCommerce usando una simple consulta SQL, sin necesidad de instalar plugins o revisar manualmente cada producto.
Índice
Introducción ¿Por qué es importante identificar productos sin ventas? Consulta SQL: Detectar productos nunca vendidos ¿Qué hace esta consulta? Versión más precisa: usando order_item_meta para SKU ¿Y luego qué hago con esta información? Ampliaciones de la consulta Consejos prácticos Conclusión¿Por qué es importante identificar productos sin ventas?
- 🧹 Optimiza el catálogo: quita ruido a los compradores.
- 💡 Detecta errores de carga: sin imágenes, sin precios, mal asignados.
- 🧠 Decide con datos: qué promocionar, qué eliminar, qué revisar.
- 💸 Evita pagar más por recursos innecesarios (hosting, caché, etc.)
Requisitos
- Acceso a phpMyAdmin o a tu base de datos MySQL.
- WooCommerce funcionando.
- Backup previo de tu base de datos (si vas a hacer cambios).
Consulta SQL: Detectar productos nunca vendidos
💡 Versión básica
SELECT p.ID, p.post_title, pm.meta_value AS sku
FROM wp_posts p
LEFT JOIN wp_woocommerce_order_items oi ON oi.order_item_name = p.post_title
LEFT JOIN wp_postmeta pm ON pm.post_id = p.ID AND pm.meta_key = '_sku'
WHERE p.post_type = 'product'
AND p.post_status = 'publish'
AND oi.order_item_id IS NULL
LIMIT 100;
¿Qué hace esta consulta?
- Busca todos los productos publicados (post_type = ‘product’ y status = publish).
- Revisa si algún pedido los ha incluido (usando el nombre del producto).
- Si no aparecen en ningún pedido (order_item_id IS NULL), los considera no vendidos.
- Devuelve su ID, título y SKU.
Versión más precisa: usando order_item_meta para SKU
Si quieres más precisión (ya que los nombres pueden cambiar o repetirse), usa esta versión basada en SKU:
SELECT p.ID, p.post_title, pm.meta_value AS sku FROM wp_posts p LEFT JOIN wp_postmeta pm ON pm.post_id = p.ID AND pm.meta_key = '_sku' LEFT JOIN wp_woocommerce_order_itemmeta oim ON oim.meta_value = pm.meta_value AND oim.meta_key = '_product_id' WHERE p.post_type = 'product' AND p.post_status = 'publish' AND oim.meta_id IS NULL AND pm.meta_value IS NOT NULL ORDER BY p.post_date DESC LIMIT 100;
¿Y luego qué hago con esta información?
- Exporta estos productos a un CSV para analizarlos.
- Revisa:
- ¿Tienen imágenes?
- ¿Precio competitivo?
- ¿Categoría bien asignada?
- ¿Buen SEO (título, descripción)?
- Decide:
- ¿Los elimino?
- ¿Los agrupo en una promo?
- ¿Los oculto temporalmente?
- ¿Los mejoro visualmente?
Ampliaciones de la consulta
Ver solo productos con stock
AND EXISTS (
SELECT 1 FROM wp_postmeta pm2
WHERE pm2.post_id = p.ID
AND pm2.meta_key = '_stock'
AND pm2.meta_value > 0
)
Filtrar por fecha de creación (últimos 12 meses)
AND p.post_date > NOW() - INTERVAL 12 MONTH
💡 Consejos prácticos
- A veces los productos no vendidos tienen errores de carga: sin imagen, sin descripción o sin categoría.
- Puedes usar esta info para lanzar campañas específicas:
“Liquidación de productos olvidados”. - Cuidado con productos de temporada: quizá no han vendido aún, pero tienen sentido más adelante.
Conclusión
Saber qué productos nunca han generado una venta es clave para optimizar tu tienda.
No solo te ayuda a limpiar el catálogo, también te da pistas sobre errores en la carga, productos mal presentados o stock que nunca debería haber entrado.
Y lo mejor: puedes obtener esta info con una simple consulta SQL.
¿Quieres que te ayudemos a automatizar esto?
¿Te gustaría que esta consulta genere un informe mensual por correo con productos sin ventas?
👉 Escríbenos y lo preparamos para tu WooCommerce.