International shipping on Shopify
Rates are the easy half. Duties, customs paperwork and honest delivery windows are what decide whether cross-border orders stick.
7 min read · Store setup ·
Selling internationally is mostly a shipping problem. The storefront side — currencies, languages, prices — is Markets configuration. Getting the parcel there, at a price both of you accept, with the right paperwork, is where cross-border selling actually succeeds or fails.
Zones by cost, not by geography
Group countries that share a cost profile, not a continent. Domestic, near-neighbour, wider region, rest of world is a common shape, but let your carrier's pricing decide the boundaries rather than a map.
A country whose shipping cost is genuinely different gets its own zone rather than being averaged into a group — averaging means you lose money on the expensive ones and overcharge on the cheap ones.
Rates
Flat rates by zone are simplest and easiest for customers to understand. Fine when your products are similar in size and weight.
Weight-based rates track your real cost, and require product weights to be correct. On an imported catalogue they usually aren't — audit them before switching this on.
Carrier-calculated rates are the most accurate and the most fragile: they depend on correct weights and dimensions, they add a network call to checkout, and you must configure a fallback rate. When the carrier's API is unavailable and there's no fallback, customers see no shipping options at all, which reads as a broken store.
More in shipping setup.
Duties and import taxes
The decision that most affects international conversion.
Collect at checkout (DDP). The customer pays everything up front and the parcel arrives with nothing owing. Higher cart total, dramatically better experience, far fewer refused deliveries.
Don't collect (DAP). Lower checkout total, and the customer gets a bill from the courier before delivery. This produces refused parcels, chargebacks and bad reviews — and the customer blames you, not the carrier.
For consumer sales, collecting at checkout is almost always right despite the higher displayed total. The surprise bill costs more than the conversion difference.
Shopify supports collecting duties at checkout per market. Whether you're obliged to register for anything in a destination market is a question for your accountant, not a setting.
Customs documentation
Every international parcel needs a commercial invoice and customs data. Two fields decide whether it clears smoothly:
- HS codes per product. Wrong or missing codes cause delays and incorrect duty assessments. Store them as a metafield if your fulfilment system needs them from Shopify.
- Country of origin per product.
Get these into your product data once and every shipment benefits. Leave them out and someone fills them in by hand, badly, per order.
If a 3PL or fulfilment provider ships for you, they need both fields in the order data — worth confirming during the integration rather than after the first customs hold.
Delivery expectations
The most common cause of international support tickets is a delivery window nobody stated.
- Say the real range on the product page for each market, not just at checkout.
- Include customs clearance in the estimate. "5–7 days" that becomes three weeks in customs is a promise you broke.
- Offer a tracked option and make it the default for anything valuable. Untracked international parcels generate disputes you cannot win.
Restricted products and markets
Some products can't be shipped to some countries — batteries, liquids, cosmetics, food, anything regulated. Handle it deliberately:
- Exclude those products from the market's catalogue in Markets, so they never appear.
- Or use shipping profiles so they can't be shipped there.
- Or a cart validation function blocking the combination at checkout — Shopify Functions.
The wrong answer is letting the order through and cancelling it afterwards.
Returns
Decide before launch and state it plainly: does the customer return internationally at their own cost, do you provide a label, or do you use a local returns address? International return postage frequently exceeds the item's value, which is why some merchants refund without requiring the return.
Whatever you decide, put it in the policy in plain words.
What to test per market
- A cart to each zone, at low and high value.
- The free-shipping threshold, if it applies internationally — a common and expensive misconfiguration.
- Duties displayed as intended.
- Carrier rates, and the fallback when the carrier is unavailable.
- A restricted product to a restricted country.
- The address form matching the local format.
Rates take an afternoon. Duties, HS codes and an honest delivery window are what decide whether international orders become repeat customers or refunds.
Is this the problem you’re looking at?
Send me the link to your store and a line about what is going wrong. You get a straight answer within one business day — no pitch, no obligation.
[email protected]Or see what I do around Shopify: services, work beyond the theme, selected work.