Última revisión en junio de 2026 — las consultas de SQL Manager y los ajustes de Reglas del carrito que aparecen abajo están actualizados para PrestaShop 1.7, 8.x y 9.x; los nombres de tablas y columnas no cambian entre esas versiones.

Un cliente compra en tu tienda. Quizá dos veces. Luego, nada. Deja de abrir tus correos, su cuenta queda en silencio y el historial de pedidos simplemente... se detiene. Probablemente no se fue enfadado a la competencia. La vida siguió, olvidó reponer un producto, tu tienda salió de su mente. Ahí está toda la oportunidad. Un correo de recuperación se dirige al público más fácil del comercio electrónico: alguien que ya te dio los datos de su tarjeta una vez y solo necesita un motivo para volver a hacerlo. Lo difícil no es el correo — es saber qué clientes se han quedado inactivos, cuándo actuar y cómo sacar esa lista de PrestaShop sin ir a ciegas. Esta guía trata exactamente de eso: el problema de los clientes inactivos, resuelto en una tienda PrestaShop, con rutas reales del back office y el SQL para encontrarlos.

Primero, una aclaración para mantener este artículo en su sitio. Un correo de recuperación no es un correo de carrito abandonado. El carrito abandonado se activa pocas horas después de que alguien deje un carrito lleno durante el pago — consulta nuestra visión general del correo como canal para ver dónde encaja cada automatización. Un correo de recuperación se activa semanas o meses después del último pedido completado de un cliente, cuando la relación se ha enfriado. Disparador distinto, lista distinta, mensaje distinto. Confundirlos es la razón más habitual por la que las campañas de recuperación rinden por debajo de lo esperado.

Primero, define qué significa "inactivo" para tu tienda — no en abstracto

No existe un número universal de días que signifique "inactivo". Depende por completo de tu ciclo de compra, y ya tienes los datos para calcularlo. El principio: toma el intervalo medio entre pedidos repetidos y considera en riesgo todo lo que supere aproximadamente 1,5 veces ese intervalo, e inactivo lo que supere 2 veces.

  • Consumibles (suplementos, café, comida para mascotas, filtros): si el ritmo de reposición es de 30 días, hay riesgo en torno a los 45 días e inactividad en torno a los 60. Estas son las recuperaciones de mayor valor porque la necesidad es recurrente — estás captando una reposición olvidada, no resucitando un interés muerto.
  • Moda y accesorios: un comprador trimestral que lleva seis meses en silencio está entrando en inactividad.
  • Electrónica y bienes duraderos: ciclos largos por naturaleza. Alguien que compró un teléfono hace 18 meses quizá de verdad no necesite otro — así que aquí pasas de "compra lo mismo otra vez" a accesorios, consumibles o el siguiente modelo.

¿Y qué significa eso en la práctica? No adivines tu intervalo medio — mídelo. En PrestaShop puedes leerlo directamente desde la tabla de pedidos. La consulta de abajo obtiene, por cliente, la media de días entre pedidos válidos consecutivos para clientes con al menos dos pedidos:

(Ejecuta consultas de solo lectura en Parámetros avanzados → SQL Manager, la herramienta integrada del back office — no necesitas un cliente de base de datos. Ajusta el filtro id_shop para multitienda.)

Lo que necesitasDónde está en PrestaShop
La fecha del último pedido de cada clienteMAX(o.date_add) de ps_orders, agrupada por id_customer
Solo pedidos "reales" (pagados/válidos)une ps_order_state y filtra logable = 1, o filtra current_state por tus estados pagados
Nombre / correo electrónico del cliente para la exportaciónps_customer (firstname, lastname, email, newsletter, optin)
Cuánto valor generaronSUM(total_paid_real) sobre sus pedidos válidos — tu columna de valor de vida del cliente

Una consulta práctica de "quién está inactivo" sería así — clientes cuyo pedido válido más reciente fue hace entre 60 y 365 días, y que todavía aceptan el boletín:

SELECT c.id_customer, c.firstname, c.lastname, c.email,
MAX(o.date_add) AS last_order, SUM(o.total_paid_real) AS lifetime_value
FROM ps_orders o
JOIN ps_customer c ON c.id_customer = o.id_customer
WHERE o.valid = 1 AND c.newsletter = 1 AND c.deleted = 0
GROUP BY o.id_customer
HAVING last_order < DATE_SUB(NOW(), INTERVAL 60 DAY)
AND last_order > DATE_SUB(NOW(), INTERVAL 365 DAY)
ORDER BY lifetime_value DESC;

La condición o.valid = 1 es la que los comerciantes suelen olvidar — excluye carritos, pedidos cancelados y pedidos sin pagar, para que no estés "recuperando" a alguien que nunca llegó a comprar. Más allá del SQL importan dos cosas: c.newsletter = 1 es un filtro inicial — trátalo como una primera pasada y después apóyate en el consentimiento de marketing registrado y en tus reglas de supresión/baja para decidir a quién puedes escribir realmente — y el límite superior de 365 días evita que desperdicies incentivos en clientes que se fueron hace mucho, en lugar de estar simplemente inactivos. Exporta el resultado a CSV con el botón de la parte superior de los resultados de SQL Manager, y esa será la audiencia de tu campaña.

¿No quieres vivir en SQL? El back office te lleva casi hasta allí

En Clientes → Clientes, el listado tiene una columna Última visita y una columna Ventas, y puedes ordenarlas para perfilar a grandes compradores dormidos sin escribir una consulta. Es mucho más impreciso que el SQL: la última visita no es el último pedido (así que no mostrará de forma fiable a un gran comprador que simplemente dejó de comprar), Ventas no se puede filtrar por rango de fechas, y no hay una lógica automática de "1,5 veces el intervalo medio" — para detectar inactividad real por último pedido necesitas la exportación de Pedidos, informes o el SQL anterior. Pero para una primera campaña manual, revisar la cuadrícula a ojo es un punto de partida válido. En cuanto quieras que esto funcione solo cada semana, las exportaciones manuales se te habrán quedado pequeñas — y ese es precisamente el sentido de la automatización que viene abajo.

La secuencia de recuperación: cuatro correos, no uno

Un smartphone que muestra una notificación de correo entrante con un icono de sobre y un avión de papel
Una secuencia de recuperación es una serie de correos bien temporizados enviados para volver a captar a los clientes que se han alejado.

Un único correo de "te echamos de menos" rara vez mueve a nadie. Una secuencia de tres a cuatro mensajes durante cuatro a seis semanas suele funcionar mejor, porque te permite escalar: empezar sin descuento y tocar margen solo si el acercamiento suave falla. Ejecuta los pasos en este orden.

#EnvíoFunción de este correoLa palanca
1Día 0Recordarles que existesSin descuento. "Esto es lo nuevo desde que no pasas por aquí". Comprueba si basta con activar el recuerdo.
2Día 7–10Reforzar por qué mereces la penaPrueba social: superventas, reseñas, productos relacionados con lo que compraron antes.
3Día 14–21Eliminar la objeción de precioUn incentivo concreto, con límite de tiempo y código único.
4Día 28–35Cerrar la ventanaUrgencia real por caducidad sobre la misma oferta. Si no reaccionan, acéptalo y detente.

La razón por la que el correo 1 no lleva descuento es disciplina financiera: cada cliente que puedes reactivar con un simple recordatorio es un cliente al que no has tenido que descontar. Empezar con el cupón enseña a tus mejores compradores a esperarlo. Reserva el incentivo hasta que tengas señales de que el enfoque suave no funcionó.

Crear el incentivo en PrestaShop — bien hecho

Aquí los detalles de PrestaShop importan, porque la diferencia entre "15% de descuento, válido 7 días" y un cupón que alguien reenvía a una web agregadora de ofertas está en cómo configuras la regla del carrito. Ve a Catálogo → Descuentos (el controlador de Reglas del carrito) y crea una con estos ajustes:

  • Códigos por cliente, no un único código compartido. Genera un código único por destinatario para que un código filtrado no pueda ser usado por desconocidos, y para que puedas atribuir los ingresos a la campaña. El back office nativo crea reglas del carrito de una en una, así que para una campaña completa puedes generarlas en un bucle mediante el objeto CartRule (un pequeño script) o usar un módulo generador de cupones — la propia función de sincronización de cupones de tu plataforma de automatización de correo también suele encargarse de esto.
  • Limítalo al cliente inactivo. En la pestaña Condiciones de la regla del carrito, configura Limitar a un solo cliente para que el descuento solo funcione para la persona a la que se lo enviaste. Es el ajuste que más se omite y el que protege tu margen.
  • Define una caducidad real. Usa las fechas desde/hasta de Válido para que "caduca mañana" en el correo 4 sea literalmente cierto — PrestaShop lo aplica, no estás lanzando un farol.
  • Configura Total disponible en 1 y Total disponible para cada usuario en 1 para que el código sea de un solo uso.
  • ¿Envío gratis en lugar de un porcentaje? La misma regla del carrito tiene una acción de Envío gratis — a menudo resulta tan persuasiva como un descuento, sin tocar el margen del producto.

La palanca adecuada depende del cliente:

  • Porcentaje (10–20%): la opción por defecto. Por debajo del 10% rara vez motiva; por encima del 20% empieza a comerse un margen que quizá nunca recuperes si solo compran una vez.
  • Envío gratis: ideal cuando el envío es un punto de fricción conocido en tu tienda; te cuesta una cantidad fija conocida en lugar de una parte de cada línea del pedido.
  • Regalo con la compra: "haz un pedido esta semana y llévate una muestra gratis" — valor percibido sin aplicar un descuento directo.
  • Recarga de puntos de fidelidad: si tienes un programa de puntos, un saldo extra hace que la gente vuelva sin descuento en efectivo. Cubrimos la mecánica del programa en programas de fidelización para PrestaShop — una recuperación es uno de los disparadores que puede alimentarlo.

Segmentación: un cliente inactivo no es igual a otro cliente inactivo

Una misma secuencia para todos desperdicia tus mejores incentivos en personas que habrían vuelto gratis, y atiende peor a quienes sí merecen pelearse. El SQL anterior ya te da las dos columnas que necesitas para segmentar — lifetime_value y last_order — así que divide la exportación antes de enviar:

  • Por valor. Tus clientes que más gastan (ordena la consulta por lifetime_value DESC) merecen un gesto mayor y un tono más personal — incluso un correo en texto plano que parezca venir de ti, no de la maquinaria de marketing. Un código del 15% para un cliente que ha gastado importes de cuatro cifras contigo es un seguro barato.
  • Por tiempo desde el último pedido. Alguien que lleva tres meses en silencio es mucho más recuperable que alguien que desapareció hace dos años. Ajusta el esfuerzo y la profundidad del descuento a las probabilidades.
  • Por lo que compraron. Vuelve a unir ps_order_detail y un comprador de consumibles recibirá un empujón de reposición ("¿te estás quedando sin?"), mientras que un comprador de regalos recibirá "¿se acerca otra ocasión?" — el historial de productos está ahí mismo en PrestaShop, úsalo.
  • Por interacción. Un cliente inactivo que todavía abre tus correos no es el mismo caso que uno que lleva seis meses ignorando todos los envíos. Los datos de aperturas de tu plataforma de correo te dicen quién es quién; el segundo grupo necesita un gancho más fuerte o una salida elegante.

Calendario: cuándo poner el reloj en marcha

El punto de activación no es el mismo para todos los clientes, y equivocarte te cuesta en ambos sentidos — demasiado pronto suena necesitado, demasiado tarde y ya habrán incorporado la rutina de un competidor.

  • Empieza antes con clientes de alto valor, antes de que la rutina de un competidor se consolide.
  • Empieza antes con compradores de una sola compra. Un cliente de un único pedido aún no ha desarrollado fidelidad; la ventana para una segunda compra es corta, y esa segunda compra es lo que convierte a un comprador en cliente. (Lo que envías en esas primeras semanas críticas después de un primer pedido es una disciplina propia — consulta correos poscompra.)
  • Espera más con compradores recurrentes consolidados que de pronto se quedan en silencio — quizá simplemente sigan un patrón estacional, y una recuperación nerviosa en la tercera semana solo mete ruido.

Y conviene saber cuándo parar. Después de la secuencia de cuatro correos, detente. Seguir escribiendo a alguien que ignoró cuatro intentos deja de ser marketing y empieza a ser spam — perjudica tu entregabilidad con los clientes que interactúan. Mueve a quienes no respondan a un segmento de baja frecuencia (como mucho, un contacto trimestral) o sácalos por completo de los envíos activos. En términos de PrestaShop, puedes desactivar su marca newsletter desde la ficha del cliente, o mantener un segmento de supresión en tu herramienta de correo.

Automatizarlo para que funcione sin ti

Todo lo anterior puede hacerse a mano — exportación SQL, CSV, reglas del carrito, pegar en tu herramienta de correo — y para una primera campaña conviene hacerlo, para entender cómo son tus números. Pero una recuperación solo se gana su sitio cuando funciona de forma continua, captando a cada cliente en el momento en que cruza tu umbral de "inactividad", en lugar de hacerlo en tandas manuales ocasionales. Eso implica conectar PrestaShop con una plataforma que pueda mantener la secuencia de varios pasos, emitir el cupón único y leer tus datos de pedidos.

La herramienta adecuada depende de cuánta automatización necesites, y ya las hemos comparado en profundidad en otros artículos para que este no se desborde:

  • Estás empezando / quieres comenzar gratis: Mailchimp para PrestaShop cubre recorridos básicos para clientes inactivos.
  • Automatización conductual y segmentación serias: Klaviyo y ActiveCampaign te permiten construir el flujo de cuatro correos con un disparador de "días desde el último pedido" y ramificar por valor.
  • Correo más SMS en un solo lugar: Omnisend si quieres que la recuperación escale de correo a mensaje de texto en el último intento.

Elijas lo que elijas, la tarea previa es la misma: mantener tu lista de suscriptores limpia y en crecimiento para que, de entrada, haya clientes interesados que puedan quedarse inactivos más adelante. Si tu lista es el punto débil, empieza por hacer crecer tu lista de correos de PrestaShop de la forma correcta.

Medir si realmente funcionó

No juzgues una campaña de recuperación por cuántos correos se abrieron — júzgala por ingresos recuperados, y vigila que no estés simplemente alquilando clientes con descuentos. Sigue cuatro cifras:

  • Tasa de reactivación: el porcentaje de clientes objetivo que hicieron un pedido válido en los ~60 días posteriores al correo 1. Una tasa del 5–15% es una expectativa razonable para una secuencia bien construida — tómala como un rango orientativo, no como una garantía, y compárate con tu primera campaña en lugar de con el número de otro.
  • Ingresos por correo enviado: ingresos recuperados divididos entre correos enviados. Compáralo con tus campañas habituales — las recuperaciones suelen superarlas porque la audiencia ya está precalificada.
  • Coste del descuento frente a ingresos recuperados: como cada código era por cliente y rastreable (lo configuraste así), puedes sumar los descuentos concedidos y compararlos con los ingresos que desbloquearon. Si los descuentos cuestan más de lo que recuperan, endurece el incentivo.
  • Tasa de segundo pedido: la prueba real. ¿Los clientes recuperados compran de nuevo a precio completo, o usan el cupón una vez y vuelven directamente a la inactividad? Si ocurre lo segundo, no reactivaste a nadie — hiciste una venta puntual. La recuperación genuina aparece como un tercer pedido semanas después, sin descuento asociado.

Puedes leer la primera métrica directamente desde PrestaShop: después de una campaña, vuelve a ejecutar tu consulta de clientes inactivos filtrada a esa lista de clientes y cuenta cuántos tienen ahora un pedido válido con fecha posterior al envío. La plataforma contiene la prueba; solo tienes que preguntárselo. La consulta de solo lectura de abajo hace ese recuento para una ventana de campaña — sustituye la fecha por el día en que enviaste el correo 1 y pega los IDs de tu exportación de campaña en la lista IN (...):

SELECT COUNT(DISTINCT o.id_customer) AS reactivated
FROM ps_orders o
WHERE o.valid = 1
  AND o.date_add > '2026-05-01'
  AND o.id_customer IN (101, 102, 103 /* your campaign customer IDs */);

Divide ese recuento entre el número de clientes a los que escribiste y tendrás tu tasa de reactivación — medida contra tu propia tienda, no contra una referencia prestada.

Los correos de recuperación funcionan porque apuntan al público más amistoso que tienes — personas que ya te conocen, que ya confiaron en ti con su dinero y que necesitan un empujón, no un discurso de venta. El coste es casi nulo. El retorno, en valor de vida del cliente recuperado, puede ser considerable. Los comerciantes que lo hacen bien no son los que tienen las líneas de asunto más ingeniosas; son los que definieron "inactivo" con honestidad, sacaron la lista correcta de PrestaShop y dejaron que la secuencia funcionara de forma continua — captando clientes cuando empiezan a alejarse, no años después de haberse ido.

Preguntas frecuentes

¿Qué cuenta como cliente "inactivo" en PrestaShop?

No hay un número fijo de días — depende de tu ciclo de reposición. Mide tu intervalo medio entre pedidos repetidos desde ps_orders, y luego considera aproximadamente 1,5 veces ese intervalo como riesgo y 2 veces como inactividad. Un ritmo de consumibles de 30 días hace que ~60 días sean inactividad; un comprador trimestral de moda no está inactivo hasta alrededor de seis meses. Basa siempre el umbral en pedidos con o.valid = 1, para que los carritos sin pagar y cancelados no lo distorsionen.

¿Puede PrestaShop enviar correos de recuperación automáticamente por sí solo?

No. PrestaShop nativo solo dispara correos transaccionales ante cambios de estado de pedido; no tiene un disparador de "X días desde el último pedido" ni una secuencia de varios pasos. Puedes ejecutar una primera recuperación manualmente con una exportación SQL y CSV, pero para que se active de forma continua cuando cada cliente cruza el umbral de inactividad necesitas una plataforma de automatización de correo (Mailchimp, Klaviyo, ActiveCampaign u Omnisend) sincronizada con tus datos de pedidos.

¿Cómo evito que un cupón de recuperación se comparta o se reutilice?

En Catálogo → Descuentos, en la pestaña Condiciones de la regla del carrito, activa Limitar a un solo cliente para que solo el destinatario pueda canjearlo, y configura tanto Total disponible como Total disponible para cada usuario en 1 para uso único. Genera un código único por destinatario en lugar de un código compartido, y define las fechas desde/hasta de Válido para que la caducidad de tu correo se aplique de verdad.

¿Es seguro ejecutar la consulta de SQL Manager en una tienda activa?

Sí — el SQL Manager en Parámetros avanzados → Base de datos solo permite consultas de lectura (SELECT), así que las consultas de clientes inactivos y reactivación de este artículo no pueden cambiar tus datos. Usa el botón CSV situado encima de los resultados para exportar tu audiencia. Cambia a un cliente de base de datos solo si vas a escribir datos (por ejemplo, para generar reglas del carrito en lote), que es una tarea distinta y más delicada.

¿Cuándo debería dejar de escribir a un cliente que no responde?

Después de la secuencia de cuatro correos. Alguien que ignoró los cuatro te está diciendo que, por ahora, ha terminado; seguir enviándole correos aumenta las quejas por spam y perjudica la entregabilidad con los clientes que sí interactúan. Mueve a quienes no respondan a un segmento de baja frecuencia (como mucho, un contacto trimestral), o desactiva su marca newsletter y mantenlos como segmento de supresión en tu herramienta de correo.

Compartir esta publicación:
David Miller

David Miller

Founder, 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