If you sell in Canada and your shipping rates are a single Canada Post integration, you have one point of failure and it goes down roughly every eighteen months. The fix is not complicated, but it is slow to arrange and impossible to arrange in a hurry: open a commercial account with a second carrier now, build a parallel set of shipping profiles and rate rules that are switched off, write the delay copy and the French version of it, and keep a one-page runbook so that switching over is a twenty-minute job rather than a two-day scramble. Everything below is the detail of that. The short version of canada post strike shopify shipping planning is: the work is 90% done in advance, 10% done on the day.
We build this contingency for Canadian merchants as a standing piece of setup, the same way you'd set up a backup payment gateway. It is cheap insurance. During the November–December 2024 shutdown, the stores that kept selling were the ones that already had a second carrier account with rates flowing, not the ones who started an application on day three.
The account is the bottleneck, not the Shopify config
Shopify-side work takes an afternoon. Getting a commercial account approved with Purolator, UPS, FedEx or a regional courier takes weeks — credit check, account setup, pickup arrangement, then a negotiated rate card that depends on volume you haven't shipped with them yet. If you apply during a strike you are in a queue with every other merchant in the country, and the rate you're quoted will reflect that.
So open the account in a quiet month. Ship a handful of real orders through it each week — enough to keep it active, enough to find out that their pickup window doesn't work with your packing schedule, enough that your warehouse staff have used the label flow once. An account you have never shipped on is a theoretical account.
If you ship fewer than about 50 parcels a month, a direct carrier account may not be worth the minimums. Use a reseller or aggregator instead — Stallion, Netparcel, ShipTime and similar give you discounted rates across multiple carriers without a volume commitment, and most have a Shopify app. The trade-off is less control over claims and a slower escalation path when a parcel goes missing. For a small store that's an acceptable trade.
Shopify backup shipping carrier setup: how the pieces connect
Three objects do all the work: shipping profiles, zones inside those profiles, and rates inside those zones. The contingency lives in the rates.
In your General profile, under the Canada zone, you want both sets present at all times. The live Canada Post rates. And underneath them, deactivated or priced out of reach, a second set — either carrier-calculated rates from the backup account or manual weight-based rates that approximate the backup carrier's card. Switching over means deactivating one group and activating the other. No new objects to create, no zones to rebuild, no chance of accidentally deleting the rate that your Quebec customers depend on.
One constraint that catches people: third-party calculated rates are plan-gated. Advanced and Plus include them; on lower plans you either pay annually or add them for a monthly fee. Check your plan before you design around live rates, because if you can't show them, your fallback has to be manual weight tiers and the whole build changes shape. Manual tiers are honestly fine for most catalogues — they're predictable, they don't fail when an API times out, and customers don't see a carrier name they don't recognise.
Second constraint: if you fulfil from more than one location, or you have a product with its own shipping profile (bulky items, a subscription box, anything with free shipping baked in), the fallback has to exist in every profile. We get this wrong on the first pass more often than we'd like. A merchant switches the General profile over, the orders flow, and three days later discovers the one custom profile covering their heaviest SKUs is still quoting a carrier that isn't picking up.
Shipping profiles by province, and the places they break
Shopify lets you build zones from provinces, so the obvious move is to split Canada into bands: Ontario and Quebec as one zone, the Prairies as another, BC, Atlantic, and then the territories on their own. That matches how carrier rate cards actually work and it stops you averaging a Nunavut delivery into the same price as a cross-town Toronto drop.
Where this gets uncomfortable is rural and remote surcharges. Those are applied by forward sortation area, not province, and a postal code in rural Ontario can cost more to serve than a downtown Halifax address. Province-level zones can't see that. If a meaningful share of your orders go to rural addresses, either build postal-code-level zones where Shopify allows it, or accept the averaging and price the band accordingly, or run a rate app that pulls the real surcharge. Averaging is the usual answer and it's the right one until the losses are big enough to measure.
Yukon, NWT and Nunavut deserve their own zone regardless. Most backup carriers either don't serve them on ground service or price them like air freight. If you set a single national flat rate and forget the territories, you will lose money on those orders — not a lot of orders, but a lot of money per order.
UPS, Purolator and Intelcom: picking the backup that fits your parcels
Rough shape of the choice, from what we see on Canadian stores:
- Purolator — strongest domestic ground network, good coverage into Atlantic Canada and smaller centres, native Shopify carrier-calculated rate support. Usually the closest substitute for Canada Post Expedited on transit time, though not on price.
- UPS — the obvious pick if you ship into the US as well as domestically, because one account covers both and the cross-border paperwork is handled in the same flow. Watch the accessorial charges: residential surcharge, fuel, address correction. The quoted base rate is not what you pay.
- FedEx — comparable to UPS, sometimes better on cross-border air, worth quoting against them rather than assuming.
- Intelcom and the last-mile couriers — cheap on dense urban routes, which is where most D2C volume goes. The catch is that they typically don't plug into Shopify as a carrier-calculated rate the way the big carriers do; you reach them through an aggregator or your 3PL, and you quote the customer a flat rate rather than a live one. Service quality varies a lot by city. If you're considering one, ship through them for a month and read your own support tickets before you commit.
Do not pick on headline rate. Pick on the delivered cost of your median parcel to your top five destination cities, and on whether they'll pick up at the time you're actually packed.
Flat rate shipping as the panic button, with the arithmetic
When live rates aren't available on your fallback, a flat rate keeps you selling. The question is what it costs you.
Take a store doing 620 orders in December, average parcel 1.4 kg, average all-in Canada Post cost of $14.20. Say the backup carrier works out to $21.80 once fuel and the residential surcharge land. That's $7.60 more per order, $4,712 across the month. If your AOV is $85 at 55% gross margin, you're making $46.75 gross per order, so the extra shipping eats 16% of it.
Sixteen percent is survivable for four weeks. It is not survivable as a permanent position. So decide in advance which lever you pull: absorb it, add a $5 surcharge and absorb the rest, or raise the free-shipping threshold from $75 to $125 for the duration. Raising the threshold is usually the least damaging — it lifts AOV while it's in force, and customers read it as a temporary measure if you say so plainly. Write the number into the runbook now so nobody has to do margin maths at 9am on a Monday.
Updating the shipping delay notice without touching the theme
The copy changes need to be fast and reversible, which means they should not involve editing Liquid.
Set up a dismissible announcement bar controlled by a theme setting, so it's a toggle and a text field in the customiser. On the product page, add a metafield for a short shipping-status line that renders above the add-to-cart button when it has a value and renders nothing when it's empty. Cart and checkout: Shopify's checkout settings let you add a notice; Plus merchants can do more with checkout extensions. And the emails — order confirmation and shipping confirmation templates — need a line too, because that's where the customer looks when they're wondering where their parcel is.
Three sentences is enough. What's happening, what it means for their order in days, what you're doing about it. Give a revised delivery window and err late. The worst version of this is a vague apology with no date, because every customer then opens a ticket to ask for one.
If you're serving Quebec, all of it needs French. Bill 96 makes a bilingual storefront a compliance matter rather than a nice-to-have, and the part merchants miss is notification templates — the storefront gets translated, the transactional emails don't. Translate the delay copy at the same time you write it, not after. Shopify's language settings handle the storefront and the email templates; you just have to remember the second one exists.
Cross-border orders into the US need a separate answer
Canada Post hands US-bound parcels to USPS, so a domestic strike takes out your cheapest cross-border lane too. Your fallback for US orders is UPS, FedEx or DHL, and the economics are different enough that it's worth a separate zone and a separate decision.
The duty picture also changed in 2025 when the US ended duty-free treatment for low-value imports, so parcels that used to clear without charges now attract duty. If you ship DDU, your customer gets a bill at the door and a bad surprise. Collecting duties at checkout through Shopify Markets costs you a little margin in exchange for no doorstep charges and far fewer refused deliveries. Turn it on before you need it, test one real order, and check that the HS codes on your products are actually filled in. Most catalogues we inherit have them blank.
Order of operations on the day service stops
- Confirm it's real and get a horizon. A rotating strike affecting one region is a different response from a national stoppage.
- Deactivate the Canada Post rates in every shipping profile. Every one, including custom product profiles and secondary locations.
- Activate the backup rate group. Place a test order to three addresses — a major city, a rural postal code, and a territory — and check the quoted rate against what you expect to pay.
- Turn on the announcement bar and the PDP notice, in both languages.
- Update order and shipping confirmation email templates.
- Switch your fulfilment default in Shopify Shipping or your label platform, so staff don't buy a label from a carrier that isn't collecting.
- Email customers with orders already placed and not yet shipped. Before they email you.
- Adjust the free-shipping threshold if that's the lever you chose, and update any ad copy or Shop Pay promotions that mention the old number.
- Pause or rewrite any automation that promises a delivery date — abandoned cart flows and post-purchase sequences are the usual offenders.
Reversing it is the same list backwards, and it's worth doing promptly. Backlogs after a stoppage are real, and the first week back is not the week to put all your volume into a recovering network.
A few questions that come up every time
What's the best Canada Post alternative for a D2C store? There isn't one answer, because Canada Post's advantage is rural coverage at a price nobody matches. For urban-heavy catalogues, a last-mile courier through an aggregator gets closest on cost. For national coverage with Shopify-native live rates, Purolator. For anyone with meaningful US volume, UPS or FedEx, because one account does both jobs.
Should I keep the backup running permanently? Split your volume. Something like 80/20 keeps the second account active, gives you real performance data, and means the switch is a change of ratio rather than a change of system.
When should this be built? Before October. Black Friday and Boxing Day are back-to-back peaks in Canada and the gap between them is exactly when labour disputes have landed before. Building a carrier fallback in the second week of December is not a plan.
Pull up your shipping settings and count the rates that depend on one carrier. If the answer is all of them, start the second account application this week — the Shopify side can wait, the credit check can't. If you'd rather have someone else build the parallel profiles and the bilingual notice templates, our Canada team does this as a fixed scope, or you can send us the store through a free audit and we'll tell you what's missing.


