De todos los problemas que generan toneladas de consultas, uno de los más repetidos es el de los emails generados por los pedidos: WooCommerce no está enviando correos electrónicos.
Y además no es trivial, ya que puede causar problemas como que el cliente no sepa si el pedido se ha recibido correctamente o que el administrador no se entere de que hay un nuevo pedido esperando para ser preparado y enviado.
Así que vamos a ver cuáles son las principales causas (en el 90% de los casos son las mismas) de que WooCommerce no envíe los emails que debería, y a aprender a solucionarlos.
Tabla de contenidos
¿Está WordPress enviando los emails?
Antes de nada (sobre todo antes de empezar a ponernos nerviosos) deberíamos identificar la auténtica raíz del problema. A veces nos volvemos locos buscando la causa de un error en WooCommerce, cuando la causa en sí está no en una funcionalidad del plugin, sino en una funcionalidad de WordPress.
Seguro que ya te das cuenta de por dónde voy: ¿es realmente WooCommerce el que no está enviando los emails, o es un problema general de tu instalación? Evidentemente, si el problema está en la instalación no es que WooCommerce no envíe emails: es que no se envía ningún email desde la web.
Esto puedes comprobarlo de varias formas rápidamente, como enviando tú mismo un mensaje a través del formulario de contacto para comprobar si se reciben las notificaciones del administrador y/o del cliente, o generar una nueva contraseña para tu usuario alternativo (porque tienes una cuenta de usuario en tu web aparte de la de administrador, ¿verdad?) y permitir que se le notifique por email.
En cualquier caso es recomendable instalar y activar el plugin Email Log al hacer estas pruebas ya que podrá ayudarte, si no recibes ninguno de estos emails, a saber si el problema está al generar el email o si lo que está fallando es el envío.
Si resulta que los emails se están generando correctamente (puedes verlos registrados en la lista de Email Log) se debe normalmente a un problema con el sistema de envío.
Si es tu caso lo primero que deberías intentar es usar un plugin para envío de los correos electrónicos de la web a través de SMTP, como por ejemplo WP Mail SMTP, en lugar de dejar a PHP que haga el trabajo (mediante la función wp_mail), ya que este método puede dar problemas en función de la configuración del servidor.
¿Se están yendo los emails a la carpeta de spam?
Pero ojo, porque puede ser que todo vaya en apariencia correctamente y, sin embargo, sigan sin recibirse los correos electrónicos.
Y es que la causa puede ser tan peregrina como que están siendo detectados como correo no deseado por los filtros antispam y enviados sin misericordia a terminar sus días junto a ofertas de pastillas azules y alargadores de dudosa utilidad.
Así que, si en el punto anterior todo parece funcionar correctamente (Email Log está registrando todos los correos electrónicos y el envío por SMTP no reporta ningún error) comprueba la bandeja de correo no deseado. A veces los filtros son tan simpáticos que incluso el buzón de correo del mismo dominio que la web está bloqueando la entrada de los correos electrónicos.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Revisar los ajustes de correos electrónicos de WooCommerce
Una vez comprobado que WordPress está enviando el resto de correos (los que no corresponden a WooCommerce) correctamente y que estos no se están quedando en la bandeja de correo no deseado, podemos estar razonablemente seguros de que tenemos realmente un problema con los emails de WooCommerce.
O no. Quizá no se trate más que de una configuración incorrecta, así que hay que comprobar que tenemos WooCommerce correctamente configurado para que envíe los emails que queramos que envíe.
Estos ajustes los encontrarás en WooCommerce > Ajustes > Correos electrónicos, donde puedes configurar qué emails (nuevo pedido, cambio de estado, etc.) deben enviarse al administrador y al cliente: si el correo electrónico tiene una marca violeta a la izquierda, debería estar enviándose.
Si en lugar de esta marca ✓ sobre fondo violeta tiene una ✕ sobre fondo gris, significa que esa notificación no está activada. En ese caso tienes que pulsar sobre el botón Gestionar y marcar la casilla Activar este aviso por correo electrónico.
Las tareas cron no se están ejecutando
A partir de WooCommerce 3.0 se introdujo un cambio en el modo en que WooCommerce enviaba el email de notificación de nuevo pedido: en lugar de ser enviado de inmediato, era enviado a la cola de tareas programadas (cron).
Muchas instalaciones experimentaron problemas entonces con el envío de este email específico, mientras que el envío se realizaba correctamente si se lanzaba manualmente a través de las acciones del pedido. Por eso WooCommerce incluyó un filtro que desactivaba esta característica, volviendo al sistema de envío anterior.
Estos problemas suelen estar relacionados específicamente no con WooCommerce, sino con la ejecución de las tareas programadas:
En cualquier caso, si tu problema se parece mucho a lo que acabo de describir, resolverlo es sencillo: basta con que pegues este código en tu archivo functions.php:
add_filter( 'woocommerce_defer_transactional_emails', '__return_false' );
Luis Veliz dice
Eres genial amigo compartes información super importante y solucionas muchos dolores de cabeza. Gracias
Enrique J. Ros dice
Gracias por tu comentario, Luis, me alegra que te haya sido útil 🙂
Un saludo
Martin dice
Tengo el problema del envió y la recepción de los pedidos, agregue el código pero sigue sin funcionar alguna otra cosa que pueda hacer ??
de antemano muchas gracias por la ayuda
Duber dice
Hola Martín, qué tal al fin lo pudiste solucionar?
Dan Hermes Reyes Osnaya dice
Si tuviste alguna solucion?
Guido dice
Hola Enrique, primero que nada quiero agradecerte por la gran ayuda que nos brindás. Te cuento mi inconveniente, tengo 2 perfiles de clientes creados unos para la compra minorista y otro para la compra mayorista, el problema que tengo es que necesito que la compra que haga el cliente mayorista vaya a X mail y la compra minorista a otro mail distinto, pero no encontré la forma.
Sabés de algún plugin o alguna opción para poder solucionarlo? Gracias
Enrique J. Ros dice
Hola Guido
No conozco ningún plugin que haga eso, supongo que habría que desarrollar el código a medida.
Un saludo,
mel dice
Mi problema es que sí manda los correos pero a los que tienen correos de hotmail no les llegan o a algunos les llega a Spam.
Enrique J. Ros dice
Hola Mel
Muy probablemente el servidor de correo de tu hosting está en la lista negra, contacta con el soporte de tu hosting.
Un saludo
Jorge dice
Hola enrique, en primer lugar me gustaría felicitarte. Estoy probando Redsys en el entorno de pruebas. Tras realizar un pago con éxito, woocommerce me envia el email de pedido completado (o en preparación, según configure Redsys). El caso es que si hago la prueba con el correo que pertenece a mi página (como el de admin), el correo si que me llega, pero si realizo la prueba con un correo de gmail, el correo no llega. ¿Tengo algo mal configurado en el cpanel del hosting? ¿Qué puede ser si no?
Un saludo
Jorge dice
Hola enrique, ya está solucionado con el pluguin WP SMTP. Muchas gracias por tu trabajo y sigue haciendo tutoriales tan buenos
Felipe Sánchez dice
Buenas tardes Enrique,
te comento mi problema, me estoy volviendo loco para solucionarlo… Verás en mi caso Woocommerce sólo envía emails de pedidos, etc al email de la cuenta que viene por defecto, sin embargo si en la configuración elimino este y e introduzco otro no le llega el email, también ocurre sí junto al email por defecto añado otro separado mediante una coma para que le llegue también (sólo le llega al email establecido por defecto, en los demás casos no llega). ¿Me podrías ayudar?
Saludos.
Enrique J. Ros dice
Hola Felipe
Echa un vistazo al log de errores, a ver qué te muestra.
Un saludo
Felipe Sánchez dice
Muchísimas gracias por tu feedback Enrique,
Pues la verdad es que no tengo ni idea de cómo mirarlo, soy un poco novato en todo esto. Te agradecería si me puedes dar más información. En concreto en la carpeta logs de los archivos de wordpress, no me aparece nada de error, sólo dentro de una subcarpeta llamada Roundcube (el del gestor de mails de webmails), ahí sí hay un archivo de errores, lo he descargado y visto pero no sé interpretar nada de lo que aparece ahí, además no sé si tiene que ver con lo que me dices.
Saludos.
Enrique J. Ros dice
Hola Felipe
Busca en la raíz del servidor o dentro del directorio logs los archivos errors.log, php_errors.log o similares. Su contenido te puede dar pistas de qué cosas están funcionando incorrectamente en tu instalación.
Un saludo
tito dice
Hola!
Cuando mi cliente realiza un pedido a través de la web, no le llega el mail de Detalles del pedido..
La dirección del remitente es la corporativa…
¿Me podrías ayudar?
tito dice
PD: los pedidos se autocompletan con el pluggin «Autocomplete WooCommerce Orders»
Nathalie dice
Hola Enrique, tengo este problema, en el panel de woocomerce tengo los correos listos , todo bien. Al momento de registar la compra, no me llega el correo de pedido nuevo, pero al entrar al dasboard de wordpress y pedidos, me aparece como en proceso. Le tengo que dar «Completado» para que inmediatamente me llegué el correo de pedido nuevo, pero no quisiera que fuera de esa forma, anteriormente si me llegaba primero el correo de pedido nuevo , pero ahora nose que pasaria
P. dice
Buenas,
Tengo el mismo problema, y no doy con lo que es. Uso WP Mail SMTP y he añadido el plugin Autocomplete WooCommerce Orders, además de la linea que comenta Enrique en functions.php. ¿Alguna solución?
Gracias
Juan Carlos Neufeld dice
Muy claro y útil el a artículo. Felicitaciones!
Liliana dice
Hola, buenaaaaas
Mi pregunta es sencilla, hay algún modo de configurar que se envíe un e-mail al administrador cada vez que un pedido queda en «PENDIENTE DE PAGO», cómo se haría?
Gracias mil
Liliana
Macarena dice
Perdon por no entender, pero en que archivo lo pego? A donde voy?
Enrique J. Ros dice
Hola Macarena
¿Puedes dar algún detalle más acerca de tu duda? ¿Qué es lo que quieres pegar?
Un saludo
FREDY GOMEZ dice
Enrique muchas gracias por su aporte. No logro hacer que Woocomerce envíe correos, he probado de todo. Sólo me falta la ultima opción que da en su tutorial pero no sé donde debo ubicar el archivo fuctions.php, si lo busco me sale en varias partes.
Mil gracias por su pronta y amable respuesta
FREDY GOMEZ dice
Saludos. Podría por favor indicarme en qué ruta encuentro el archvio fuctions.php, si lo busco a través de mi Cpanel me sale en varias partes.
Mil gracias por su pronta y amable respuesta
Enrique J. Ros dice
Hola Fredy
Si usas un child theme, dentro de la carpeta de éste. Si no estás usando un child theme, dentro de la carpeta de tu plantilla, aunque no es recomendable hacerlo así (tienes que crear un child theme), ya que los cambios se perderán con la actualización de la plantilla.
Un saludo
Fernando dice
Gracias.
Instalando el WPmail SMTP logré que se enviaran los correos.
En mi caso tuve que configurarlo con SSL y puerto 465
florencia dice
HOla Enrique, en mi caso el correo que no se envía es el de pedido a la Espera. COmo configuro que correos se envian por cada plataforma de pago? Como puedo solucionar lo del correo que te menciono? Saludos y muchas gracias por tu tiempo!
Francisco dice
Buenos días. ¿Pudiste solucionar ese problema?
Francisco dice
Buenas tardes. Woocommerce no me envía los correos de confirmación de pedido, «Recibo del cliente /Detalles del pedido» apareciéndome justamente como en la imagen que aparece en este post. No puedo modificarlo para que lo haga. ¿A qué es debido? Gracias de antemano.
Santiago dice
pudiste solucionarlo, tengo el mismo problema
Miguel dice
Buenas tardes Enrique, muchas gracias. La demora en la recepción de las notificaciones crea confusión cuando la misma persona realiza las comprobaciones de las notificaciones y no llegan, en mi caso mucho mejor ahora,
Gracias por tu tiempo y esfuerzo
PEPE dice
Gracias, por tu articulo
como añado este codigo en functions.php:
add_filter( ‘woocommerce_defer_transactional_emails’, ‘__return_false’ );
existe alguna opcion desde wordpress, o tengo que conectarme con un programa como el filefila ffp y buscar ese fichero?
Enrique J. Ros dice
Hola Pepe
Deberías hacerlo accediendo mediante FTP. Echa un vistazo a esta entrada, te será de ayuda.
Un saludo