One of the most complex parts about writing e-commerce software is creating shipping options that are configurable enough that people can create the shipping costs they want but the functionality isn't too complex that people are confused. That's why with WooCommerce we include Flat Rate Shipping because it's perfect for people just getting started and isn't so complex that you can't launch your store.
If people want even more shipping options after having set up the rest of WooCommerce then it may be time to look at Table Rate Shipping. It is by far one of the most configurable extensions and it allows you create a table of shipping rates in hundreds of different combinations. You can create zones to target your shipping costs for a particular geographic region, you can group products by similar shipping sizes, you can use the product weight to determine costs, and you can create a table of rates where depending on where the order appears in the table determines the rate. Let's jump in.
One of the first things you'll notice about Table Rate Shipping is that you can create zones. Zones can contain zip codes, states, or countries. Each zone can have different shipping costs so you'll want to create a zone for each region that should have different costs. So if you offer in town delivery for $10, delivery in state for $20, delivery in the US for $30, and delivery anywhere in the world for $40 you'll want to create four different zones.
Multiple Shipping Methods
One of the cool things about Table Rate Shipping is that you can create any number of shipping methods per zone. If you're a flower delivery shop you may to have a “pickup in store” method which costs nothing, an “end of day delivery” which costs $10, and an “express delivery” which costs $30 but will deliver in the next hour. The beauty of the extension is that you can add as many shipping methods to your zones and each zone can have different methods.
Table Rate Shipping
Once you figure out the above you can create your table of rates. You can create any number of conditions and the first one that is matched will display on the front end. You could for example create a table that says for 1-10 items charge $10, for 11-20 items charge $20, and for 21-999 items charge $30. This is pretty basic functionality but once you combine it with shipping classes, shipping by weight, and how you calculate the charges it becomes pretty powerful.
Shipping classes allow you to group similar types of items to make your table of rates a bit easier. You could for example create a
large shipping class for all of your potted trees and create a
flower class for your flowers and then charge $5 per flower and $100 per tree quite easily. You could also create a class of
tiny for any accessories like a lawn gnome which you could easily ship with a tree and you don't need to charge the end user.
Shipping Costs by Weight
Something you can't do with flat rate shipping is ship by weight. When you're shipping very large items like potted trees or very dense material like lawn fertilizer or granular products like sand it can be incredibly useful to ship by weight.
Calculations However You Like
Flat Rate Shipping will lump the number of items together for calculations. This works pretty well for some situations but you may want to break it apart to have more granular costs. You may want to have a cost for the total weight of the flowers and add that to the cost for the total weight of the potted trees. You can do this by basing the cost on the order, per item, per line item, or per shipping class.
Table Rate Shipping is a complex little plugin but we make it that way so that you have ultimate control over your shipping options. Hopefully the video helped. If you need more help setting things up I recommend reading the official Table Rate Shipping documentation.
Happy (table rate) shipping!