All segments

How to Set Up Shipping on Shopify, in the Right Order

How to set up shipping on Shopify in order: locations, weights, profiles, zones, rates, labels and a checkout test, plus the step teams get wrong.

  • Published
  • Reading time 13 min read
  • Author Nafiul Hasan
How to Set Up Shipping on Shopify, in the Right Order. Diagram: work crossing a boundary. RUN How to Set Up Shipping on Shopify,in the Right Order YOURSTHEIRS pointerflow.com

Short answer

How to set up shipping on Shopify: add your locations, enter a weight on every variant, group products into shipping profiles, define zones per profile, set rates, connect labels, then place test orders. Weights and profile assignment come first because every rate depends on them. Most teams start with rates and discover the errors from customers.

If you are working out how to set up shipping on Shopify, the order matters more than any single setting. Add locations first, then product weights, then shipping profiles, then zones, then rates, then labels, then test. Most stores do it backwards: they open the rates screen, type a number, and find out what’s wrong when a customer complains or a label costs more than the customer paid.

This piece is for operators running a store at $3M or more in revenue on Shopify Plus or a paid subscription platform, where a shipping error is repeated thousands of times a month. If you’re still deciding whether to launch, this is not written for you, and the Shopify shipping rates article is a lighter place to start.

The proprietary claim here is narrow. Every ranking page lists the same screens. What they skip is the dependency order, and the one step that quietly corrupts everything after it: product weights and profile assignment.

How to set up shipping on Shopify: what are the steps?

You set up shipping on Shopify in seven steps: locations, variant weights, profiles, zones, rates, packages and labels, then a test. Each step depends on the one before it. The table shows what each step needs as input, where you do it in the admin, and what breaks when it’s wrong.

StepWhereNeeds firstWhat breaks if wrong
1. LocationsSettings, LocationsNothingOrders route to the wrong warehouse, or none
2. Variant weightsEach product variantNothingWeight-based and carrier rates misquote or vanish
3. ProfilesSettings, Shipping and deliverySteps 1 and 2Wrong product charged the wrong rate
4. ZonesInside each profileStep 3No options at checkout for a region
5. RatesInside each zoneSteps 2 to 4Margin leaks or customers abandon
6. Packages and labelsShipping and deliverySteps 1 and 2Label cost diverges from checkout price
7. TestLive checkoutEvery earlier stepYou find out from customers

Take one thing from the table: steps 1 and 2 need nothing, and everything else needs them. That is why they come first even though the rates screen is the one everybody wants to open.

Add your locations and origin addresses

Open Settings, then Locations, and confirm every place that ships an order: warehouse, 3PL, retail store, a founder’s garage that still holds sample stock. Each needs a correct street address, because the origin address feeds carrier-calculated quotes and label purchasing. Then check that fulfilment is switched on for the location. A location with fulfilment off never receives orders.

Two mistakes recur. The first is an old address left in place after a move, which makes calculated rates quote from the wrong postcode. The second is a location that exists only for stock tracking and gets fulfilment switched on by accident. Orders then route to a place with no one packing.

If you use a 3PL, that location’s address is the origin, not your head office. The Shopify 3PL integration article covers how a warehouse connects and who owns the location record.

Enter a weight on every variant

Weight is set on each variant, not on the product, so a product with twelve sizes has twelve weight fields. Enter the packed weight where you can, meaning the product plus its own packaging, and pick the unit deliberately. Mixed units across a catalogue are one of the quiet ways a rate goes wrong, because a value of 2 means very different things in kilograms and pounds.

Do this before you touch a rate. Weight-based rates need it. Carrier-calculated rates need it. Labels use it to pre-fill the parcel. If it’s empty, the platform has nothing sensible to compute from, and what happens next depends on the rate type and your plan, so read Shopify’s documentation for your account rather than guessing.

What is the step most teams get wrong when they set up shipping on Shopify?

The step most teams get wrong is product weight and profile assignment, done before rates and never audited afterwards. Rates are visible, so people fix them. Weights and profile membership are buried in product records, so an error can sit there for months, producing rates that look plausible and are wrong.

Here is how it fails in practice. A team imports 900 products from a spreadsheet. The weight column had grams for one supplier and ounces for another, and the import treated both as the same unit. Nothing errors. Nothing looks odd in the admin. Then a weight-based rate charges a 200 g accessory as though it were a 2 kg item, and a heavy item ships at the light rate. Margin leaks quietly on one side and conversion drops on the other.

Profile assignment fails in a related way. New products land in the General profile by default. A heavy product added later, say a furniture range or a case of liquid, gets the standard rate and nobody notices until finance compares shipping revenue with carrier invoices.

An honest assessment: a spreadsheet audit beats another look at the admin. Export products, filter for blank or zero weights, sort by weight within each product type, and eyeball outliers. It takes an afternoon. The stores that skip it run on rates they’ve never verified.

How do shipping profiles work on Shopify?

A shipping profile is a group of products with its own origin locations, zones and rates. The General profile holds everything by default, and custom profiles hold products that need different treatment. Checkout builds the shipping options for a basket by combining the profiles its items belong to.

Group products into shipping profiles

Keep the General profile for the ordinary case and add a custom profile only when a group of products needs a genuinely different rate, a different origin, or a different set of countries. Typical candidates are oversized items, fragile goods, products fulfilled from a separate supplier, and items you can’t ship overseas.

Keep the count low. Every profile multiplies the settings you must maintain, and a basket that touches three profiles produces a combined rate that’s harder to predict. A store with five well-defined profiles is easier to run than one with twenty, each created to fix a single complaint.

Assign products deliberately. Bulk-select by product type or collection, rather than dragging one at a time, and write down the rule you used. When the next hire adds a product, they need to know which profile it belongs in and why. The deeper rule engine, including conditions that native profiles cannot express, is covered in advanced shipping rules on Shopify.

Define shipping zones for each profile

A zone is a set of countries or regions that share rates. Add the ones you actually fulfil to, and be strict. Listing a country you can’t deliver to sounds harmless, but it lets a customer pay for an order you then have to cancel.

Zones sit inside a profile, so a custom profile needs its own zones. This trips people up when they create a freight profile and forget that it has no zone for the customer’s region. Checkout then offers no method for that basket at all. If you sell internationally, the tax and duty side is a separate problem, and Shopify international shipping deals with it.

Which shipping rate type should you use?

Pick the simplest rate type that reflects what a parcel costs you. Flat rates suit uniform products. Weight-based and price-based rates suit mixed catalogues with reasonable data. Carrier-calculated rates suit varied products and destinations, and they demand the best data. The comparison sets out what each needs and where it fails.

Rate typeBest whenNeedsFails when
FlatParcels are similar in size and weightNothing beyond a decisionA heavy item ships at the light price
Weight-basedCost tracks weight closelyAccurate variant weightsWeights are blank or in mixed units
Price-basedShipping is a lever on basket sizeA margin modelLow-price, heavy items go out at a loss
Carrier-calculatedDestinations and parcels vary widelyWeights, sizes, origin address, plan supportData is thin, or the account lacks the feature
Free with a conditionYou’ve modelled the marginAverage landed cost per orderThe threshold sits below your break-even

Read the table for the last column: every rate type fails on a specific data problem, not on a design problem. Choose based on the data you have, not the data you plan to have.

Set rates for each zone

Inside each zone, add rates by type. Name them the way a customer would read them at checkout, such as “Standard” and “Express”, and avoid internal jargon. Where a carrier’s service level promises a delivery window, don’t repeat that promise in the rate name unless you’ll honour it.

Add a free shipping rate with a condition only after you understand cost. Work out the landed shipping cost per order over a recent period from your own carrier invoices (that’s a figure you must calculate, and it will differ per store, so it’s metric to confirm for your own account). Then place the threshold above the basket size where you’d break even, not at a round number that looks good.

A common second mistake is leaving a flat rate in place after a carrier changes its pricing. The rate that was fair last year quietly loses money. Put a review on the calendar. For discount mechanics beyond a threshold, see Shopify shipping discounts.

How do you set up packages and shipping labels on Shopify?

Add the box sizes you really use, with their empty weights, then choose how you buy labels. Shopify’s own label tools work in supported countries, and a shipping app or your 3PL’s system can take over. The label cost and the checkout price should be reconcilable for any given order, and the reconciliation is where you learn whether steps 1 to 5 were right.

Connect packages and labels

Under Shipping and delivery, define your standard packages: the carton, the padded mailer, the tube. Include the packaging weight, since a label is priced on the whole parcel. Use the sizes you keep on the packing bench, not the ideal ones. An operator who says “we mostly use the medium box” but has three sizes in the warehouse will get a rate quoted for one and a label bought for another.

Then decide where labels get bought. If it’s Shopify’s own tools, the order page pre-fills weight from your variant data, which is one more reason the earlier weight step matters. If it’s an app, confirm whether it writes tracking back to the order and triggers the shipping notification, because a label that never posts tracking becomes a customer service ticket. Label workflows have their own article: Shopify shipping labels. For a wider view of tools, see shipping software for ecommerce.

Also check what your 3PL does with orders. Some pull orders and buy their own labels, which means your native label settings never fire. That’s fine, provided the checkout price has been built from the same assumptions the 3PL will use.

How do you test your Shopify shipping setup before going live?

You test by placing real checkouts, up to the payment step, to at least one address per zone, with baskets designed to expose faults: one item, mixed profiles, one heavy item, one product with no weight. Then compare each rate with what a label for that parcel would cost.

Test with real orders before you go live

Build a small test matrix and write it down. One row per zone and basket type. Record the rate shown, the profile each item is in, and the cost from the label tool or carrier for that exact parcel. You aren’t looking for equality. Some gap is normal, because you may charge more or less than cost on purpose. You’re looking for gaps you can’t explain.

Three checks find most faults. First, an address on the far edge of each zone, since edge cases expose missing regions. Second, a basket that touches two profiles, since combined rates behave differently from single ones. Third, a basket with a product you know has a blank weight. If that product checks out without complaint, you’ve found a hole.

Run it again after any change to weights, profiles or carriers. Shipping breaks by drift, not by event, and a quarterly re-test costs an hour.

What does a shipping policy have to match?

Your published shipping policy has to match the settings, and it rarely does. If the policy says orders ship in a set window and the warehouse can’t meet it, the setting is right and the promise is wrong. Write the policy from the configured zones, methods and handling times, not from memory.

Customers read the policy when something goes wrong, and so do chargeback reviewers, so a mismatch turns a shipping delay into a dispute. Keep it short, specific and consistent with the checkout options. The Shopify shipping policy article gives the structure. Note that anything with legal effect, such as duties, restricted goods or consumer-law delivery obligations, belongs with your counsel, not with a template.

What breaks at volume when shipping is set up by hand?

Manual shipping settings break at volume because they depend on people remembering to update them. A new product goes into the wrong profile. A carrier changes pricing and nobody reruns the numbers. A warehouse is added and location priority isn’t revisited. Each is small, and each repeats on every order.

Picture a Monday: a merchandiser adds a new range of 40 heavy items and forgets to move them out of General. By Friday the store has shipped a week of orders at the light-parcel rate, and the loss appears only when the carrier invoice arrives. No single person did anything unreasonable. The process depended on someone remembering.

Automation earns its place here, and where it doesn’t. A scheduled check that flags any product with a blank weight, or any new product left in General when its type says otherwise, is cheap and reliable. Automation that quietly rewrites rates is not. Anything where a wrong change costs more than a human minute to review should ask for a person first.

Native Shopify handles a lot, but conditional logic by customer tag, delivery date, or order composition often needs Functions or an app. Before adding one, list the rule in a sentence. If you can’t write it in a sentence, the app won’t fix it.

Who is this setup not for?

This order of work is not for brands below the $3M floor who ship a handful of parcels a day, where a flat rate and a good box are enough. It is also not for stores whose 3PL sets rates and buys labels outside Shopify, where your job is to keep the checkout price aligned with their pricing, not to build Shopify’s rate tables from scratch.

This order of work also doesn’t cover customs, duties or tax registration, which vary by country and change. Those go to a customs broker or counsel.

Shipping setup is an operations automation problem

Getting shipping right once is a project. Keeping it right across new products, new carriers and new warehouses is an ongoing operations problem, because the data and the rules drift apart without anyone deciding they should. That’s the class of work we build under operations automation: audits for blank weights and misfiled profiles, reconciliation of checkout price against label cost, and alerts when they diverge, with a person approving any change to a live rate.

Sources

  • No external figures are quoted. This article is written from Shopify’s long-standing shipping model (locations, variant weights, profiles, zones, rates) and from operating practice. Plan-specific features, carrier availability and admin layout change, so confirm them in Shopify’s current documentation for your account.

Frequently asked

Do I need a paid app to ship on Shopify?

No. Shopify has built-in shipping settings for zones, profiles and rates, and its own label purchasing in supported countries. Apps become worth it when you need multiple carriers, rate shopping, rules by tag or customer group, or a warehouse that pulls orders itself. Start native, and add an app when a specific limit hurts.

Where are the shipping settings in the Shopify admin?

Open Settings, then Shipping and delivery. Profiles, zones and rates live there, along with local delivery and pickup. Locations sit in their own Settings page. Package sizes, label preferences and carrier accounts are also on the Shipping and delivery screen, though the exact layout changes as Shopify updates the admin.

Should I offer free shipping on Shopify?

Only after you know your average landed shipping cost per order and your margin at a given basket size. Free over a threshold is common because it lifts basket size, but it moves cost onto you. Model it on a spreadsheet of real labels first. Never copy a competitor's threshold.

What is the difference between flat rate and carrier-calculated rates?

A flat rate charges the same amount whatever the parcel does. Carrier-calculated rates ask a carrier for a live quote using weight, dimensions and destination. Carrier-calculated is more accurate but depends entirely on good product data. Availability depends on your plan and carrier, so check Shopify's documentation for your account.

Why does checkout show no shipping options for some customers?

Usually the customer's address falls outside every zone on the relevant profile, or a product sits in a profile with no rate for that zone. A missing weight can also stop weight-based rates matching. Test the exact address and basket, then read which profile each product belongs to.

Can I charge different shipping for different products?

Yes, with shipping profiles. Put heavy, fragile or oversized products in their own profile, with their own zones and rates. Checkout combines the profiles a basket touches. Rules beyond that, such as by customer tag or by delivery date, usually need Shopify Functions or an app.

How do I ship from more than one location?

Add each location in Settings and turn on fulfilment for it. Then attach locations to profiles so Shopify knows what each can ship. Location priority decides where an order is routed by default, and it needs a look whenever you add a warehouse or a 3PL.

Do shipping settings differ between Shopify and Shopify Plus?

The core profile, zone and rate model is the same. Plus adds extensibility, such as Shopify Functions for delivery customisation, and other capabilities that change over time. Check Shopify's current plan comparison for what your plan includes rather than assuming, especially for carrier-calculated rates.

How do I test Shopify shipping before launch?

Place real checkouts, without paying, to at least one address per zone, with baskets that mix profiles and heavy items. Note the rate shown, then compare with a label cost for the same parcel. A gap you can explain is fine. A gap you cannot is a data problem.

How often should I review my Shopify shipping setup?

Whenever a carrier changes rates, you add a product line, a warehouse or a market, and at least once a quarter. Compare the shipping revenue you collected with label spend. If the two drift apart, the cause is nearly always weights, profiles or an outdated flat rate.

Next step

Is this your ops automation problem, or a symptom of another one?

Bring your numbers — the churn split, the decline rate, whatever your flows are earning — and we will tell you which of them is the expensive one.

Book a call →