VibeFox PostNord for WooCommerce — Help
Requirements
WordPress: 5.8 or later.
WooCommerce: 7.0 or later, installed and active. The plugin refuses to activate without it.
PHP: 8.0 or later.
PostNord API key (for the service point picker): create a free account on developer.postnord.com, add an application and copy its API key. Without a key the method still works, but customers cannot pick a service point.
PostNord agreement: to send parcels you need your usual PostNord customer agreement, for example MyPack Collect or MyPack Home.
VibeFox license key: bought on vibefox.net. One key works on one domain.
Installation
1. In WordPress go to Plugins > Add New > Upload Plugin, choose the plugin ZIP file and click Install Now. You can also upload the vfd_postnord folder to /wp-content/plugins/ by FTP.
2. Click Activate.
3. Open the settings: WooCommerce > Settings > Shipping > VibeFox PostNord, or click Settings under the plugin name on the Plugins page.
4. Enter your VibeFox license key in the license block at the top of the page and click Activate.
5. Paste the PostNord API key, choose your Agreement country and fill in the Country prices (see Configuration).
6. Add VibeFox PostNord to the shipping zones for Sweden, Denmark, Norway or Finland in WooCommerce > Settings > Shipping > Shipping zones. In the method's settings set its Title and Delivery type. Or turn on Ignore shipping zones.
Configuration
All settings except the title and the delivery type are on one page: WooCommerce > Settings > Shipping > VibeFox PostNord. They apply to every shipping zone. When you add the method to a zone, the zone window has two fields:
Title (zone): the name of this option at checkout, for example "PostNord MyPack Collect". Leave it empty to use the global Name.
Delivery type (zone): Same as global setting (default), Service point / parcel locker or Home delivery. Add two PostNord methods to a zone to offer both.
Above the settings the page warns when there is no API key yet or no price. Every time you save the settings, the cached service point lists are cleared.
General
Enable/Disable: when unchecked, the method is hidden everywhere, also in shipping zones.
Name: the shipping method name shown at checkout. A zone method can override it with its own Title. Default: PostNord.
Delivery type: the default for all PostNord methods; each zone method can choose its own.
Tax status: Taxable adds WooCommerce tax to the shipping cost, None does not.
PostNord API (service point picker)
API key: the API key of your application on developer.postnord.com. It is sent to PostNord only from your server, never to the browser, and is never logged.
Test mode: uses the PostNord test environment (atapi2.postnord.com). Only for keys issued for the test environment.
Agreement country: the country of your PostNord customer agreement: Sweden, Denmark, Norway or Finland. It decides which service points are offered. Same as the delivery country (default) uses the customer's country.
Prices
Prices are in the store currency. PostNord has no public price API, so you set your own prices, typically your PostNord agreement prices. The order is: the country table, then the fallback cost; free shipping applies only where one of them gives a price.
Calculation type: Per order charges the price once. Per item (price × number of items) multiplies it by the number of items in the cart.
Country prices: a price by destination country and cart weight. Click + Add country to add a row and the cross to remove one. Each row has a Price and weight columns: XS up to 1 kg, S up to 2 kg, M up to 3 kg, L up to 5 kg and XL over 5 kg. A weight column with 0 uses the Price column. Country * All other countries covers every country without its own row. Decimals with a comma or a dot (9,99 or 9.99). A new row starts as * All other countries with all prices at 0, which means free shipping. Choose the country and enter the prices before you save, or remove the row. A cell that is not a number is saved as 0, with a message.
Fallback cost: used when the country table has no row for the destination and no * row. Leave it empty to hide the method for such countries.
Free shipping from: the cart subtotal (after discounts, excluding tax) from which PostNord is free. It applies only where a price is set: a country row, the * row or the fallback cost. Leave empty to never offer free shipping.
Availability
Min weight (kg): hide the method when the cart weighs less. Product weights are converted from your store weight unit. 0 means no limit.
Max weight (kg): hide the method when the cart weighs more. Default: 30. 0 means no limit. Check the weight limit of your PostNord service: parcel lockers accept less than service points.
Minimum subtotal: show the method only if the cart subtotal is at least this amount. Leave empty to always show it.
Disabled shipping classes: hide the method when the cart contains a product from any of these WooCommerce shipping classes.
Ignore shipping zones: when on, PostNord is offered for the countries below with the global settings, even if it is not added to a shipping zone. When off, only in the shipping zones where you added it.
Countries (Ignore shipping zones): the destination countries for that mode. Leave empty to use all shipping countries. This field is used only when Ignore shipping zones is on.
Amounts and weights accept a comma or a dot. An invalid number is not saved, with a message.
Advanced
Debug log: writes rate calculations and API calls to WooCommerce > Status > Logs (source "vfd-postnord"). API errors are always logged. The API key is never logged. Turn the log off when you are done.
Remove data on uninstall: when on, deleting the plugin removes the PostNord settings and zone methods. Deactivation never deletes settings. Service points saved in orders are always kept.
How it works at checkout
When the customer enters a delivery address, WooCommerce asks the plugin for a rate. The plugin checks the conditions: cart weight, minimum subtotal and disabled shipping classes. The price comes from the country table, then from the fallback cost. If there is no price, the method is hidden. If free shipping applies, the customer sees the method at no cost.
For a service point method and a delivery address in Sweden, Denmark, Norway or Finland, your server asks the PostNord Business Location API for the service points nearest to the delivery postcode. It sends the delivery country and postcode and the agreement country. The API timeout is 10 seconds. Lists are cached for 6 hours per postcode, and "no points" answers for 1 hour. API errors are cached for 5 minutes, so a PostNord outage does not slow down every checkout update.
For other destinations the method can still be offered with your prices, without a picker.
The method works on the classic checkout and on the Cart and Checkout blocks. It is compatible with WooCommerce High-Performance Order Storage (HPOS).
The plugin does not request live PostNord prices and does not create shipping labels, book shipments (EDI), provide tracking numbers or send tracking e-mails. There is no map view. Use PostNord Portal, Skicka Direkt Business or a label plugin for shipments; the saved service point ID is what those tools need.
Pickup points
When the customer selects a service point method, a PostNord service point list appears under it with the nearest points, grouped by city with distance. Before a postcode is entered, the customer sees "Enter your postcode to choose a PostNord service point." The choice survives checkout updates.
When the list is loaded, a point is required. Without one, checkout stops with "Please select a PostNord service point." The chosen point is checked against the list on the server, in the classic and in the block checkout.
The picker never blocks a sale. If the list cannot be loaded (no API key yet, PostNord API down, no points near the postcode), the customer sees a note and can still place the order. PostNord then delivers to the service point nearest to the address.
Admin order screen: PostNord service point with the name, address and Service point ID, below the shipping address. If no point was chosen, it says "not selected — PostNord delivers to the service point nearest to the shipping address".
Thank-you page and My account order view: PostNord service point: with the name and address.
Order e-mails: the point name, address and ID in HTML and plain-text e-mails.
In the database the point is stored in the order meta _vfd_ptnd_servicepoint_id, _vfd_ptnd_servicepoint_name and _vfd_ptnd_servicepoint_address.
License key
The plugin works with a VibeFox license key from vibefox.net. The license block is at the top of WooCommerce > Settings > Shipping > VibeFox PostNord. Paste the key into License key and click Activate. The block shows the status, for example the date the license is active until and your domain. Use Check now to check the status again, Change key to enter another key and Remove key to remove it from this site. The link Manage licenses and domains in your account opens your vibefox.net account.
One key works on one domain. Removing the key from a site does not free its domain slot. Free the slot in your vibefox.net account.
Without an active key, PostNord is not shown to customers at checkout. Logged-in store managers still see it, marked (unlicensed — visible to admins only), so you can set up and test the plugin before you buy a key. A reminder appears on the Plugins page and on WooCommerce pages. Existing orders are not affected.
When a license expires, the plugin keeps working, but updates and support need a renewal. The status is checked again automatically in the background.
Troubleshooting
PostNord does not appear at checkout: check that the license is active, Enable/Disable is on, and the method is added to the zone of the customer's country (or Ignore shipping zones is on and the country is allowed). Check that a price is set for the country (country row, * row or Fallback cost), the weight limits, Minimum subtotal and Disabled shipping classes.
The picker says service points cannot be loaded: check the API key and the Test mode setting. A production key does not work against the test environment, and the other way round. Turn on Debug log and look at WooCommerce > Status > Logs, source "vfd-postnord". The order can still be placed; PostNord then delivers to the nearest service point.
Unexpected service points: check Agreement country. It decides which service points are offered.
Shipping is free by mistake: check Country prices for rows with a Price of 0, especially a * row added with + Add country and left unfilled, and check Free shipping from.
The license block shows an error: follow the message in the block. For example, if the key is already used on another domain, free a slot in your vibefox.net account and click Check now. If the site address changed, click Check now to activate the key for the new domain. If the license server cannot be reached, the plugin keeps working on the last known status.
Uninstall
Deactivating the plugin keeps all settings and only clears the cached service point lists. To remove it, deactivate and delete it on the Plugins page. The license key and license status of this plugin are always removed, together with the cached service point lists. Settings and zone methods are removed only if Remove data on uninstall was on. Otherwise they stay for a later re-install. Existing orders keep their shipping lines and the saved service point.
PostNord is a trademark of its respective owner. This plugin is not affiliated with or endorsed by PostNord.
