Irozon Shop
Set Up PostNord Shipping in WooCommerce
Irozon PostNord for WooCommerce – Free adds a PostNord shipping method to your WooCommerce store, built for merchants delivering within Sweden. This guide walks through installing it, configuring shipping rates and delivery options, testing checkout, and diagnosing common issues.
The plugin is free and built by Irozon AB. It currently focuses entirely on Swedish WooCommerce stores — it does not ship EU/international zones. Shipping prices always come from a rate table you enter yourself, from your own PostNord business agreement; the plugin never invents, estimates, or automatically fetches a contracted price.
On this page
Before you begin
- WordPress 6.0+ and WooCommerce 8.0+, PHP 8.1+ on the server.
- Back up your site (files and database) before installing any new shipping method, and test on staging first if you have one.
- A PostNord business account with Delivery Options API access — only needed if you plan to offer live mailbox/service-point/parcel-locker choices at checkout. Manual weight-bracket pricing works with no API credentials at all.
- A WooCommerce shipping zone covering Sweden, created or ready to create.
- Accurate product weights set on your WooCommerce products — the rate calculator sums cart weight from these.
- HTTPS on your store — required for checkout in general, and for the PostNord API requests this plugin makes server-side.
- Plan to test a checkout after configuring, before relying on it for real orders.
Install the plugin
- Get the plugin from its Irozon Shop product page and complete the free checkout to reach your download link.
- In your site’s wp-admin, go to Plugins → Add New → Upload Plugin, choose the downloaded ZIP, then click Install Now.
- Click Activate. WooCommerce must already be active — if it isn’t, the plugin shows an admin notice instead of breaking your site.
- The plugin’s settings live under WooCommerce → Settings → Shipping, inside whichever shipping zone you add it to — there is no separate top-level admin page.

Configure PostNord credentials
Credentials are only required if you want live PostNord delivery-location discovery (mailbox, service points, parcel lockers) at checkout. Manual weight-bracket pricing works with no credentials at all.
- API mode — Sandbox or Production. Start with Sandbox.
- PostNord API key — stored server-side only. The field always shows blank when you reopen settings, with a status line telling you whether a key is currently saved. Leaving it blank on save keeps the existing key; typing a new value replaces it. A show/hide toggle lets you check what you just typed, never a previously saved value.
- PostNord customer key — PostNord’s
customer.customerKey, normally your company name with spaces and punctuation removed (e.g. “Irozon AB” → “IrozonAB”). Letters, digits, hyphens, underscores, and å/ä/ö only, up to 64 characters; other characters are stripped automatically before each request. Ask PostNord to confirm the exact value if you’re unsure. - Test connection — a one-click check that confirms your credentials work before you switch to Production.
Never share your API key or customer key in a support request, screenshot, or public forum post — treat them like a password.

Choose delivery options
With Enable Live Delivery Options turned on, the plugin can offer three independently toggleable choices at checkout, each with its own on/off switch:
- Mailbox delivery — a single option, where PostNord offers one for the destination.
- Service points — the nearest named PostNord service points (shops/kiosks that hold parcels for pickup).
- Parcel lockers — the nearest PostNord parcel lockers.
For service points and parcel lockers, a Maximum nearby locations setting controls how many of the closest results to show (each type uses its own count, default 3). You can also choose to show distance and delivery estimate in each option’s checkout label. All delivery options are priced identically, using your configured bracket price — the Delivery Options API decides which locations to offer, never the price.
If the live API call fails, times out, is disabled, or the destination/weight is incomplete, checkout falls back to a single generic “PostNord” rate at your configured price — it never blocks checkout and never invents a price.
Configure manual shipping rates
Shipping prices are entered manually — the plugin does not fetch your contracted PostNord prices automatically. Enter the current business price for each weight bracket from your own PostNord agreement:
| Cart weight | Bracket used |
|---|---|
| Up to 0.5 kg | “Price up to 0.5 kg” |
| 0.5–1.0 kg | “Price up to 1.0 kg” |
| 1.0–1.5 kg | “Price up to 1.5 kg” |
| 1.5–2.0 kg | “Price up to 2.0 kg” |
| Above 2.0 kg | Fallback rate, if enabled — otherwise PostNord isn’t offered |
WooCommerce’s total cart weight (every item’s weight × quantity, converted to kg) is compared against the brackets in order, and the smallest bracket that covers the cart is used, inclusive of the boundary itself — a 1.0 kg cart uses the 1.0 kg bracket, not the 1.5 kg one. If a product has no weight set, or the cart’s total weight works out to zero, that’s treated as missing weight: the fallback rate applies if you’ve enabled one, otherwise PostNord simply isn’t offered as a shipping option — it’s never charged incorrectly or offered for free by accident. A bracket left blank or invalid never silently borrows a neighboring bracket’s price.

Configure shipping zones
- Go to WooCommerce → Settings → Shipping and open (or create) a zone that covers Sweden.
- Click Add shipping method and choose Irozon PostNord Shipping.
- Set the method title customers will see (defaults to “PostNord”), your rates, and any delivery options.
- If the zone already has another shipping method (e.g. a flat rate), order them so the one you want shown first is listed first — the plugin doesn’t reference or modify any other shipping method, so both can safely coexist.
- Avoid adding Irozon PostNord Shipping to more than one zone that could match the same customer address — that would offer duplicate PostNord options at checkout.
Test checkout
- Add a product with a real weight to your cart, and use a genuine Swedish test address (a real postcode is needed for accurate bracket/delivery-option behavior).
- Go to checkout and confirm the PostNord rate (or, with live delivery options on, the mailbox/service-point/locker choices) appears with the price you expect.
- Test on both desktop and mobile — the plugin supports the WooCommerce Checkout Block and classic checkout identically, but it’s worth confirming your theme’s layout looks right on both.
- If you enabled service points or parcel lockers, confirm a location can actually be selected and that the choice is preserved through to order placement.
- Rather than placing a real paid order, use a free/test product, a discount code, or WooCommerce’s order-notes/test tools to confirm the flow without an unnecessary real transaction.


Diagnostics
Inside the shipping method’s settings, an Advanced section (collapsed by default) shows a small diagnostics panel recording the most recent Delivery Options attempt: environment, success/failure/skipped status, HTTP status, a sanitized PostNord error code/message, whether the fallback rate was used and why, and a bounded summary of the delivery options PostNord returned (name, product code, type, ETA, location name/distance).
It never shows a full street address, customer name, phone, email, your API key, or the complete raw PostNord response. A Clear diagnostics action resets it. If you need to ask for support, it’s safe to copy the diagnostics panel’s text as-is — but never paste your API key, customer key, or a customer’s personal details into a support request.

Troubleshooting
- No PostNord option appears at checkout. Confirm the method is enabled for the matching shipping zone, the destination address falls inside that zone, and at least one bracket (or the fallback rate) has a valid, non-blank price.
- The price looks wrong. Check which weight bracket the cart weight actually falls into (see the table above) and confirm that bracket’s price field. Prices are exactly what you typed — the plugin never adjusts them.
- Service points or lockers don’t show up. Confirm Enable Live Delivery Options and the specific location-type toggle are both on, that your API credentials pass Test connection, and that the destination postcode is valid — PostNord may also simply have no locations of that type near the address.
- “Test connection” fails. Double-check the API key and customer key for typos, confirm you’re testing against the correct environment (Sandbox vs Production), and check the diagnostics panel for a sanitized PostNord error code.
- Cart weight seems to be treated as missing. Confirm every product (and any variation) in the cart has a weight set in WooCommerce — an all-zero total is treated the same as a missing weight.
- Checkout Block vs. classic checkout show different results. They shouldn’t — both read the same underlying shipping rates. If you see a mismatch, it’s more likely a caching or theme issue than this plugin; see the next item.
- Checkout looks stale after a settings change. If your site uses a caching plugin, clear the site/page cache after changing shipping settings — shipping rates can be cached as part of a cart/checkout fragment.
- Another shipping method also appears and you only want one shown. That’s expected if more than one method is enabled for the same zone; disable or reorder the one you don’t want customers to see.
- The plugin ZIP download link doesn’t work directly. The download is only available through your Irozon Shop order/account, not as a public direct link — see the product page to get a fresh copy.
Privacy and security
- What’s sent to PostNord: only when live delivery options are enabled, the plugin sends the shipping destination’s postcode, city, street, and country, your store’s sender address, and the package weight to PostNord’s Delivery Options API, server-side. It does not send the customer’s name, phone number, or email address.
- What isn’t stored: no full PostNord API response, and no customer personal details, are written to the diagnostics panel or any log — only a small, bounded summary.
- Credential handling: your API key and customer key are stored as a WordPress option, never written to a cookie, page HTML, or any AJAX/REST response, and redacted from error text before it’s logged or shown.
- HTTPS: the plugin’s server-side requests to PostNord and your store’s own checkout should both run over HTTPS.
- Screenshots and support: never include an API key, customer key, or real customer data in a screenshot or support request — the diagnostics panel is designed to be safe to share as-is.
Irozon PostNord for WooCommerce is developed independently by Irozon AB and is not officially affiliated with, endorsed by, or sponsored by PostNord. “PostNord” and “WooCommerce” are trademarks of their respective owners. See the Privacy Policy for how Irozon Shop itself handles data.
Current limitations
The Free edition deliberately does not include:
- Automatic retrieval of your contracted PostNord prices — you enter them yourself.
- Shipment booking, label creation/printing, or tracking synchronization.
- Bulk label actions, cancellation/rebooking, or multiple sender addresses.
- EU or international shipping — the Free edition is Sweden-only by design.
These are planned for a possible future Pro edition, not available for purchase today, and nothing in the current Free plugin calls or depends on them.
Support and updates
- Product page and current version: Irozon PostNord for WooCommerce – Free
- More Irozon plugins: Plugins
- Questions or support: Contact and Support
Support is provided on a best-effort basis; no guaranteed response time is promised for the Free edition.