Tabla de contenido
WooCommerce de origen ya trae cierto soporte de envío a través de su configuración de zonas y métodos, la cual es bastante eficiente para propósitos generales. Uno de los métodos de envío que trae predefinidos es el envío gratuito, y nativamente sólo tienes una condición disponible para dicho envío gratuito, que es cuando el monto de una orden llega a cierta cantidad, lo cual es un parámetro común que usan muchos negocios online. Sin embargo, hay necesidades mucho más complejas más allá de esta que trae por default WooCommerce, así que en este artículo veremos como configurar un envío gratuito condicional más robusto.
Para este sencillo tutorial sólo necesitaremos una instalación ya lista de WooCommerce, y que estés familiarizado con como crear zonas de envío y métodos de envío, aunque lo cubriremos igual en un pequeño repaso para tener todo claro.
Funcionamiento básico de los métodos de envío en WooCommerce
Como quizás ya sabes, los métodos de envío (el envío gratuito) se definen por zona de envío, es decir, están confinados a una zona geográfica en la cual puedes ofrecer tal tipo de envío. Para crear un método de envío sólo tenemos que hacer los siguientes pasos:
Crear la zona de envío en WooCommerce
Vamos a WooCommerce > Ajustes > Envío y haz clic en el botón de Añadir zona de envío:
Llena los valores de Nombre de zona y Región(es) de la zona; yo usé un estado de México, tu usarás algún valor distinto acorde a donde vivas, o bien el que quieras.
Añadir un método de envío en WooCommerce
Ahora hacemos clic en Añadir método de envío que está en la sección de Métodos de envío:
Eso nos muestra el diálogo de Añadir método de envío que luce como se ve a continuación y ofrece tres opciones: precio fijo, envío gratuito y recogida local:
Elije Envío gratuito y haz clic en el botón azul (Añadir método de envío), con lo que aparece lo siguiente:
Opciones nativas de WooCommerce para configurar envío gratuito condicional
De vuelta a la pantalla original verás que ya está añadido el Envío gratuito como método de envío. Pon el cursor encima y verás un par de opciones para este tipo de envío, que son Editar y Borrar; haz clic en Editar:
Como puedes ver las opciones son cambiar el título y otra que dice “El envío gratuito requiere…” que tiene cinco opciones:
- N/D: para no usar este parámetro adicional.
- Un cupón válido de envío gratuito
- Una cantidad mínima de pedido
- Una cantidad mínima de pedido O un cupón
- Una cantidad mínima de pedido Y un cupón
Cualquier opción que involucre una cantidad mínima de pedido ocasionará que tengas que meter tal límite, y también indicar si quieres aplicar la regla antes que un descuento por cupón, de modo que no cortes tus ganancias innecesariamente. Como puedes ver, las opciones no requieren mucha explicación. Otra observación es que WooCommerce se esfuerza por darnos cierto control sobre el envío gratuito (evidenciado por las conjunciones “O” e “Y” en las opciones) antes descritas, pero obviamente apenas son útiles. ¿Que pasa si quieres ofrecer el envío gratuito sólo a ciertos lugares dentro de la zona de envío? ¿qué tal sólo a ciertos productos? afortunadamente tenemos formas de hacerlo. Vamos a revisar como, pero antes borra el envío gratuito que creaste hace un momento.
Envío gratuito condicional con WooCommerce Advanced Free Shipping
Para tener un envío gratuito condicional más robusto usaremos el plugin WooCommerce Advanced Free Shipping, al que me referiré como WAFS de ahora en adelante para no escribir tanta palabra a cada rato. Vamos a instalarlo: en tu WordPress ve a Plugins > Añadir nuevo y busca el plugin por su nombre (el completo). Verás el plugin entre los resultados de búsqueda, instálalo y actívalo.
⚠ Nota sobre el plugin WooCommerce Advanced Free Shipping
Aquellos con ojos afilados se darán cuenta que el plugin que usaremos tiene un año sin ser actualizado y eso iría contra mis propias recomendaciones de como elegir plugins confiables; pero de acuerdo con el autor en un comentario de hace un par de meses, el plugin está al día y probado con las últimas versiones, por lo que no ha requerido actualización.
Otra nota es que no está enteramente en español, de lo cual me encargaré personalmente. 😉
Cómo funciona WooCommerce Advanced Free Shipping
Lo primero que tienes que saber es que el envío gratuito condicional que se configura por este plugin NO está ligado a una zona de envío específica, así que tienes que ser cuidadoso a la hora de crear un envío gratuito con este plugin, en el sentido de que debes ser específico para no crear una condición en la que no hayas pensado, y ofrezcas un envío gratuito donde no debas y termines perdiendo dinero.
Una vez instalado y configurado, encontrarás las opciones del plugin en WooCommerce > Ajustes > Envío, haciendo clic en la pestaña Envío gratis avanzado, donde encontrarás una pantalla como la que se ve a continuación:
Vamos a revisar que opciones hay:
- Enable the Advanced Free Shipping rates: permite habilitar o deshabilitar el envío gratuito. Habilitado por default.
- Ocultar otros métodos de envío cuando Envío Gratis Avanzado está disponible: tal cual lo explica, creo que no hace falta decir más.
- Sección Free Shipping Rates: aquí verás todos los envíos que vayas añadiendo; ojo, puedes añadir más de uno.
Vamos a añadir un envío gratuito condicional, presiona el botón Add Free Shipping Rate, lo que nos lleva al editor:
Notarás que hay un título y abajo otro parecido; el primero es para mostrarse en la interfaz de administración de envíos de WooCommerce, y el otro para mostrarse a la hora del checkout.
El editor de condiciones de envío gratuito avanzado
WFSA se basa en grupos de condiciones; cada grupo tiene una o más condiciones, y cada condición está formada por cuatro cosas: un campo, un operador (Equal, Not equal, Greater or equal to, y Less or equal to, que corresponden a Igual, Diferente, Mayor o igual a y Menor o igual a, respectivamente) y un valor a comparar. Puedes poner una o más condiciones, y dentro de un grupo todas las condiciones son de tipo “Y”, es decir “esta condición Y esta condición Y…”, o en otras palabras, significa que para que un grupo tenga el valor de verdadero, todas las condiciones del grupo tienen que serlo.
Puedes definir más de un grupo, y entre grupos sus resultados se encadenan con “O”, es decir, “este grupo O este grupo O…”, o lo que es o mismo, con que un grupo sea verdadero toda la evaluación será verdadera.
Cada grupo muestra un par de enlaces cuando pasas el mouse por la parte superior derecha; estos enlaces son Duplicate y Eliminar, que hacen precisamente eso que dicen.
Los campos que puedes elegir para las condiciones son bastantes a decir verdad; por categoría, estos son los campos disponibles que tendrás:
- Carrito de compras
- Subtotal
- Subtotal excluidos impuestos
- Impuesto
- Cantidad
- Contiene producto
- Cupón
- Peso
- Contains shipping class
- Información del usuario
- Código postal
- Ciudad
- State
- País
- Rol de usuario
- Producto
- Ancho
- Alto
- Largo
- Inventario
- Estado del inventario
- Categoría
Nuestro primer bloque de condiciones de envío
Ya tenemos toda la información sobre como funciona este plugin, vamos a hacer una prueba ahora: imagina que como política de negocio ofreces envío gratuito si el subtotal de la compra es $500, estén dentro del mismo estado y pidan 20 piezas o más (si ya sé que no tiene mucho sentido, pero sígueme la corriente). Todas estas condiciones entran un sólo grupo y quedarían más o menos así:
Después de esto, te invito a que hagas una prueba en tu carrito; te recomiendo que habilites la calculadora de envío (WooCommerce > Ajustes > Envío > Opciones de envío > Activar la calculadora de envíos en la página de compra), y juega con la cantidad y la dirección y verás que si se cumplen las condiciones, se activa el envío gratuito (aclaro que añadí un método de recogida local, por ello lo ves en las imágenes siguientes):
⚠Precaución sobre las condiciones
Las condiciones sólo tienen significado unitario; es decir, si especificas dos condiciones, una que indique que se compruebe que existe el producto X en el carrito, y otra condición donde indiques que sean 20 productos o más, no quiere decir que estés comprando 20 productos X, sino que hayan 20 productos en el carro de cualquier tipo.
Un ejemplo de como usar dos grupos de condiciones puede ser, por ejemplo, si queremos ofrecer envío gratuito a todos los que compren más de $500 pesos O que pidan un producto de una categoría en particular, digamos “Promoción”. Nuestras condiciones quedarían así:
Nótese que quité la condición de Estado, pues sólo tengo una zona de envío, y deberá coindidir el estado de los datos de envío para que se muestre el envío gratuito, si es que se dan las condiciones. Si tuvieras más de una zona de envío, entonces si mejor meter como condición el estado, o el código postal.
Ahora bien, ¿puedes deducir que hará ese filtro? te adelanto que la condición Categoría significa que todos los productos del carro tengan esta categoría. Así que el filtro antes mencionado le dará envío gratis al cliente si pide más de $500 “O” si todos los productos del carrito son de la categoría “Correas”. Las únicas combinaciones válidas son tal cual las acabas de leer; si compras productos que totalicen $500 se activa, si compras productos que totalicen menos no, “O” si compras sólo una correa aunque cueste un peso, también se activa. Recuerda bien que dentro de un grupo todas las condiciones deben cumplirse para indicar que el grupo de estas también cumple y activar el envío gratuito, y de haber más de uno entre estos grupos de condiciones, cuando menos uno debe cumplir para que se active el envío gratuito.
Experimenta y prueba
Como puedes ver es muy sencillo usar el plugin, pero a la vez es fácil caer en un error; mi recomendación es que implementes tus grupos de condiciones y no olvides probar en diversos escenarios, recuerda que es fácil crear una condición que te permita ofrecer envío gratuito en donde no deba de ir, o también lo inverso, que sería que el envío gratuito no se active jamás.
Palabras finales
Este artículo te muestra una manera de hacer el envío gratuito condicional en WooCommerce, pero no es la única; incluso el plugin que uso aquí es todavía más versátil, sobre todo si estás dispuesto a ensuciarte las manos con algo de código. Y por supuesto hay otras opciones, algunas comerciales, que te permitirán tener mucho más control si es lo que necesitas.
Antes que te vayas…
Los siguientes son enlaces de afiliado a hosting, herramientas y temas que uso en este sitio. Son el único apoyo económico del sitio, que notarás no tiene anuncios de ningún tipo ni molestos popups. Si necesitas alguno de estos productos, te pido los adquieras haciendo clic en las imágenes que se muestran a continuación. ¡Gracias de antemano!
Orlando es un ingeniero en sistemas de 45 años de edad, apasionado del desarrollo de software y con un cariño especial por WordPress. Le encantan los libros, la música, la fotografía, los cómics y es un AFOL. De último pero no menos, esposo y padre de dos trolls.
Una pregunta como le puedo hacer si un producto le aplico envio gratis, automaticamente se le aplique a todo el carrito ?
Hola, gracias por compartir tan buena información.
Me he descargado el plugin y, estoy intentando configurar un “envío gratuito por compras superiores a 29,90€ que solo se aplique a artículos sin descuento”.
No veo que la versión free tenga esta opción o no sé hacerlo, al crear las condiciones en las funciones del “carrito” solo me da opción de ir metiendo producto por producto y eso sería una locura. Por categorías no me sirve porque en muchas categorías hay artículos con y sin descuento. Y las opciones de “inventario” no entiendo muy bien como funciona.
¿Podrías decirme si el plugin tiene esta opción y ayudarme a ver qué opción es la válida para esto?
Muchas gracias de antemano y saludos
Muy bueno Orlando! Pero tengo una duda. En mi web tengo varias categorías de producto. En la de marisco tengo envio gratis a partir de 110€. Y en ”cocina” envio gratis a partir de 35 euros. El problema es que cuando añado al carrito esas dos categorías y las dos pasan de sus respectivos precios para que sea envio gratis, no me lo detecta y me sale coste de envio. ¿Como lo harías en este caso?
Estimado Eloy,
Para ello hace falta la versión Pro (USD $18) del plugin (https://codecanyon.net/item/woocommerce-advanced-shipping/8634573). Honestamente no cuesta mucho y me parece una buena inversión.
No está de más que hagas preguntas antes de comprarlo, pero a juzgar por las características que veo en la página, se debe poder sin problemas. Igual investiga plugins que implementen una tabla de envíos (table rate), muchos de ellos hacen esto sin problemas.
Saludos.