Tutorial creado en mayo del 2020 y actualizado el 17 de enero de 2022
Los envíos son una parte clave a la hora de empezar a vender en una tienda online. El cliente al finalizar el pago debe seleccionar el método de envío que más le conviene y si puede ser saber cuánto le va a tardar.
En este tutorial vamos a ver cómo configurarlo todo de forma adecuada dentro de nuestra tienda en WordPress para no perder ninguna venta. Todo guiado con fotos y con algún plugin extra que uso para aumentar las funcionalidades. También te dejo el vídeo de Youtube por si prefieres verlo paso a paso.
Nos vamos a la sección de WooCommerce > Ajustes > Envío para editar todas estas opciones. En esta sección nos saldrán 3 pestañas debajo para editarlo todo: Zonas de Envío, opciones de envío y clases de envío.

Vamos a empezar de menos a más para que lo podáis entender más fácilmente. Hacemos clic en la pestaña de clases de envío.
Índice
Clases de envío
Estas clases se usan para agrupar productos similares o que necesitan el mismo aumento en la tarifa de envío por elegirlo. Esto normalmente los gestores lo que hacen es subirlo directamente al precio del producto para no complicarse.
Hacer está acción de clases es bueno, porque así el cliente ve que no está pagando solo por un producto, sino por un servicio de envío superior. Este puede ser el caso de productos congelados, frágiles, etc. Se configuraría en WooCommerce siguiendo el siguiente ejemplo:

Con poner el nombre de la clase de envío es suficiente ya que los precios se lo pondremos en el apartado de zonas de envío cuando lo configuremos en el siguiente apartado…
Zonas de envío
Aquí es dónde tenemos que hacer casi todos los ajustes de envíos, hacemos clic en nueva zona de envío para añadir una. Ponemos el nombre de la zona y establecemos todas las regiones o países que abarcan los envíos que vamos a configurar.
Las regiones de la zona solo te saldrán las las Ubicación(es) de envío que configuraste en el apartado de general. Si pusiste solo a Argentina te saldrán las ubicaciones de este país:

Métodos de envío
Hacemos clic en añadir método de envío y por defecto se podrá elegir entre: envío gratuito, precio fijo y recogida en local:
Precio fijo: Establecemos el importe del envío que deberá pagar el cliente por defecto en el pedido. Se puede combinar ese precio añadiendo variables como [qty] [cost] o [fee percent]. Por ejemplo podemos poner 4,5*[qty], es decir 4,5€ por cada artículo. Se puede configurar que vaya con IVA o sin.
Recogida en local: Si quiere el cliente que se lo dejemos preparado o guardemos para cuando lo recoja, también se puede poner un precio.
Envío gratuito: Establecemos a partir de qué precio el envío le saldrá gratis al cliente. Se puede hacer por cupones, importe mínimo… Te recuerdo que en este tutorial te enseño cómo mostrar un aviso de cuánto queda para el envío gratuito al cliente

Con esto estarían todas las configuraciones de zonas de envío básicas. El problema es que hay muchas carencias como poner un precio por peso, precios diferentes para cada proveedor, envío por cantidad… Para todo esto y mucho más instalaremos el plugin:
Table Rate for WooCommerce by Flexible Shipping
Añadimos este plugin que está de forma gratuita en el repositorio de WordPress o bien haciendo clic aquí. Nos saldrá ya esta nueva opción como forma de envío:

Una vez añadimos el método de envío nos saldrá una página ampliada dónde podremos poner las características de nuestro envío. En el ejemplo podemos ver cómo lo hemos configurado para que dependiendo del peso sea un precio, también podría ser por el importe del carrito:

También da otras opciones en su versión pro como establecer un precio dependiendo del número de artículos, productos específicos, etc.
Shipping Packages for WooCommerce
Este es el último plugin que podéis instalar que complementa al anterior, disponible en el repositorio de WordPress o en esta url. Sirve para tener dos tipos de proveedores de envío independientes, el ejemplo más común es el de enviar congelados y productos normales. El congelado tendrá su transportista con su precio y el otro tendrá el normal.
Esto lo conseguimos con las clases de envío que hemos explicado al principio del artículo, dependiendo de qué clase tenga ese producto, se enviará con un tipo de envío u otro. Para una explicación más completa os la dejo en esta parte del vídeo.
Opciones de envío
Esta es la última minipestaña que nos faltaba. Son pocas las configuraciones que hay que hacer:
Cálculos: Podemos activar una especie de calculadora de envíos en el carrito para que el cliente sepa desde ahí cuál sería su envío y ocultar los gastos de envío hasta que el cliente no ponga una dirección.

Destino del envío: ¿Dónde enviaremos el paquete? En general siempre habrá que marcar a la dirección de facturación del cliente.
Modo de depuración: Para temas de caché, no hace falta marcarlo.
Resolución
Lo más importante es saber si vamos a tener solo una empresa de mensajería o más, para tener en cuenta si instalar el plugin o no. Os dejo otros tutoriales que se complementan bastante bien con este, por si queréis añadir funcionalidades:
Por último, si necesitas un punto de venta en WooCommerce no dudes en contactarme!
Hola diego, como puedo añadir en la parte de finalizar compra sólo opciones de ciudades donde reparto, ya que en woocommerce me deja poner solo provincias.
Hola Valentin,
Esto debes hacerlo mediante códigos postales y si con esto aún no se queda muy exacto deberás usar un plugin extra para ampliar las funcionalidades de envío de WooCommerce. En este caso puedes usar WooCommerce Map Delivery Area
Espero que te sirva,
Un saludo!
Buen día Diego, exite alguna forma de tener tarifas de envio diferentes segun el horario es decir, de 7:00 am a 6:59 pm una tarifa y de 7:00pm a 6:59am otra tarifa.
De ante manos gracias.
Hola Miguel,
Perdón por la demora! Es posible, es más tengo pendiente un artículo explicando este plugin: https://www.thedotstore.com/hide-shipping-method-for-woocommerce
Puedes mostrar el método de envío ciertos días a la semana e incluso por horas como quieres, además de tener mil funcionalidades más que puedes ver!
Un saludo!
Buenas tardes, como puedo hacer si en una misma ciudad tengo dos zonas con precios diferentes?
Hola Juan Camilo,
Si es por los códigos postales se pueden poner también manualmente, sino tienes que recurrir a un plugin externo que te haga esto. Como el de WooCommerce Map Delivery Area
Un saludo!
Hola Diego, tengo una tienda en la que quiero vender productos a nivel local y otros a nivel nacional. siendo 5€ local y 6€ nacional. Como puedo hacer para configurar estos envíos y que cuando alguien que este fuera de la zona local no pueda comprarlos y viceversa.
Buenos días! ¿Cómo puedo configurar mi woocommerce para incluir varias empresas de mensajería? Gracias!!
Hola JoGis,
Lo explico en el propio post en el apartado de Table Rate for WooCommerce by Flexible Shipping. Instalando este plugin puedes crear tantas tarifas condicionales y transportistas como quieras.
Un saludo!
Buenas tengo una duda como puedo gestionar distintos productos de distintos proveedores en woocommerce en el envió ya que que son productos de distintos con lo cual se realizan dos envíos distintos. Quiero que le salga un precio de envió en el chekau pero que el vea que le llega por separado de distinta empresa de transporte.
Si me podéis ayudar, un saludo
Hola Antonio,
Para esa funcionalidad te recomiendo este plugin. Permite poner un precio distinto de envío para cada producto e indicar el transportista con las condiciones que deseas.
Un saludo
Hola. Gracias por el artículo.
1- ¿Se puede indicar peso volumétrico?
2- Si trabajas con gestores de envíos, ¿se puede configurar sin problema el plugin de ese gestor (que a su vez envía con distintos transportistas)?
3- Mis productos varían mucho respecto a dimensiones y peso de producto vs dimensiones y peso de envío. ¿Es fácil configurar estos cambios?
Gracias
Hola Tess,
Te resuelvo dudas por puntos:
1- El peso volumétrico se indica en loa prodcutos de WooCommerce pero en los envíos por defecto no viene.
2- Sí perfectamente
3- Echa un vistazo al siguiente plugin:
https://wordpress.org/plugins/volumetric-shipping/
Se puede hacer también por clases de envío, pero lo veo más lioso.
Espero que te sirva,
Un saludo!
Buenas os comento un poco mi situación. Tengo un dropshipping como modelo de negocio y me surge el siguiente problema. Tengo varios proveedores, que, a su vez cada una trabaja con diferentes empresas de transporte y claro está con diferentes rango de precios. Lo que me gustaría hacer es que cada categoría o producto muestre el precio de envio de cada uno de ellos. ¿hay alguna solucion?
Hola antonio es un poco amplia tu pregunta, creo que algunos de estos tres plugins te servirán:
https://www.thedotstore.com/woocommerce-category- envío-tarifa-fija-basada
https://wordpress.org/plugins/woo-extra-flat-rate/
https://wordpress.org/plugins/conditional-shipping-for-woocommerce/
Espero que te sirva alguno,
Un saludo!
Hola. Llevo más de dos días intentando que el precio del envío se sume al carrito y de ninguna forma lo he logrado, sólo me aparece el precio del producto. Ayuda por favor no he podido inaugurar mi página Web por este inconveniente.
Hola Kathrin,
¿Has seguido todos los pasos? Revisa el apartado de general de los ajustes de WooCommerce ya que ahí ajustas todo para saber a qué países envías
Un saludo!
Tengo una consulta, si solo quiero colocar ciertas zonas para algunos productos ¿ como puedo configurar ese producto a una zona?cy otros producto a otra zona
hola, quería preguntarte en este tema. como puedo hacer obligatorio el campo calculadora de envío por si algún despistado no lo ve. o si es posible. hacer visible esta calculadora en el producto y en checkout.?
de ante mano muchas gracias
Hola Andrés,
Desde opciones de envío, en cálculos, activar la calculadora de envíos en la página de compra.
Un saludo!
Hola Diego, tengo una consulta respecto al envío gratuito a partir de X euros.
Tengo puesto en la configuración que sea envío gratuito a partir de 50€ y cuando un pedido asciende a por lo menos este importe, en el desglose aparecen las dos opciones: Envío X€ y Envío gratuito, saliendo marcado el de X€ y pudiéndose marcar de envío gratuito, pero los clientes no se fijan, pagan los portes y después tengo que hacerles la devolución del importe de los portes.
¿No es posible que si el pedido es superior a 50€ aparezca por defecto ya el envío gratuito sin la opción de Envío X€?
Espero haberlo explicado claro. Muchas gracias por tu ayuda.
¡Un saludo!
Hola Cris,
Por lo que veo lo has hecho con las configuraciones de WooCommerce. Si quieres ocultar a partir de 50€ el envío de pago y que solo se pueda gratis añade este código a tu functions.php o en tu plugin code snippets:
function my_hide_shipping_when_free_is_available( $rates ) {
$free = array();
foreach ( $rates as $rate_id => $rate ) {
if ( 'free_shipping' === $rate->method_id ) {
$free[ $rate_id ] = $rate;
break;
}
}
return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );
Si no sabes como añadirlo aquí tienes un tutorial.
Un saludo!
También quiero que solo aparezca en ese caso el envío gratuito y agregué el código al function.php y no pasó nada. ¿hace falta algún paso adicional?
Hola Katherine,
¿Has borrado la caché? Igualmente hice un tutorial aparte ya que esto es algo que me piden mucho, puedes encontrarlo aquí.
Cualquier duda ya sabes,
Un saludo!
Hola de nuevo, muchisimas gracias Diego, voy a probar con el código que me dices.
Muy amable. Un saludo!
Hola Diego, el presente comentario es para agradecerte tus aportes, recien inicio a leer tu información y es de lo más valioso que he encontrado sobre woocommerce. Felicitaciones.
Por otro lado, quisiera preguntarte si existe la posibilidad de acortar los códigos postales de las regiones que no cubre el envío gratuito sin plug ins.
Hola Adam,
Gracias por tus palabras 🙂
En cuanto a tu pregunta se hace sin plugin con las configuraciones que vienen por defecto en WooCommerce. Debes crear dos zonas de envío, una de ellas con los códigos postales gratis y otra con el resto que no es gratis. Con esto dependiendo del CP cogerá una zona u otra.
Un saludo!
Tengo varias opciones de envíos por zona, pero al hacer el pago solo esta por defecto la primera opción, quisiera poder quitar eso y que el comprador decida la opción.
Hola Josue,
En este tutorial lo explico. Deberás añadir este código:
add_filter( 'woocommerce_shipping_chosen_method', '__return_false', 99);
Espero que te sea de ayuda.
Un saludo!
Hola que tal Diego
Muy interesante todo lo que pones.
Tengo una pregunta, como puedo poner el campo de Código Postal para que sea obligatorio al momento de calcular el envío.
Saludos
Hola Miguel,
Para que el envío se calcule por código postal y no por la provincia, debes configurar las zonas de envío por códigos postales y no por provincias. Así lo calculará a partir del código postal.
Espero que te sirva.
Un saludo!
Hola Diego,
Gracias por la calidad del contenido que compartes, es muy útil 🙂
Quería saber si me podrías resolver una dudilla que tengo: no tengo tienda física y no sé si es obligatorio poner dirección de mi negocio en la configuración de la tienda? Pasa algo si lo dejo en blanco?
Muchas gracias de antemano!
Saludos
Hola Carmen,
No es necesario ponerlo. Es un campo dinámico para utilizarlo cuando sea necesario, cómo habilitar un punto de venta físico u otros.
Un saludo!
Diego como estas?
Estoy teniendo un problema con la configuracion de envios.
cuando estoy terminando la compra no me deja elegir el tipo de envio, me aparecen las dos opciones pero no me deja elegir cual, se pone por defecto 1 y no se puede cambiar.
Hola Joaquin,
Tendría que revisar el resto de las configuraciones o choques con otros plugins. Intenta revisar todo el proceso que has hecho a ver si ves un fallo o algo que no encaje con lo que explico. Mira el vídeo de YouTube también que te puede dar una idea.
Un saludo!
Hola Diego, tengo una duda. En una tienda tengo 2 tipos de productos a la venta. ¿Es posible elegir que un producto de una categoría en concreto tenga unas opciones y precios de envío y los otros productos tengas otras opciones? Ej.
Productos regalo – envíos solo en una comunidad autónoma con sus precios
Productos generales – envíos a nivel nacional con sus precios
La dificultad que veo es que no se como configurar para que según la categoría de producto tenga unas opciones
Hola Alia,
En la parte final del video de Youtube explico el plugin Shipping Packages for WooCommerce. Con el podrás solucionar el tema de poner un precio diferente a cada categoría.
Un saludo!
Hola Diego, estoy en un dilema agregando un método de envío que Woocommerce no tiene la cuál es la contra-entrega (No son reembolsos) sino que el cliente paga por el envío del producto cuando llegue a la puerta de su casa. Que me podrías recomendar en este caso para que me aparezca aquel botón en el checkout.