No todos los negocios son iguales, y por ello no todos tienen las mismas necesidades en cuanto a la gestión. Esto, que es cierto en general, también lo es al nivel más específico de la gestión de pedidos. Por eso, aunque WooCommerce incluya unos estados de pedido más o menos estandarizados, esto ni de lejos cubre las necesidades de todo el mundo. Y claro, pudiendo adaptar WooCommerce a nuestras necesidades, ¿por qué íbamos a adaptar nuestro negocio a lo que WooCommerce ofrece por defecto? No tiene sentido, y por eso hoy vamos a ver cómo podemos añadir a WooCommerce estados de pedido personalizados.
Y no sólo eso: veremos cómo podemos integrar estos estados de pedido para adaptarlos a nuestro flujo de trabajo o de preparación de pedidos, desde el momento en que el usuario realiza la compra hasta que el pedido está enviado, y cómo podemos asociarles correos electrónicos automáticos para que nuestros clientes estén informados en todo momento de en qué punto del proceso se encuentra su pedido.
Tabla de contenidos
Los estados de pedido estándar de WooCommerce y los flujos de preparación de pedidos
Ya he hablado aquí alguna vez de los estados de pedido de WooCommerce, de qué significa cada uno y cuál es su función:
Aunque ya ha llovido desde entonces, el contenido de esa entrada sigue siendo válido ya que WooCommerce sigue incluyendo los mismos estados de pedido por defecto, con el mismo flujo:
- En espera
- Pendiente de pago
- Procesando
- Completado
- Fallido
- Cancelado
- Reembolsado
Esto en general está bastante bien, y se puede (más o menos) adaptar a los flujos de trabajo y preparación de pedidos de gran cantidad de comercios electrónicos. Pero no siempre es así, porque las cosas no siempre son tan sencillas.
Por ejemplo, lo que WooCommerce llama tan simplificadamente «Procesando» en muchas empresas puede denotar muchas fases, como «Agendado», «En proyecto», «En fabricación» o vete tú a saber: cada caso particular puede ser diferente.
Otro ejemplo muy típico es el de los pedidos enviados. Cuando el pedido se marca como completado el cliente recibe un correo electrónico notificándoselo, a pesar de que generalmente aún no ha recibido nada. Y eso, aunque no lo parezca, es un caballo de batalla continuo: consultas, reclamaciones…
Y es cierto en realidad: el pedido no está completado hasta que lo recibe el cliente. De hecho, cuando un futuro gestor de ecommerce se acerca a WooCommerce por primera vez, una de las dudas que tiene es acerca de los pedidos enviados: ¿qué estado de pedido le corresponde en realidad? Al fin y al cabo, él ya ha terminado su parte del proceso…
Nuevos estados de pedido en WooCommerce
Es obvio que, en multitud de ocasiones, encontramos que faltan estados de pedido, que los que crea WooCommerce por defecto no cubren las necesidades. Por ejemplo, en el caso típico (y bastante completo) de una empresa o profesional que fabrique los productos bajo demanda, podría ser algo así:
Procesando > En fabricación > En montaje > En empaquetado > Enviado
Ya ves que aquí WooCommerce sólo proporciona el primer estado de pedido (Procesando). Usando los estados de pedido estándar de WooCommerce el cliente estaría sin información veraz sobre el estado de su pedido durante, seguramente, varios días, hasta que de pronto le llegue el aviso de que el pedido se ha completado. Y él, sin información y (aún) sin el producto comprado. El resultado: consultas, llamadas, correos, y pérdida de tiempo por ambas partes.
Afortunadamente, siempre (o casi) podemos adaptar WooCommerce a nuestras necesidades particulares. En este caso la cosa es tan sencilla (a priori) como crear nuevos estados de pedido personalizados, adaptados a cada caso particular.
Añadir estados de pedido a WooCommerce por código
Hacer esto es relativamente sencillo en su forma más simple. De hecho, bastan dos funciones para tener un nuevo estado de pedido personalizado en WooCommerce: una que lo crea y otra que lo añade a la lista de estados de pedido reconocidos por WooCommerce.
Siguiendo con el ejemplo de antes, si queremos crear un estado de pedido llamado En fabricación, podríamos hacer algo así:
add_action( 'init', function() { register_post_status( 'wc-en-fabricacion', array( 'label' => 'En fabricación', 'public' => true, 'exclude_from_search' => false, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop( 'En fabricación (%s)', 'En fabricación (%s)'), ) ); }, 10 ); add_filter ( 'wc_order_statuses', function( $estados ) { $estados['wc-en-fabricacion'] = 'En fabricación'; return $estados; }, 10, 1 );
Y ya está. A partir de ese momento WooCommerce ya contará con un nuevo estado de pedido llamado «En fabricación», y los pedidos se podrán pasar a ese estado:
Pero seguro que, por poco tiempo que lleves trabajando con WooCommerce, te das cuenta de un montón de carencias de esta funcionalidad básica, que serán necesarias para poder operar con normalidad:
- No hay botones de acción: si quieres cambiar el pedido de estado, hay que editarlo y usar el desplegable interior
- No hay acción en lote para pasar varios pedidos al nuevo estado de pedido de forma simultánea
- No hay aparejadas notificaciones por correo electrónico, ni al cliente ni (en caso necesario, por ejemplo para control interno) al administrador
Puede ser, además, que se te haya pasado por alto alguna otra carencias más, como por ejemplo que los pedidos en el nuevo estado no se sumarán a los informes de ventas de WooCommerce. Para el ejemplo puede no hacer falta, pero quizá queramos crear un estado de pedido «Enviado» en que los pedidos quedarían finalmente. Y, si no cuentan como completados, no tendremos todos esos pedidos incluidos en los informes.
¿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.
Plugin para estados de pedido personalizados
Así que, como para muchas otras funcionalidades, si requieres algo más que lo puramente básico hay que acudir a un plugin que proporcione todas esas funciones accesorias (y alguna más). Un plugin como éste:
De forma muy resumida, este plugin permite:
- Crear estados de pedido personalizados.
- Asignarles un color y una etiqueta en la pantalla de listado de pedidos.
- Crear acciones que pasarán cualquier pedido a este nuevo estado.
- Utilizar acciones en lote para poner varios pedidos en este estado.
- Enviar notificaciones personalizadas por correo electrónico al cliente y/o al administrador cuando el pedido pase a este nuevo estado.
- Adjuntar archivos a estas notificaciones.
- Poner un pedido automáticamente en un estado personalizado en función del método de pago o del rol del usuario.
Crear nuevos estados de pedido en WooCommerce
Crear un nuevo estado de pedido para WooCommerce se convierte así en algo tan sencillo como ir a la nueva opción Estados de pedido y pulsar en Añadir nuevo, igual que añadirías una entrada o un producto.
Estableces el nombre para el nuevo estado, el color que lo distinguirá en la lista de pedidos y en los botones de acción, si ha de sumar el valor de los pedidos en este estado a los informes de ventas y si han de enviarse notificaciones al cliente y/o al administrador cuando un pedido pase a este estado.
Por supuesto, este nuevo estado personalizado contará con las mismas características que los estados de pedido por defecto de WooCommerce: botones de acción y acciones en lote.
Notificaciones para los estados de pedido personalizados
Los nuevos estados de pedido, como he dicho, se pueden configurar para que envíen notificaciones por correo electrónico al cliente y/o al administrador, con contenido personalizado y dinámico (se pueden incluir datos como el nombre del cliente y el número de pedido).
Pero es que, además, a estas notificaciones se pueden adjuntar tantos archivos como se deseen en cualquier formato admitido por WordPress, ya que deben ser archivos subidos a la biblioteca de medios: PDF, DOC, JPG…
Así, junto con la notificación, podemos adjuntar al cliente instrucciones de montaje, fotografías, folletos de ofertas o cualquier otra cosa que se te pueda ocurrir.
Estado de pedido Enviado y el seguimiento de envíos
Ya he mencionado que el caso más típico de estado de pedido «faltante» (o, mejor, dicho, echado en falta) en WooCommerce es el de Enviado.
Con este plugin solucionarlo es tan sencillo como añadir un nuevo estado de pedido llamado Enviado (o como mejor te parezca), marcar la opción de incluir el estado de pedido en los informes de ventas (puesto que los pedidos enviados son ventas completadas) y asignarle una notificación para el cliente informándole de que su pedido número XX ya ha sido enviado y que lo recibirá próximamente.
Pero es que, además, usando este otro plugin, podemos incluir en esa notificación la información de seguimiento.
El cliente contento y nosotros tranquilos. Y viceversa.
Vídeo: Añadiendo estados de pedido personalizados a WooCommerce
Como resumen, y para los que no les gusta leer, aquí dejo un vídeo para que puedas ver la operativa del plugin:
Javier dice
Hola Enrique. ¿Y como seria para adjuntar un link de descarga de un dropbox o wetransfer? Yo quiero crear un estado de “proyecto terminado” y cuando sea asi que se genere un mail de notificación al cliente que recibira junto a un link para descargar ese proyecto.
Enrique J. Ros dice
Hola Javier
Es que lo que necesitas es personalizar la notificación cliente por cliente (o, para ser más precisos, pedido por pedido). Eso habría que programarlo a medida.
Un saludo
Eduardo dice
Buenos días Enrique,
¿Si se necesita añadir más de un estado de pedido? ¿Como se haría con el código que comentas?
Enrique J. Ros dice
Hola Eduardo
Tendrías que registrar los que necesites mediante la función register_post_status y después pasarlos a WooCommerce con el filtro wc_order_statuses
Un saludo
Isaac dice
Una duda.
Cuando personalizamos un estado de pedido, estos perdidos quedan fuera de los informes de ventas en Woocommerce.
¿Es posible arreglar esto?¿Como?
Gracias.
Enrique J. Ros dice
Hola Isaac
El plugin del que hablo en esta entrada incluye una opción para incluir o no cada uno de los estados de pedido personalizados en los informes de ventas.
Un saludo
Jose dice
Disculpa mi ignorancia, pero ¿ donde ponemos el código para incluir un nuevo estado de pedido?
Enrique J. Ros dice
Hola Jose
Echa un vistazo a esto.
Un saludo
Javi dice
Hola, no sé si puedes ayudarme.
Cómo podríamos hacer para que cuando pinchemos en «Pedidos» muestre por defecto los pedidos en estado «Procesando».
Es un tedio cada vez que abres un pedido que al volver, vuelva a «todos», en vez de volver a «Procesando».
Se te ocurre alguna fórmula?
Muchas gracias, gran trabajo
Enrique J. Ros dice
Hola Javi
Eso no se posible, pero puedes añadir en la barra de administración un enlace a la lista de pedidos en ese estado para poder ir directamente ahí desde cualquier lugar de WordPress. El enlace tendría que apuntar a tuweb.com/wp-admin/edit.php?post_status=wc-processing&post_type=shop_order, y puedes añadirlo usando el hook admin_bar_menu.
Un saludo
Marcos dice
Hola Enrique, tengo una necesidad similar al comentario que respondiste aquí. Me interesa que al pinchar en un producto, me muestre a que órdenes pertenece. Todo esto previamente creando un estado de pedido llamado Reserva, entonces que al ingresar a la página del producto me muestre a cuales número de órdenes está reservado dicho producto.
Te agradezco !
Enrique J. Ros dice
Hola Marcos
Eso depende de para qué quieres usar la funcionalidad. Echa un vistazo a este plugin, a ver si es lo que buscas.
Un saludo
Gerson dice
Hola Enrique,
¿Es posible desactivar los estados que trae por defecto Woocommerce y dejar solo los estados personalizados?
Enrique J. Ros dice
Hola Gerson
No, no es posible
Un saludo
Daniel dice
Buenas tardes, Enrique!
Hace ya un tiempo genere mis estados de pedido (creo que con las indicaciones que nos pones aquí), y ahora me he encontrado un problema furioso, te lo comento por si te ya pasado con alguien.
La base de datos ha crecido mucho (de forma natural, no por los estados de pedidos) pero lo que ha aumentado en exceso es el tiempo de consulta, llegando a bloquear la web. Desde el hosting, una de las consultas que me daban como lentas hacia referencia a los estados de pedidos activos, entre ellos los 5 míos, y daba como resultado 2.000.000 de líneas consultadas en una tabla de 156.000 líneas.
La consulta en cuestión la hacia el propio WooCommerce añadiendo todos los estados con OR.
Te han reportado o te ha sucedido algo similar?
Muchas gracias por tu ayuda!
Un saludo
Daniel Pallarés
Enrique J. Ros dice
Hola Daniel
Pues tendrás que revisar, depurar y optimizar el código que has utilizado.
Un saludo
Lucas Sempé dice
hola daniel! Estoy con el mismo problema, lo pudiste resolver?
Reynaldo dice
Hola este plugin sigue activo con la misma funcionalidad?
Enrique J. Ros dice
Hola Reynaldo
Sí, por supuesto, el plugin se mantiene actualizado.
Un saludo
Reynaldo dice
Hola Enrique
Gracias por tu respuesta, me pregunta mi jefe si estos 6.90 euros por año es para un solo proyecto o podemos usar en varios proyectos??
Saludos
Enrique J. Ros dice
Se puede usar en todas las webs en que lo necesites, siempre que sean tuyas o administradas o desarrolladas por ti.
Un saludo
Isa García Redondo dice
Hola Enrique,
He instalado este plugin de Estados de pedido, para poder personalizarlos a mi gusto, pero en la versión de woocommerce está ya la pestaña «Correos electrónicos». Tengo que desactivar esos correos? No recibo ningún correo que he preparado a no ser que active los de woocommerce y no son los mismos que los de tu plugin.
¿Cómo lo soluciono?
Enrique J. Ros dice
Hola Isa
Las notificaciones son independientes a las de WooCommerce. Revisa si el problema que tienes con los correos es general, también puedes usar el plugin gratuito Email Log para comprobar si los correos se están en efecto generando.
Un saludo
Deisy Ocampo dice
Buenas tardes, mira estoy manejando woocomerce con booked, quisiera que cuando se atiendan en nuestro caso consultantes y paguen por trasferencia bancaria se pasara al estado de espera, pero que en el booked nose hiciera la reserva de ese espacio hasta que pasara el estado a completado, como podria hacer esto
Gracias
Tulio Briseño dice
Hola!
Suponiendo que yo creo un nuevo estatus con el plugin y lo llamo «Entregado».
Podría hacer una consulta como esta?
SELECT a.post_status, b.meta_value FROM wp_posts a, wp_postmeta b
WHERE a.ID = b.post_id
AND a.post_type = ‘shop_order’
AND a.post_status = ‘Entregado’
Saludos!
Enrique J. Ros dice
Hola Tulio
No, no puedes usar la etiqueta del estado de pedido, es preciso usar su ID de estado.
Un saludo
lui dice
holaa! gracias por la información, tengo una duda:
actualmente tengo un filtro que cambia la lista de los estados de pedido para cierto rol (recepción) que solo puede crear (completado), no aparecen mas estados en su cuenta para modificar, la pregunta es: una vez instalado este plugin, puedo hacer un filtro igual o se conserva el mismo?
no se si me explique bien
Gerardo dice
Hola, Enrique. ¿Sabes si existe algún plugin que discrimine entre productos? Es decir, si se compra un producto se le asigne un estado y si se pide otro, un estado diferente?
Es porque tenemos stock en dos talleres distintos y saber esto ahorraría mucho tiempo y lo haría todo más eficiente.
Gracias
Enrique J. Ros dice
Hola Gerardo
No, no conozco ningún plugin que haga algo así.
Un saludo
Alejandro Quiroz dice
buen dia consulta, actualmente tengo la extension llamada WooCommerce Email Customizer, que tiene el mail personalizado y un tercero que uso para mandar otros mails.
Con este complemento, afecta esas configuraciones cuando se cambie de estado o como tambien se puede sumar a esas integraciones.
Con WooCommerce Email Customizer suma las que aparece en el settings, puede colocarse esas notificaciones como opcional que mande el correo?
Que sucede si desactivas o activas el complemento, queda un registro en el timeline de compras?
Saludos
Enrique J. Ros dice
Hola Alejandro
El plugin es compatible con otros plugins de personalización de correos, siempre que cumplan los estándares de WordPress/WooCommerce. Todos los cambios de estado quedan en las notas del pedido siempre (esto lo hace WooCommerce, no el plugin en sí).
Un saludo
leonardo rivas dice
Saludos soy nuevo en woocommerce respecto al código del estado ‘En fabricación’, me interesaría saber como implementarlo en mi tienda ya si es posible su indicación de donde debo pegar ese código se le agradecería ya que estoy iniciando una tienda para vender cojines por encargo,
se me hace dificil por ahora comprar su plugins primero por estar apenas iniciando mi tienda y segundo porque en Venezuela las transacciones en dolares están bloqueadas, saludos
Mentxu dice
Hola Enrique.
He creado un estado de pedido personalizado que informa al cliente que hemos recibido su pedido, pero me gustaría que si el cliente ha elegido como método de pago la transferencia bancaria, en el correo que recibe apareciera, junto con los datos del pedido, los datos para el pago, es decir, nuestro número de cuenta. ¿Hay algún shortcode para esto?
Gracias.
Enrique J. Ros dice
Hola Mentxu
En este caso puedes hacer lo siguiente:
Un saludo
Mentxu dice
Perfecto, Enrique. Muchas gracias.
MisterGubu dice
Hola, ¿Se puede añadir la tabla con los detalles del pedido, precio total etc, a cualquier nuevo email de estado de pedido creado con este plugin?
Y una pregunta relacionada, tienes algún plugin o shortcode con el que se pueda personalizar la página ‘Thank you’ (compra efectuada) dependiendo del tipo de pago elegido (tarjeta, transferencia etc).
Gracias
Enrique J. Ros dice
Hola MisterGubu
Sí, se puede añadir la tabla en las notificaciones de los estados de pedido. No, ningún plugin para eso.
Un saludo
MisterGubu dice
Gracias
Mario dice
Por ejemplo cree un estado de refunded, pero me gustaria que envie el correo para implementar el codigo.
Mentxu dice
Buenos días, Enrique.
¿Se puede crear un estado de pedido exclusivo para productos decargables, de forma que cuando el cliente compre un ebook y haga el pago reciba el correo con la confirmación del pedido y el enlace para la descarga?
Gracias.
Enrique J. Ros dice
Hola Mentxu
WooCommerce ya envía el enlace al cliente cuando el producto que compra es descargable.
Un saludo
Mentxu dice
Antes así era, pero desde que he personalizado los estados de envío con tu plugin ya no ocurre así. Ahora el cliente recibe el correo con el estado de pedido que corresponde a la forma de pago, en este caso PayPal, pero no lleva el enlace para la descarga.
Por eso te preguntaba si es posible hacer un estado de pedido especial para los productos descargables que incluya el enlace para la descarga.
Enrique J. Ros dice
Hola de nuevo Mentxu
Pues hasta ahora nadie me lo había mencionado. Incluiré en la próxima actualización una variable (tipo %%descargas%%) que permita insertar en el lugar que se quiera de la notificación los enlaces de descarga de la compra, si los hay.
Un saludo
Mentxu dice
Sería estupendo, Enrique. Me gusta mucho el plugin y no quería tener que dejar de utilizarlo.
¡Gracias!
Victor dice
Hola Enrique, una duda antes de adquirir en plugin, necesito implementar lo siguiente:
– al comprar un producto se debe seleccionar como opción de despacho «PARA RETIRO»
– cuando se realice el pago online, el comprador debe recibir mensaje «…se informará por correo cuando su producto esté listo para despacho…»
– el estado del pedido en WooCommerce debe quedar como «PARA RETIRO»
– cuando el producto esté listo, se debe cambiar estado a «LISTO PARA RETIRO»
– y se debe enviar un mensaje al comprador indicando que está listo el producto
Por lo que leí, todo lo mencionado se debería hacer sin problemas con el plugin.
Slds!
Enrique J. Ros dice
Buenos días Víctor
En cuanto a tu primer punto, el plugin no interviene para nada en la opción de envío que el usuario elija, ni las limita. No sé si estás describiendo un proceso o si esperas que el plugin intervenga ahí de alguna manera. Tampoco permite automatizar estados de pedido en función del método de envío.
Un saludo
Bastian dice
Hola, cómo puedo hacer, para que se puedan enviar mails gatillados, por nuevos estados creados en woocomerce.
Desde ya muchas gracias!!!
Monica Sánchez dice
Hola, gracias por el artículo creeé un estado personalizado «En Ruta» y quisiera que este estado sea sumando en el número de pedidos pendientes de la sección Woocomerce/ Pedidos y a los informes de ventas. Qué debo hacer?
Muchas gracias de antemano,