Set up delivery charges in WooCommerce so customers see the right price at checkout. You'll create shipping zones (where you deliver), add rates to each zone (flat rate, free delivery over a set amount, or collection), and use shipping classes to charge more for bulky items.
Before you start
- WooCommerce installed, with your store address and Shipping location(s) set under WooCommerce → Settings → General (see Set up your online shop).
- Your delivery prices worked out: what you charge for the UK mainland, any surcharge areas, and international delivery if you offer it.
- Weights entered on your products if your courier prices by weight (see Add and manage products).
How shipping zones work
A shipping zone is an area you deliver to, such as "UK mainland" or "Europe". Each zone has one or more shipping methods (the delivery options customers choose from). WooCommerce checks the customer's address against your zones from the top of the list down and uses the first one that matches. So put small, specific zones (such as Highlands and Islands postcodes) above bigger ones (such as the whole UK).
Any address that doesn't match a zone falls into Rest of the world at the bottom of the list. If it has no methods, those customers can't check out, which is a simple way to stop orders from places you don't deliver to.
Create a zone for UK delivery
- Open shipping settings. Go to WooCommerce → Settings → Shipping. You'll see the Shipping zones list.
- Add a zone. Click Add zone and give it a Zone name customers won't see but you'll recognise, such as
UK mainland. - Choose the region. In Zone regions, start typing and choose United Kingdom (UK).
- Add a delivery method. Click Add shipping method, choose Flat rate and continue. Set the Name customers see (for example
Standard delivery (2-3 working days)) and the Cost, such as3.95. Save. - Add free delivery (optional). Click Add shipping method again and choose Free shipping. Under Free shipping requires, choose A minimum order amount and enter it, for example
50. Save the method and the zone.
Charge extra for remote UK postcodes
Couriers often charge more for the Scottish Highlands and Islands, Northern Ireland, the Isle of Man, the Isles of Scilly and the Channel Islands.
- Add another zone called something like
UK surcharge areas, with region United Kingdom (UK). - Limit it to postcodes. Use the option to limit the zone to specific postcodes, and enter one per line. Use
*as a wildcard, for exampleBT*for all of Northern Ireland,HS*andZE*for the Western Isles and Shetland, or a single district such asKW15*. Check your courier's own list of surcharge postcodes. - Add a Flat rate with the higher cost.
- Drag this zone above your UK mainland zone in the list, so it's matched first, then save.
Set up local pickup (click and collect)
If your shop uses the modern checkout (the default on new WooCommerce shops), go to WooCommerce → Settings → Shipping → Local pickup. Tick Enable local pickup, set a title and an optional cost, then click Add pickup location and enter the location's name, address and collection details (such as opening hours). Customers can then choose between delivery and collection without typing a delivery address.
On older shops using the classic checkout, add Local pickup as a shipping method inside a zone instead.
Want customers to pay when they collect? Enable Cash on delivery for the local pickup method (see Take payments in WooCommerce).
Charge more for bulky items with shipping classes
- Create a class. Go to WooCommerce → Settings → Shipping → Classes, click Add shipping class, give it a name such as
Large itemsand create it. - Assign it to products. Edit each bulky product and, on the Shipping tab of Product data, choose the class. To do lots at once, use Bulk actions → Edit in the products list.
- Set the extra cost. Open each zone's Flat rate method. You'll now see a cost field for each shipping class. Enter the extra charge for
Large items, and choose a Calculation type: Per class adds the charge for every class in the basket; Per order charges only the most expensive class.
Flat rate cost formulas
The Cost field of a flat rate can be a simple amount or a formula:
| You want | Enter in Cost |
|---|---|
| £3.95 per order | 3.95 |
| £3.95 plus £1 per item | 3.95 + ( 1 * [qty] ) |
| 10% of the order value | [fee percent="10"] |
| 10% of the order value, at least £4 | [fee percent="10" min_fee="4"] |
For pricing by weight or by courier service, use a table-rate shipping extension or your courier's WooCommerce integration. Many UK couriers offer one; check your courier's website.
Other shipping options
Under WooCommerce → Settings → Shipping → Shipping settings (called Shipping options on some versions) you can show a delivery cost calculator on the basket page, hide delivery costs until an address is entered, and choose whether orders ship to the billing or delivery address by default.
Troubleshooting
"No shipping options were found" at checkout
The customer's address doesn't match a zone that has methods. Check the zone regions and postcodes, and that each zone has at least one enabled method. Also check the country is included in Shipping location(s) under Settings → General.
Customers are charged the wrong rate
Zones are matched top to bottom. Drag more specific zones (postcode-based) above general ones (whole country) and save.
Free delivery doesn't appear when it should
Check the minimum order amount, and whether it's calculated before or after coupon discounts (the Apply minimum order rule before coupon discount option). If prices include VAT, the minimum is checked against the order total including VAT.
Shipping costs don't change after editing them
Remove the item from your basket and add it again, or use a private browser window. WooCommerce remembers shipping costs for an existing basket.
Last reviewed: October 2026