Shopify shipping setup after WooCommerce migration (2026)
How to replicate your WooCommerce shipping configuration in Shopify — shipping zones, rates, weight-based rules, carrier-calculated shipping, and common migration mistakes.
Shipping configuration is one of the most operationally critical setups to get right before launching on Shopify. A misconfigured shipping rate means either charging customers too much (cart abandonment) or absorbing unexpected shipping costs yourself. WooCommerce and Shopify handle shipping differently enough that a direct port isn't possible — you need to rebuild your shipping logic from scratch.
WooCommerce vs Shopify shipping: key differences
| Feature | WooCommerce | Shopify |
|---|---|---|
| Shipping zones | Zones by country, state, or postcode | Zones by country or region (no postcode-level zones natively) |
| Flat rate rules | Multiple rates per zone, conditional logic via plugins | Multiple rates per zone, no built-in conditionals (app needed) |
| Free shipping threshold | Free shipping method with minimum order | Free shipping rate with minimum order amount or weight |
| Weight-based rates | Table rate shipping plugin (WooCommerce Table Rate Shipping) | Weight-based conditions on rate (min/max weight per rate) |
| Carrier-calculated rates (real-time) | WooCommerce Shipping or carrier plugin (UPS, FedEx, etc.) | Shopify Shipping (built-in USPS, UPS, DHL, etc.) or third-party app |
| Local delivery | WooCommerce Local Pickup or Delivery plugin | Built-in local delivery with radius/postcode-based rules |
| Shipping classes | Shipping classes for products with different shipping behavior | No direct equivalent — use conditions or separate profiles |
| Shipping profiles | N/A | Multiple shipping profiles (different rates for different product groups) |
What doesn't migrate automatically
Shipping configuration is never migrated by product migration tools. You must rebuild it entirely in Shopify. Your WooCommerce shipping setup serves as a reference — document it before migration:
- Export a screenshot or notes of your WooCommerce shipping zones and rates
- Note which products use shipping classes (heavy items, fragile items, free-ship items)
- Document your free shipping threshold(s)
- Note any carrier integrations (UPS, FedEx, USPS, Royal Mail, etc.)
Setting up shipping zones in Shopify
- Shopify Admin → Settings → Shipping and delivery
- Under "Shipping," click Manage rates
- You'll see your default "Shipping from" address and rate tables for domestic + international
Creating zones
- Click "Create shipping zone"
- Name the zone (e.g., "United States," "European Union," "United Kingdom")
- Add countries to the zone
- Add rates to the zone (flat rate, free, weight-based, or carrier-calculated)
Zone matching order: Shopify uses the most specific matching zone. If a customer is in the US, the "United States" zone takes precedence over a general "Rest of World" zone. Set up specific zones first, then add a "Rest of World" zone as a catch-all.
Flat rate shipping
For each zone, click "Add rate" → "Set up your own rates":
- Name: "Standard Shipping" / "Express Shipping" / etc.
- Price: flat rate in your store currency
- Conditions (optional): minimum/maximum order price or weight
Example — WooCommerce had "Flat rate $5.99, free over $50":
- Add rate: "Standard Shipping" — $5.99 — condition: maximum price $49.99
- Add rate: "Free Shipping" — $0 — condition: minimum price $50.00
Weight-based shipping
WooCommerce Table Rate Shipping (a popular plugin) allows complex weight-based rate tables. Shopify's native rate conditions support a simpler version:
- Each rate can have a minimum and maximum weight condition
- Create multiple rates for different weight tiers
Example weight-based setup:
- Under 1 kg: $3.99 (min 0g, max 999g)
- 1–3 kg: $6.99 (min 1000g, max 2999g)
- 3–10 kg: $9.99 (min 3000g, max 9999g)
- Over 10 kg: $14.99 (min 10000g, no max)
Important: For this to work, product weights must be set correctly during migration. k-sync transfers the weight field from WooCommerce products to Shopify variants. Verify weights are in Shopify's expected unit (grams, kilograms, pounds, or ounces — set in Settings → Store details → Standards and formats).
Carrier-calculated shipping
If you used real-time carrier rates in WooCommerce (UPS, FedEx, USPS, Royal Mail, etc.), Shopify has built-in carrier-calculated shipping:
Shopify Shipping (US, CA, UK, AU)
Shopify Shipping provides deeply discounted carrier rates for Shopify merchants in the US, Canada, UK, and Australia. It connects to USPS, UPS, DHL Express, Evri, and Australia Post automatically.
- Settings → Shipping → Manage rates → Add rate
- Choose "Use carrier or app to calculate rates"
- Select USPS, UPS, DHL, or other available carriers
- Configure services offered (Ground, Priority, Express, etc.)
Carrier-calculated rates are only available on Shopify plan and above (not Basic). On Basic, you can add a markup to flat rates as an approximation.
Third-party carrier apps
For carriers not in Shopify Shipping or for more complex logic (multi-carrier comparison, zone skipping):
- Shippo: Multi-carrier rate comparison, free plan available
- EasyPost: Developer-friendly, all major carriers
- ShipStation: Fulfillment management + carrier rates
- Easyship: International shipping with duties/taxes shown at checkout
Shopify shipping profiles
Shopify shipping profiles allow different shipping settings for different product groups — equivalent to WooCommerce shipping classes but more powerful:
- Create a profile for "Heavy items" (different rate structure for bulky products)
- Create a profile for "Digital products" (no shipping required)
- Create a profile for "Fragile items" (restricted shipping options)
To create a profile:
- Settings → Shipping → Manage rates → Create new profile
- Name the profile and add products to it
- Set rate structure for this profile (independent from your general shipping rates)
Products assigned to a profile use that profile's rates at checkout instead of the general shipping rates. Products not assigned to any custom profile use the default "General shipping rates."
WooCommerce shipping classes → Shopify equivalent
WooCommerce shipping classes allow products to modify flat rates (e.g., "heavy items add $5 to shipping"). Shopify doesn't have a direct equivalent. Workarounds:
- Shipping profiles: Assign heavy/special products to a separate profile with higher rates
- Shipping app: "Advanced Shipping Rules" or "Parcelify" apps allow product-based rate conditions (add $5 if a product tagged "heavy" is in cart)
- Manual markup: For simple "add a fixed amount" cases, create separate rate tiers that include the surcharge
Local pickup and local delivery
Shopify has built-in local pickup and local delivery (available on all plans):
Local pickup
- Settings → Shipping → Local pickup
- Enable for your store locations
- Set pickup instructions (when orders will be ready)
- Customers can select pickup at checkout instead of shipping
Local delivery
- Settings → Shipping → Local delivery
- Enable for each location
- Set delivery area by radius (miles/km from location) or by postcode list
- Set delivery fee
- Set minimum order value
Common shipping migration mistakes
- Forgetting the "Rest of World" zone: If you don't set up international zones, customers from uncovered countries see no shipping options at checkout — they can't complete purchase. Always add a Rest of World zone, even with a high flat rate.
- Wrong weight units: WooCommerce may use kg, Shopify may be set to lbs — verify and align. Check Settings → Store details → Standards and formats → Weight unit.
- Missing free shipping threshold: If your WooCommerce store had free shipping over a certain amount, don't forget to recreate this. Many stores discover it's missing only after customer complaints.
- Not testing carrier rates live: If using carrier-calculated shipping, test with real addresses to verify the rates match your WooCommerce rates (especially if customers are used to specific amounts).
- Forgetting digital products: Virtual/digital products should not have shipping options. In Shopify, products need "This is a physical product" unchecked — verify digital products don't show shipping at checkout.
Shipping configuration checklist
- Document your WooCommerce shipping zones and rates before migration
- Set your shipping origin address in Shopify (Settings → Shipping → Ship from)
- Create zones matching your WooCommerce zones
- Add flat rates to each zone (match WooCommerce rate names and prices)
- Set up free shipping threshold with correct minimum order amount
- Configure weight-based rates if applicable
- Set up carrier-calculated shipping if you had real-time rates in WooCommerce
- Create shipping profiles for products with special handling requirements
- Set up local pickup/delivery if applicable
- Verify product weights are correct on all products
- Mark digital products as non-physical (no shipping)
- Test checkout with addresses in each zone to verify correct rates appear
- Test free shipping threshold — verify rate changes at the correct amount
Shipping setup typically takes 1–2 hours for a standard single-country store. International stores with complex zone structures or carrier integrations should budget 3–4 hours including testing.
Migrate your store with k-sync
Connect your WooCommerce store, validate your products, and push to Shopify in minutes. Free for up to 50 products.
Get started freeRelated reading
Migrating a luggage and travel accessories store from WooCommerce to Shopify (2026)
How to migrate a luggage, travel bags, or travel accessories WooCommerce store to Shopify — luggage specifications, airline compliance, TSA lock, warranty and durability claims, and luggage retail Shopify setup.
Migrating a motorcycle accessories store from WooCommerce to Shopify (2026)
How to migrate a motorcycle accessories, biker gear, or motorbike parts WooCommerce store to Shopify — helmet safety standards, CE-rated protective clothing, type approval for parts, fitment compatibility, and motorcycle retail Shopify setup.