Guides · June 10, 2023
How to Set Up Shipping on Shopify
Setting up shipping on Shopify means configuring shipping zones, rates, and packaging in Settings, then making sure your theme displays estimates and options clearly enough that shipping cost never becomes a checkout surprise. Here is the full setup walkthrough, step by step.
By Polo Themes
Shopify shipping setup happens in Settings > Shipping and delivery, where you build shipping zones (which countries or regions you ship to), attach rates to each zone (flat rate, weight-based, price-based, or carrier-calculated), and configure package defaults so rates calculate correctly. Get the zones and rates right first, then make sure your storefront actually communicates them — a shipping cost that only appears at the last step of checkout is one of the most common reasons carts get abandoned.
Most merchants treat shipping as an afterthought they will "figure out once orders start coming in." That is backwards. Shipping is the last thing a customer configures before they pay, which makes it the last opportunity to lose them. A confusing rate, an unexpected surcharge, or a vague delivery estimate at checkout can undo weeks of good marketing in a single click. This guide walks through the actual Shopify admin setup, the rate strategies worth considering, and how your theme's product and cart pages should present shipping information so customers never feel blindsided.
Before You Start: Decide Your Shipping Strategy
Before opening the Shopify admin, decide on paper how you want to charge for shipping. The three common approaches are: free shipping (usually built into your product margin), flat-rate shipping (a fixed fee regardless of order size, sometimes with a free-shipping threshold), and calculated shipping (rates pulled live from a carrier based on weight, dimensions, and destination). Each has trade-offs — free shipping converts best but only works if your margins support it, flat rate is simple and predictable for both you and the customer, and carrier-calculated rates are the most accurate but can look intimidatingly variable to shoppers comparing products. Pick a default strategy before you start building zones, because it determines which rate type you will configure.
Step 1: Set Up Your Shipping Zones
In the Shopify admin, go to Settings > Shipping and delivery, then find the Shipping section. A shipping zone is a group of countries or regions that share the same set of rates. Shopify creates a default "Domestic" zone based on your store's address, but you should review and adjust it rather than assume it matches your actual fulfillment reach.
- Click Create zone and give it a clear name (for example "United States" or "EU").
- Add the countries or regions that belong to that zone. You can add specific states, provinces, or postal code ranges if you need finer control than country-level.
- Repeat for every distinct region you ship to — most stores end up with a domestic zone, one or two regional zones, and sometimes a "Rest of World" zone with more conservative rates.
- If there are places you genuinely cannot fulfill to (remote territories, certain international destinations), simply leave them out of every zone rather than adding a zone with no rates — Shopify will show those customers as unable to check out, which is the correct behavior.
Step 2: Add Rates to Each Zone
Inside each zone, click Add rate and choose the rate type. This is where your strategy from step one turns into actual numbers.
Flat rate
A single price per order or per item, regardless of weight or destination within the zone. This is the simplest option and the easiest for customers to understand — there is no ambiguity about what they will pay before they see the total. Many stores pair a flat rate with a minimum order amount for free shipping, which Shopify supports natively as a condition on the rate.
Weight-based or price-based rates
You can define rate bands — for example, "$0–$50 in weight: $5 shipping" and "$50–$100: $8 shipping" — so heavier or larger orders cost more to ship without you having to calculate it manually per order. This suits stores with real weight variance across the catalog (a grocery or electronics store selling both small accessories and bulky items benefits far more from this than a store with uniform product weight).
Carrier-calculated shipping
On eligible Shopify plans, you can connect to carrier accounts (USPS, UPS, DHL, and others depending on region) so rates are pulled live at checkout based on actual package weight and destination. This is the most accurate option but requires you to have entered correct package weights and dimensions on every product — inaccurate product weight data will produce inaccurate live rates, so this option rewards clean product data more than the others.
Step 3: Configure Package Defaults
Under Settings > Shipping and delivery > Packages, set a default package size and weight. This matters most if you use weight-based or carrier-calculated rates, since Shopify uses these defaults (or per-product overrides) to calculate cost. Go into your product pages and confirm weight is filled in accurately for anything shipped individually — an empty or zero weight field is a common cause of shipping rates calculating as free or absurdly cheap by accident.
Step 4: Set Delivery Estimates
Shopify lets you attach an estimated delivery time to each rate (for example, "5-7 business days"). Fill this in for every rate you create. Customers weigh delivery speed alongside price when choosing a shipping option, and a rate with no estimate reads as untrustworthy compared to one that tells them exactly what to expect.
Step 5: Test Checkout From a Customer's Perspective
Before you consider shipping "done," place a real test order (or use Shopify's checkout preview) from each major zone you configured. Confirm the correct rates appear, the delivery estimates show up, and nothing displays as $0.00 or fails to calculate. This is also the point to check that international customers outside your configured zones are correctly blocked at checkout rather than allowed through with no valid shipping option — a broken zone configuration commonly shows up as a stuck checkout page with no shipping method to select.
Where Your Theme Comes In
Backend configuration is half the job — the other half is how clearly your theme surfaces shipping information before checkout. A well-built theme shows an estimated shipping cost or a free-shipping progress indicator on the cart page, states delivery estimates near the buy box rather than only after payment details are entered, and keeps the cart summary legible so added shipping costs don't feel like they appeared from nowhere. This is exactly the kind of storefront detail we build into our Shopify themes — clean cart and buy-box layouts with room for shipping and trust messaging without needing custom app blocks. If you're setting up a general merchandise or grocery store in particular, our Groxery Shopify theme is built with cart and delivery-estimate messaging suited to higher order-frequency stores where shipping cost visibility matters even more.
If you're choosing a theme at the same time you're setting up shipping, it's worth browsing the full Shopify theme catalog with cart-page clarity specifically in mind — not every theme treats the cart as a first-class page, and a cramped or cluttered cart summary is a common, avoidable source of checkout drop-off.
Common Shipping Setup Mistakes to Avoid
- Leaving product weight blank. This quietly breaks weight-based and carrier-calculated rates without throwing an obvious error.
- Only having a domestic zone. International visitors will reach checkout, find no valid shipping option, and abandon — with no clear message explaining why.
- No free-shipping threshold messaging. If you offer free shipping over a certain amount, say so on the product and cart pages, not just at checkout — it is a proven incentive to add one more item, but only if the customer knows about it before they check out.
- Rates with no delivery estimate. A price with no timeframe reads as less trustworthy, especially for first-time customers who don't yet know your fulfillment speed.
- Never testing checkout after changes. Shipping settings interact with taxes, discounts, and zones in ways that are easy to break silently — always place a test order after any shipping change.
Frequently Asked Questions
Do I need a Shopify app to set up shipping?
No — flat-rate, weight-based, and price-based shipping are all configured natively in Settings > Shipping and delivery with no app required. Apps become useful for more advanced needs like real-time rate shopping across multiple carriers, printing labels in bulk, or complex fulfillment-center routing, but a standard store can fully configure shipping without one.
What is the easiest shipping setup for a new store?
A single flat rate per zone, with a free-shipping threshold if your margins allow it, is the simplest setup to configure and the easiest for customers to understand. It is a reasonable default until you have enough order data to know whether weight-based or carrier-calculated rates would serve your catalog better.
Why is my shipping rate showing as free or incorrect at checkout?
This is almost always caused by missing product weight (for weight-based or carrier-calculated rates), a zone with no rate attached, or a rate condition (like a minimum order amount) being met unintentionally. Check the product's weight field and the specific zone's rate configuration first.
Should shipping cost be shown before checkout?
Yes, wherever possible. Showing an estimated shipping cost or a free-shipping progress bar on the cart page — rather than revealing the number for the first time at the final checkout step — is one of the more reliable ways to reduce checkout abandonment, since customers can factor it in before they've invested time filling out payment details.