How to set up rural shipping rates in Shopify NZ

By Jona Stevenson · 29 August 2026 · 12 min read

A full walkthrough for New Zealand stores, from naming your rates so rules can actually match them, through North and South Island zones, live carrier rates, and the zone trap that quietly breaks island shipping.

Worth knowing up front: I build Rural Shipping & RD Rates NZ, so I have a commercial interest in one of the options below. Steps 1 to 4 apply no matter what you use, including if you use nothing. The free approaches are covered honestly, with their real downsides.

If you have not read why Shopify cannot detect a rural address, the one line version is this: Shopify shipping zones are built from countries and regions, and for New Zealand the smallest unit is the region. Auckland, Waikato, Canterbury. There is nothing below that. So a rural address in the Waikato and an urban address in Hamilton are, to Shopify, the same kind of thing, and both are offered every rate in the zone.

Everything below is about working within that.

Step 1: decide what you are actually solving

Three different problems get called "rural shipping" and they need different setups. Work out which one you have before you touch anything.

You want rural customers to pay more. The carrier charges you a rural surcharge and you want to pass it on. This is the common one.

You want rural customers to see different services. Your overnight service does not go overnight to a rural address, so you would rather not offer it than promise something the carrier will not do. Prices may be identical. This is about accuracy, not money.

You want to exclude some addresses entirely. You do not ship to Great Barrier, or you only ship there on request. Fewer stores need this than think they do, and it is usually better solved with a high honest rate than with a refusal.

You can want more than one of these. The setup is the same shape either way, but knowing which you are chasing stops you building something more complicated than you need.

Step 2: work out your real rural cost

Do this before you invent a number, because most surcharges I see are guesses and they are usually wrong in one direction or the other.

As at August 2026, NZ Post sells a Rural Delivery prepaid ticket at $60.00 including GST for a pack of ten, so $6.00 per rural parcel on top of the normal ticket. Aramex does not publish a flat rural surcharge in the same way, because rural loading is built into their zone pricing, but they do publish a separate remote island surcharge. Your own account rates may differ from published retail pricing, so check your rate card rather than trusting a blog post, including this one. I have gone through the current published numbers in more detail in what rural delivery actually costs in New Zealand.

Two decisions fall out of that number.

First, do you pass on all of it, some of it, or none of it? Passing on all of it is defensible and most customers understand it. Absorbing some of it is a legitimate marketing decision, as long as you are doing it deliberately rather than by accident.

Second, do you charge rural separately at all? If rural orders are two percent of your volume, spreading $6.00 across every order adds about twelve cents each and you can stop reading here. That option is genuinely fine, it costs nothing, and it needs no app. It gets worse the higher your rural share goes, and if you sell anything agricultural your rural share is not two percent.

Step 3: name your rates so a rule can find them

This is the step people skip, and it is the one that causes the most grief later.

Any system that shows or hides rates, whether that is an app, a Shopify Function you write yourself, or a script, identifies rates by the name displayed at checkout. Not by an internal ID, because the rate does not have a stable one you can see. The name is the handle. So the name has to be unambiguous.

Names that work:

Standard courier
Standard courier (Rural delivery)
Overnight courier
Overnight courier (Rural delivery)

Each pair shares a service prefix so customers understand what they are choosing, and the rural ones carry a marker no other rate uses.

Names that cause problems:

Shipping
Shipping 2
NZ Standard over $100.00 (Not valid for Rural Addresses)
Courier - urban only, rural customers please select below

The first two say nothing. The third and fourth are real names I have seen on New Zealand stores, and they show what happens when the rate name is doing the work that a rule should be doing. The store is writing instructions into the label because it has no other way to enforce them, and customers are reading past those instructions and clicking the cheap one anyway.

Three specifics that save time:

Step 4: build the zones

Go to Settings › Shipping and delivery, open your shipping profile, and look at the zones you have for New Zealand.

The simple case: one nationwide zone

If you charge the same across the country, you want one zone covering all New Zealand regions, containing both rates:

ZoneRatePrice
New ZealandStandard courier$8.50
New ZealandStandard courier (Rural delivery)$14.50

At this point every customer sees both. That is expected. Nothing so far restricts anything, and that is the gap the last step fills.

North Island and South Island

If your freight differs by island, create two zones and select that island's regions in each. Then add both a rural and an urban rate to each zone, so you end up with four:

ZoneRatePrice
North IslandStandard courier$8.50
North IslandStandard courier (Rural delivery)$14.50
South IslandStandard courier$11.00
South IslandStandard courier (Rural delivery)$17.00

A customer is only offered rates from the zone covering their region, so a Canterbury address sees the South Island pair and never the North Island pair. The rural split then happens within whichever zone applies.

The zone trap, which is worth understanding properly

This is the single most common thing that goes wrong, and it catches experienced people.

An app can only hide rates that Shopify already offered. It cannot add a rate that was never there.

Say you want a special rate for Waiheke Island. You create a zone called "Waiheke" and put your $35 barge rate in it. Then you discover Waiheke customers are not being offered it.

The reason is that Waiheke's postcodes (1081, and 1971 for the RD addresses) are in the Auckland region. Your new zone cannot select "Waiheke", because Shopify has no such geography. If you selected Auckland for that zone, you have either created a duplicate Auckland zone or moved Auckland out of your main zone. Neither does what you wanted.

The rate has to live in the zone that already covers Auckland, sitting alongside your normal Auckland rates. Then a rule decides which of them a given Auckland postcode is shown. Same for Great Barrier, whose codes (0960 to 0963, and 0991) are also Auckland. The islands post covers this in full, because the freight economics are genuinely different and worth a separate look.

The general rule: every rate a customer should be able to see must sit in a zone covering their region. Get that right first, then worry about which ones to hide.

Step 5: control which rates each customer sees

You now have correct rates in correct zones, and every customer can see all of them. Four ways to fix that, with what each actually costs you.

Option A: leave it, and rely on customers

Cost: nothing. Some rural customers will pick the rural rate, because they know they are rural and they are used to it.

The problem is that you are asking someone to voluntarily pay six dollars more when a cheaper option is sitting right beside it and looks equally valid. Many themes preselect the cheapest rate, so the default works against you. This is worth trying if your rural volume is genuinely tiny, and worth abandoning as soon as you find yourself chasing people for money.

Option B: carrier calculated shipping

Cost: the Shopify Advanced plan, or the carrier calculated shipping add-on on an annual plan.

Your carrier quotes the live rate for the actual address, with rural loading already applied. This is the most accurate option that exists, because the carrier is the authority on whether an address is rural. No postcode list to maintain, no drift as boundaries change.

Two real downsides. You display whatever the carrier returns, which is sometimes an awkward number and sometimes higher than you would like a customer to see. And the rate name is generated by the carrier, often with a prefix, so it may not match what you configured. That matters if you later add rules on top, because rules match on the displayed name.

Option C: a Shopify Function you write yourself

Cost: developer time, and ongoing maintenance.

The delivery customisation Function API lets you hide delivery options based on the cart, including the delivery address postcode. If you have development capability this is entirely doable and you keep full control. Worth knowing before you start: the function runs sandboxed with no network access, so it decides from a postcode list you bundle and deploy rather than from a live lookup against NZ Post.

Be realistic about maintenance. The postcode list is not static, and someone has to own it.

Option D: an app

Cost: a monthly subscription, typically between $8 and $15 USD in this category.

Apps in this space match the customer's postcode against a bundled rural list and hide the rates that do not apply. Rural customers see your rural rate, urban customers see your urban rate, and your prices stay exactly where you set them in Shopify. It works on any plan because nothing is being calculated, only displayed or withheld.

Things worth checking before you pick one, whichever you pick:

Step 6: live carrier rates, where most guides stop

If you use carrier calculated rates alongside rules, there is one thing to know, and it accounts for a large share of "the rule is not working" reports.

The rate name shown at checkout is generated by the carrier at request time. It frequently differs from the name in your Shopify settings, and often carries a carrier prefix or a service code. A rule configured against the name you see in the admin will silently fail to match the name the customer sees.

The fix is unglamorous. Put a real address through your own checkout, get to the shipping step, and read the rate names off the screen exactly as they appear, including punctuation and capitalisation. Configure your rules against those strings. Most apps in this category, mine included, have a field for exactly this, because everyone hits it.

Step 7: test it properly

Do not trust that it works because the settings look right. Put real postcodes through it.

A minimum test set:

PostcodeWhereWhat you should see
1010Auckland CBDUrban rate only
0981Warkworth ruralRural rate only
7999Canterbury ruralSouth Island rural rate, if you split by island
1081Waiheke IslandWaiheke rate, if you have one
0962Great Barrier IslandGreat Barrier rate, if you have one

Check each one at the shipping step of a real checkout, not just in a settings preview. Then check the case everyone forgets: an address where you expect one rate, and confirm you are not left with zero. A checkout showing no shipping options is a silent lost sale, and it is the failure mode you are least likely to discover on your own.

Two more worth knowing about.

Subscriptions. The first checkout behaves normally. Renewal orders do not. Shopify creates those in the background and charges shipping at the cheapest rate available for the address. That is how Shopify's subscription billing works and no app changes it, so if you sell subscriptions to rural addresses, price that in rather than expecting a rule to catch it.

Draft orders. Rates you create manually on a draft order do not pass through checkout rules. If you build orders by hand, you are responsible for picking the right rate yourself.

Common questions

Do I need the Advanced plan?

No, unless you specifically want carrier calculated shipping. Advanced (or the annual plan add-on) is required for live carrier rates. Controlling which of your own flat rates each customer sees works on any plan.

Can I set up Shopify zones by postcode in New Zealand?

No. Zones are built from countries and regions, and for New Zealand the region is the smallest unit available. That is the root of this whole problem.

Why does my rural customer not see the rural rate I created?

Almost always the zone trap from step 4. The rate is sitting in a zone that does not cover that customer's region, so Shopify never offered it, so nothing can reveal it. Check which zone the rate lives in first.

Do I have to charge extra for rural delivery?

No. Plenty of stores set rural and urban at the same price and use the split purely to control which services are offered. Withholding an overnight service from an address the carrier will not reach overnight is a good use of this even with no surcharge attached.

Can I have more than one rural rate?

Yes. Nothing stops you offering several rural services at different price points. Just make sure only the intended ones show, because two rural rates visible at once puts you back where you started, with a customer choosing the cheaper one.

If you want step 5 handled

Rural Shipping & RD Rates NZ does exactly what option D describes. It uses the rates and prices you already have in Shopify, matches the customer's postcode against an editable NZ rural list, handles Waiheke and Great Barrier separately, takes per-address exceptions, and never hides every rate in a group.

Get it on Shopify App details

14-day free trial · $8 USD / month · Cancel any time