Parcelify for Shopify: A Practical Setup Walkthrough
Why Parcelify And Not Another Shipping App
Parcelify is the UK Shopify shipping app I’ve used on every postcode-precision install I’ve shipped. The Shopify App Store has alternatives — Advanced Shipping Rules, Shipping Rates Calculator Plus — and they overlap in scope. I picked Parcelify for three reasons:
- The Backup & Restore JSONL format. No other shipping app in this space exports a clean, editable configuration file. For any setup with more than ten rates, I’d rather generate the config programmatically and restore it in one operation than click through a hundred admin screens.
- The breadth of restriction types. Postcode, weight, value, customer-tag, product, vendor — five orthogonal filters that combine cleanly. The alternatives tend to specialise in one or two and force workarounds for the others.
- The UK postcode coverage is mature. Highland & Islands, Isle of Wight, Northern Ireland edge cases — Parcelify handles them without me having to invent the wheel.
For straightforward “I need different rates for two regions” jobs, the alternatives can work. For postcode-precision and the messy real-world UK shipping cases, this is my pick.
When Parcelify Is The Right Tool
Native Shopify shipping handles four things well: country zones, region splits (England, Scotland, Wales, NI, BFP), weight bands per rate, and order-value conditions. For most stores that’s enough. I reach for Parcelify only when one of these breaks the wall:
- Postcode-prefix precision — UK Highland & Islands surcharges, Isle of Wight rates, single-postcode exclusions, anything where the destination needs cutting finer than Shopify’s regions
- Per-product rate logic — fragile-item surcharges, oversized items shipped by a different carrier
- Per-customer rate logic — VIP free shipping, B2B account rates
- Cart-value conditions tied to specific zones — free shipping over £X but only for mainland customers
- More granular weight tiering than native supports
Installation
Parcelify installs from the Shopify App Store like any other app. One detail worth knowing: it has to be installed by the store owner or staff, not by a Shopify Partner account. Sales Channel and shipping apps both bind to the installer’s identity, and an agency-installed Parcelify can produce strange permission issues later when the agency disconnects. I install via the merchant’s own admin or I get the merchant to install and add me as a collaborator afterwards.
The pricing tier depends on how many rates you’ll end up with. The starter plan covers small stores well; serious bracket configurations push you up to a paid tier.
The First Thing I Configure: Nothing
When Parcelify first installs, every warehouse location appears in the app as Disabled. That isn’t a bug. It’s the safety belt.
While Disabled, Parcelify accepts configuration but doesn’t return rates at checkout — your native Shopify rates carry on as they were. I treat the Disabled state as the working surface. Build everything inside it. Test it. Verify the rates I’d want at checkout. Only then, in one deliberate move, do I flip the location to Enabled and let Parcelify take over.
The discipline of “stay Disabled until complete” is the difference between an invisible install and one that costs the merchant money.
Zones — Where You Ship To
A Parcelify zone is a named bucket of countries (and, optionally, provinces within those countries). When a customer’s address resolves to a country/province inside the zone, Parcelify checks the zone’s rates for matching restrictions. Zones don’t carry postcode logic at the zone level — they carry country/province logic. Postcode precision happens at the rate level, not the zone.
For a UK store, I typically set up one or more of these zones:
- UK Mainland covering GB ENG/SCT/WLS — for the bulk of UK orders
- Northern Ireland covering GB NIR — separated because NI usually ships from a different warehouse or via a different carrier
- Ireland covering IE — Republic of Ireland, separate VAT regime, separate courier path
- Channel Islands / IoM covering JE, GG, IM — non-VAT territories
- International zones — Europe, USA, Rest of World, Worldwide POA
Each zone hangs off a fulfillment location. If your store has two warehouses, you’ll have two copies of each zone — one per location.
Each UK province (ENG, SCT, WLS, NIR, BFP) can only exist in one zone across the entire Parcelify account. If you’ve already configured one warehouse’s UK Mainland zone, the other warehouse can’t have a zone covering the same provinces. The validation rejects it on import.
This catches you out hardest during re-installs. An orphan zone left over from a previous setup attempt — even in a Disabled location you don’t ship from any more — still claims its provinces. New imports fail with Zone provinces[gb-eng] Province exists in another zone until the orphan is deleted.
Rates — The Building Blocks
A rate is the actual shipping option a customer sees at checkout — “DPD Next Day £8.99”, that sort of thing. Each rate sits inside a zone and carries:
- Name and description — what the customer sees at checkout. The description shows underneath the rate name; I use it for the carrier or service detail.
- Delivery time — minimum and maximum days. Shows as “1 to 2 business days” or similar.
- Disabled flag — lets me leave a rate configured but suppressed. Useful for seasonal options I switch on for the Christmas rush.
- Rate-level restrictions — weight, customer tags, product filters. These gate the entire rate.
- Pricing strategies — one or more, each with its own destination restriction, price logic and conditions.
The pricing strategies are where postcode logic lives. Worth understanding before I get into them.
Pricing Strategies — The Two Patterns I Use
Parcelify offers several pricing strategy types. In practice I use two:
flat-one_price — one rate, one price. The rate-level weight restriction defines the band the rate applies to. If your store has separate native Shopify rates per weight bracket, you mirror them as separate Parcelify rates, each with its own flat-one_price strategy. This is the pattern I use when I’m replacing an existing native Shopify rate card.
weight-tiered_prices — one rate, multiple price tiers stacked inside the strategy. Each tier carries its own start_value, end_value and price. The rate itself doesn’t need a weight restriction — the tiers cover the weight ranges. This is the pattern I use when I’m building fresh, because it collapses what would be ten separate rates into one cleaner rate with internal tiering.
Customer-facing behaviour at checkout is identical between the two. The merchant-facing admin is different — flat-one_price produces more rate rows; weight-tiered_prices produces fewer but more complex rates. Pick the one that matches the rest of your config.
Restrictions — The Five Filters
Each rate (or pricing strategy) can carry up to five restrictions:
-
Weight restriction (
shipment_weight_kg) — start and end values in kilograms. The rate only fires if the cart weight falls in this range. I use a tiny gap (0.001kg) between adjacent brackets to prevent overlap — so “0 to 15.001kg” and “15.002 to 25.001kg” not “0 to 15” and “15 to 25”. -
Postcode restriction (
postal_code_starts_with) — a comma-separated list of postcode prefixes. The rate fires if the customer’s full postcode starts with any of them. This is literal string matching. There is no specificity override. “AB” matches “AB10” and “AB31” alike, which causes the Highland surcharge leak I cover in detail in the Highland surcharge piece. -
Value restriction — applies to cart total, useful for free-shipping-over-threshold rules.
-
Customer restriction — by tag. Tag your trade accounts as “wholesale” and you can offer them rates ordinary customers never see.
-
Product restriction — by SKU, type, tag, collection or vendor. Useful for “this oversized product ships by pallet only” carve-outs.
The postcode restriction is the most powerful and the most easily misconfigured. The full diagnostic for how it interacts with native Shopify rates is in the Highland piece, but the headline is this: Parcelify rates and native Shopify rates coexist at checkout. If both exist for the same weight and region, the customer sees both options and picks the cheapest. Knowing this changes how you design the rest of the config.
The Delegation Line In Shopify Admin
Parcelify is a Shopify CarrierService app. To make Shopify actually call Parcelify at checkout, the Shopify shipping zone needs a specific kind of rate — one that says “use carrier or app to calculate rates” and points to Parcelify.
Inside Shopify Settings → Shipping and delivery → your delivery profile → your zone → Add shipping rate → “Use carrier or app to calculate rates” → select Parcelify. That entry is the delegation hook. Without it, Parcelify can be enabled and stuffed with rates and Shopify will still never ask it anything.
I check the delegation line is present before I leave a setup. A configured Parcelify location returns no rates if Shopify isn’t calling it, and that produces an install that looks fine in the app and silent at checkout. The kind of failure mode that doesn’t surface until a customer emails to ask why there’s no shipping option for them.
Testing Before Going Live
Two patterns I use:
Parcelify’s rate preview tool — inside the app, give it a postcode, weight and cart value, and it returns the rates it would deliver. Faster than running a real checkout. Useful for spot-checking edge cases (an AB31 cart at 30kg, an IV1 cart at 60kg, a Manchester cart at 200g).
The private-browser test cart — open an incognito window, add a real product, run through checkout to the shipping step (no need to actually pay), screenshot the rates shown. This is the only test that truly proves Parcelify is wired correctly — preview only shows what Parcelify would return, the cart test shows what Shopify actually displays at checkout.
I run three postcodes on every install:
| Postcode | What it tests |
|---|---|
| M1 1AA (Manchester) | Mainland baseline |
| IV1 1AA (Inverness) | Highland precision (if relevant) |
| AB31 1AA (Highland Aberdeenshire) | The overlap test for Route B enumeration |
If those three return the expected rates, the install is sound enough to flip Enabled.
The Enable Toggle
The atomic moment. Two clicks if you’re prepared, three if you’re not.
For a fresh install where nothing is live yet — straightforward. Configure everything Disabled, test via preview, flip Enabled, take a real checkout test.
For a store already running on native Shopify rates and switching to Parcelify — the order matters. The Enable flip is atomic with deleting the corresponding native rates from the Shopify zone. Both windows open. Delete the native rates. Flip Enabled in the second tab. Test the next minute.
Between the two clicks there’s a brief window where the zone has either zero rates or duplicate rates depending on the order. At 80 orders an hour that window matters; at 8 orders a day it doesn’t. Pick your moment accordingly.
Backup & Restore — The Underused Facility
Parcelify has a Backup & Restore feature that the click-through admin doesn’t really advertise. From any location, you can export the entire shipping configuration as a JSONL file — one JSON object per line, header plus zones plus rates with all their restrictions and pricing strategies inline. The format is a complete representation of the location’s shipping state.
I use it three ways:
Pre-cutover snapshot — before any significant change to a live store’s Parcelify config, I export. If the change goes sideways, the restore takes seconds.
Copying configurations between stores — if I’ve built a Highland-precision setup for one merchant and a second merchant wants the same, I can export, lightly edit the JSONL, and restore at the second store. The IDs reassign on import; the rate logic carries cleanly.
Building fresh by editing JSONL — for any setup with more than about ten rates, configuring through the click-through admin gets tedious. I’d rather generate the JSONL programmatically — there’s a small builder script I now keep for Highland-precision installs — and restore it in one operation. Forty rates appear in seconds. The afternoon I was bracing myself for vanishes.
The JSONL schema is referenced in the Highland surcharge piece under the technical detail section. Worth a read if you ever find yourself configuring more than a handful of rates.
Things I Watch For
A short list of small details that quietly break Parcelify installs:
- The Enable flip not actually happening. Configuration looks complete in the admin but the location is still Disabled. Rates exist but never fire. Common after a half-finished setup somebody walks away from.
- Native and Parcelify rates coexisting unintentionally. Both fire at checkout. Customer picks the cheaper. Surcharges never get captured. The fix is to delete the native rates for whichever zone Parcelify is meant to be handling.
- Postcode lists with unintentional prefix overlap. “AB” in the mainland list matches “AB31” — covered in detail in the Highland piece, but worth checking whenever you write a postcode restriction.
- Weight bracket gaps. “0 to 15” followed by “16 to 30” leaves the 15-16kg band uncovered. A cart that lands there sees no rate. Use overlapping or gap-free boundaries — “0 to 15.001” then “15.002 to 25.001” is the convention I follow.
- Pricing strategy mismatch. Configuring a
flat-one_pricestrategy when you actually needweight-tiered_pricesproduces a rate that fires only for one weight band. The cart at any other weight sees nothing.
None of these is exotic. Each one has cost me an hour I’d rather have spent on the work.
Related Reading
The original UK Shopify Shipping guide covers the broader rate-zone foundation, and the Highland surcharge piece covers the postcode-precision case in full detail.
Resources
Parcelify documentation: Parcelify Help Center — the official reference.
Shopify shipping profile docs: Shopify Help Center — for the native side of the architecture that Parcelify sits on top of.
Tony Cooper
Founder
Put My Crackerjack Digital Marketing Skills To Work On Your Next Website Design Project!
Get Started