Hello, In my shop I have products but also a few services (perfume creation workshops). These services should not have delivery charges. I created them as variable products so that I could display the workshop dates as attributes. I created an Envio Gratuito delivery class, which I assigned to these products. In the delivery zones, I have Free shipping for carts over €90 and Standard Delivery for the rest. In Standard Delivery, I’ve put 0 * [qty] for Envio Gratuito and selected Per class at the bottom. It does not work, I still see my shipping fee, what did I do wrong? Tx a lot for your help
The page I need help with: [log in to see the link]
Thanks for sharing the detailed setup — it’s clear you’ve put effort into organizing your shop’s shipping options, especially by using shipping classes and trying to control how they apply to your workshops. I can see why this situation is frustrating, especially when WooCommerce’s shipping logic doesn’t behave quite as expected.
The main issue here lies in how WooCommerce handles shipping classes when you use the “Per class: charge shipping for each shipping class individually” setting. When this is enabled, WooCommerce calculates the shipping cost for each shipping class in the cart — including ones that are set to €0 — and then adds them together. This means that even though your Envio Gratuito class is set to zero, if another product with a different shipping class is in the cart, WooCommerce still includes all relevant charges. This can result in unexpected fees showing up, particularly when products with different shipping needs are purchased together.
A much simpler and more reliable way to handle services like your perfume creation workshops is to treat them as virtual products. In WooCommerce, marking a product (or a variation) as “virtual” tells the system that the item doesn’t require shipping at all. This immediately removes all shipping charges associated with that product, regardless of what other shipping rules or classes exist in your setup. You can still use attributes to show the available workshop dates, and everything else about the product can remain the same — the only change is checking that small “Virtual” box in the variation settings.
This approach is not only cleaner, but it also avoids potential conflicts or confusion caused by mixing physical and non-physical products under the same shipping rules.
Tx a lot for your answer. I agree but I have an issue: I’ve selected Product Simple and ticked Virtual. True it removes the fees, but even if I’ve some attributes and if the box Visible on the product page is ticked, I dont see it on my product page… https://camposdeibiza.com/product/solid-perfume-workshop/
I understand you’re encountering an issue where the “Virtual” checkbox isn’t appearing when setting up a variable product in WooCommerce. This behavior is actually expected due to how WooCommerce handles variable products.
For variable products, the Virtual and Downloadable checkboxes aren’t set at the main (parent) product level. Instead, you’ll need to set them individually for each variation. Here’s how you can do that:
Head over to your Products list in the dashboard and open up the variable product you’re working with.
In the Product data section, click on the Variations tab.
Expand each variation by clicking edit button on the right.
You’ll then see the Virtual and Downloadable checkboxes there.