Introducción

Conocer cuántos clientes repiten compra en tu tienda es clave para medir la fidelidad y rentabilidad del negocio.

En este artículo aprenderás cómo generar un informe de clientes recurrentes en WooCommerce usando consultas MySQL, con filtros por fecha, número de pedidos y valor total comprado.

Ideal para tiendas con volumen de ventas que quieren segmentar su base de clientes y tomar decisiones de marketing personalizadas.

Índice

1. ¿Qué consideramos un cliente recurrente?

Un cliente que ha hecho más de una compra en un período determinado (ej. últimos 6 meses) o que ha superado cierto gasto acumulado (ej. más de 100€ en total).

2. Tablas clave en WooCommerce

TablaContenido
wp_postsPedidos (`post_type = shop_order`)
wp_postmetaDatos del pedido (total, user_id, etc.)
wp_usersClientes registrados

3. Consulta SQL para detectar clientes con múltiples pedidos

SELECT u.ID, u.user_email, COUNT(p.ID) AS total_pedidos
FROM wp_users u
JOIN wp_posts p ON u.ID = p.post_author
WHERE p.post_type = 'shop_order' AND p.post_status IN ('wc-completed','wc-processing')
GROUP BY u.ID
HAVING total_pedidos > 1
ORDER BY total_pedidos DESC;

Explicación:

  • Filtra pedidos completados o en proceso
  • Agrupa por usuario
  • Devuelve solo los que han hecho 2 o más pedidos

4. Filtros adicionales: fecha e importe total

Filtrar por fecha (últimos 6 meses):

AND p.post_date > NOW() - INTERVAL 6 MONTH

Calcular total gastado:

SELECT u.ID, u.user_email, SUM(m.meta_value) AS total_gastado
FROM wp_users u
JOIN wp_posts p ON u.ID = p.post_author
JOIN wp_postmeta m ON p.ID = m.post_id AND m.meta_key = '_order_total'
WHERE p.post_type = 'shop_order' AND p.post_status IN ('wc-completed')
GROUP BY u.ID
HAVING total_gastado > 100;

5. Exportar el informe a CSV

<?php
require('wp-load.php');
global $wpdb;

$results = $wpdb->get_results("
SELECT u.ID, u.user_email, COUNT(p.ID) AS total_pedidos
FROM {$wpdb->prefix}users u
JOIN {$wpdb->prefix}posts p ON u.ID = p.post_author
WHERE p.post_type = 'shop_order' AND p.post_status IN ('wc-completed','wc-processing')
GROUP BY u.ID
HAVING total_pedidos > 1
", ARRAY_A);

header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=clientes_recurrentes.csv');
$output = fopen('php://output', 'w');
fputcsv($output, ['ID Usuario', 'Email', 'Total Pedidos']);
foreach ($results as $row) {
    fputcsv($output, $row);
}
fclose($output);
exit;
?>

6. ¿Para qué sirve este informe?

  • Enviar campañas personalizadas a los mejores clientes
  • Detectar embajadores de marca o revendedores
  • Ofrecer cupones por fidelidad o club VIP
  • Activar remarketing más segmentado

7. Conclusión

Un cliente que repite es más rentable que uno nuevo. Con estas consultas puedes segmentar y cuidar mejor tu base de clientes.

¿Quieres que lo conectemos con Google Sheets o lo integramos en tu backoffice? 📩 Escríbenos y lo automatizamos para ti.

Ir al contenido