WooCommerce Table Rate Shipping: The Complete Setup Guide
Why Flat Rate Shipping Is Costing You Money
Flat rate shipping is the default choice for most WooCommerce stores because it's simple. Set it to $7.95 and forget about it. But simplicity has a cost: you're subsidizing heavy shipments with margin from lightweight ones, and you're overcharging customers who order small items.
Consider a store that sells both phone cases ($3 to ship) and cast iron skillets ($15 to ship). At a $7.95 flat rate, you're losing $7 on every skillet and making $5 extra on every phone case. If your product mix isn't perfectly balanced, one side of that equation is eating your profit.
Table rate shipping solves this by letting you create rules: shipping cost varies based on weight, cart total, item count, destination, or any combination. The customer sees a shipping cost that reflects what it actually costs to ship their specific order. You protect your margins. They get fair pricing.
Table Rate Shipping Plugins for WooCommerce
WooCommerce Table Rate Shipping (Official Extension — $119/year)
The official extension from WooCommerce is the most reliable option, if not the cheapest. It integrates directly with WooCommerce shipping zones (which we'll cover below) and supports rules based on weight, item count, cart total, and shipping class. The interface is straightforward — you add rows to a table, each row defining a condition and the corresponding shipping cost.
Table Rate Shipping for WooCommerce by JEM Plugins (Free)
The best free alternative. It supports weight-based, price-based, and item-count-based rates within WooCommerce shipping zones. The interface is slightly less polished than the official extension, but functionally it covers 90% of what most stores need. If your shipping rules are based on weight and destination, this plugin is sufficient and costs nothing.
Flexible Shipping by Jetsteer (Free — $89/year)
Flexible Shipping offers a generous free tier that includes weight-based and price-based rules, plus a premium version that adds conditional logic, shipping class support, and cost calculation methods (per order vs per item). It's the most popular table rate shipping plugin in the WordPress repository by active installations.
Setting Up Weight-Based Shipping Rates
Weight-based shipping is the most common table rate configuration. Here's a step-by-step setup using the official WooCommerce Table Rate Shipping extension:
Step 1: Enter Product Weights
Before your table rates can work, every product needs a weight. Go to Products → All Products and edit each product. Under the Shipping tab, enter the weight in your configured unit (kg or lbs). For variable products, enter weights for each variation.
This is the most tedious part of the setup, but it's essential. If you have hundreds of products, use a bulk editing plugin like WP All Import or the built-in WooCommerce CSV import/export to add weights in batch.
Step 2: Create a Shipping Zone
Navigate to WooCommerce → Settings → Shipping → Shipping zones. Click "Add shipping zone." Name it (e.g., "Domestic" or "United States") and add the appropriate regions. This tells WooCommerce which customers see these rates.
Step 3: Add Table Rate Method
Inside the shipping zone, click "Add shipping method" and select "Table Rate." Click the method name to open configuration.
Step 4: Define Your Rate Table
This is where the magic happens. You'll create rows that define shipping costs based on weight ranges. Example for a domestic zone:
Weight-Based Rate Table Example:
- 0 - 1 kg → $5.95
- 1.01 - 3 kg → $8.95
- 3.01 - 5 kg → $12.95
- 5.01 - 10 kg → $18.95
- 10.01 - 20 kg → $29.95
- 20.01+ kg → $49.95
Step 5: Test Thoroughly
Add products of various weights to a test cart and verify the correct shipping rate appears. Check edge cases: exactly 1 kg, exactly 3 kg, a cart with multiple items totaling different weight tiers. Shipping calculation errors are one of the top reasons for cart abandonment — get this right before going live.
Setting Up Price-Based Shipping Rates
Price-based table rates charge shipping based on the cart total rather than weight. This is useful for stores where product weight doesn't vary much, or where you want to incentivize larger orders with lower per-unit shipping costs.
Price-Based Rate Table Example:
- $0 - $24.99 → $6.95
- $25 - $49.99 → $5.95
- $50 - $99.99 → $4.95
- $100 - $149.99 → $2.95
- $150+ → Free
This structure naturally encourages customers to add more to their cart to reach the next shipping tier. The $150+ free shipping threshold is a powerful average order value (AOV) driver — see our free shipping threshold guide for the math on setting the right number.
Combining Weight and Destination
The most accurate table rate setup combines weight-based rates with destination-specific zones. This reflects how carriers actually price shipping: cost varies by both weight and distance.
To set this up, create separate shipping zones for different regions (e.g., "Local" for your state/province, "Domestic" for the rest of the country, "International" for overseas) and configure different rate tables in each zone. Your local zone might charge $3-$10, domestic $5-$20, and international $15-$50+ for the same weight ranges.
Using Shipping Classes for Product-Specific Rules
Shipping classes let you group products that need special shipping treatment. Common examples:
- "Bulky" class: Furniture, large electronics — higher base shipping cost
- "Fragile" class: Glassware, ceramics — surcharge for packing materials
- "Digital" class: Downloads, virtual products — no shipping cost
- "Hazmat" class: Batteries, chemicals — special carrier requirements
Create shipping classes at WooCommerce → Settings → Shipping → Shipping classes. Then assign products to classes in the product editor under the Shipping tab. In your table rate configuration, you can set different rates or surcharges per shipping class.
Common Table Rate Mistakes
1. Forgetting product weights. If any product in the cart has no weight set, the shipping calculation breaks or defaults incorrectly. Use a report plugin or SQL query to find products without weights.
2. Gaps in rate tables. If your table goes 0-5 kg and 10-20 kg, orders between 5-10 kg will have no available rate — meaning the customer can't check out. Always ensure your ranges are continuous with no gaps.
3. Not testing edge cases. Test carts at exactly the boundary of each tier (e.g., exactly 5 kg when your tier changes at 5.01 kg). Off-by-one errors in rate tables are extremely common.
4. Ignoring packaging weight. A 2 kg product in a box with padding might actually weigh 2.5 kg. Account for packaging weight in your rate calculations — either add a flat packaging surcharge per order or increase your product weights by a standard percentage (typically 10-20%).
5. Not reviewing rates quarterly. Carriers raise prices at least once a year (usually in January). If your table rates don't keep pace, your margins erode silently. Set a calendar reminder to review and update rates every quarter.
Table Rates and Tax
In many jurisdictions, shipping charges are taxable. WooCommerce handles this automatically if you configure it correctly: go to WooCommerce → Settings → Tax and check the box that applies tax to shipping costs. Your table rates will have tax calculated on top, just like product prices.
If you display prices including tax (common in the EU and Australia), make sure your table rates also reflect inclusive pricing. Otherwise, customers will see a higher-than-expected total at checkout when shipping tax is added.
Table rate shipping is the foundation of an accurate, margin-protecting shipping strategy. For a comparison of when to use table rates versus simple flat rates, see our flat rate vs table rate shipping comparison.
Keep reading
Related guides you might find useful
WooCommerce Free Shipping Threshold: How to Set the Right Minimum Order
Free shipping increases AOV — but set the threshold wrong and it kills your margins. Here's the math for finding your store's sweet spot.
Read guideShippingWooCommerce Shipping Zones Explained: Setup, Strategy, and Common Mistakes
Shipping zones are WooCommerce's most misunderstood feature. Here's how they actually work, how to set them up properly, and the mistakes that cost you sales.
Read guideShippingFlat Rate vs Table Rate Shipping in WooCommerce: Which One Should You Use?
Flat rate is simple. Table rate is accurate. Here's when to use each, how to set them up, and the hybrid approach most successful stores use.
Read guideLevel up your WooCommerce store
Join the WPBundle waitlist and get beta access to our plugin suite completely free.
Join the Waitlist