WooCommerce's shipping system confuses everyone the first time — zones inside methods inside classes, all deciding what a customer pays at checkout. It maps cleanly onto courier reality once the vocabulary clicks.
Zones = geography rules
A shipping zone is a set of regions (states, pincodes, countries) with shipping methods attached — 'Maharashtra: flat ₹50', 'Rest of India: flat ₹80', 'Northeast: ₹150'. The customer's address matches a zone, the zone's methods offer their prices.
Classes = product types
Shipping classes tag products — 'fragile' adds ₹30, 'heavy' uses a different table, 'letter' ships cheap. A cart's shipping price = zone-method price per class, summed. The combination handles most catalogues' mixed freight needs.
The rate-table problem
WooCommerce's built-in methods are flat tables — you're estimating freight by zone, and the estimate either eats margin or loses carts. The live-rate fix: a plugin that quotes the actual carrier per order at checkout — Pakka Parcel's WooCommerce plugin does exactly this, replacing guess-tables with real quotes.
The simple starting config
Zone 1 'Same city': free or ₹49 (you'll cover it with hyperlocal). Zone 2 'Rest of India': live rates via plugin or a fair flat rate. Zone 3 'Special' (NE/hills): honest surcharge. Three zones covers most sellers until the catalogue demands classes.
Pakka Parcel automates exactly this — the pipeline from order to AWB without the manual steps.
See how →The playbook
Create zones by your real lanes
Same city / regional / national / special.
Attach the right method per zone
Flat rates to start; live rates when the plugin's in.
Tag products with classes
Fragile/heavy get their rate treatment.
Install live quoting
Pakka Parcel's plugin replaces estimate-tables with real rates.
