PostNL koppelen WooCommerce scheelt je bij elke order een paar minuten handwerk.
In bijna elke webshop die ik onder ogen krijg, zit ergens een handmatig verzendproces. Order binnen, verzendadres kopiëren, in een ander tabblad een label maken op het PostNL Business Portal, terug naar WooCommerce, track-and-trace handmatig in een mail plakken. Vijf minuten per order, vijftig orders per dag, dat is bijna een halve werkdag aan logistiek waar geen klant voor betaalt.
Een goede koppeling met PostNL maakt dat hele proces een knop in de order-overview. Label aanmaken, automatisch versturen via een aangepaste e-mail, track-and-trace op orderpagina, en de klant krijgt netjes de update op het moment dat het pakket is afgegeven.
Dit artikel gaat over de officiële PostNL-plugin voor WooCommerce: hoe je hem installeert, waar je je API-key vandaan haalt, hoe je hem stabiel krijgt voor dagelijks gebruik, en welke fouten ik in de praktijk het meest zie langskomen. Aan het eind staan alternatieven zoals Sendcloud en MyParcel, voor wie meerdere verzenders nodig heeft.

Wat je nodig hebt voordat je begint
Voor een werkende koppeling tussen PostNL en WooCommerce heb je drie dingen nodig:
- Een zakelijk PostNL-account (geen privé-account, dat werkt niet voor API-koppelingen).
- Een API-key en klantnummer vanuit het PostNL Business Portal.
- Een WooCommerce-shop die online staat met SSL (HTTPS), op een hoster waar de plugin-installatie geen problemen geeft.
Het zakelijke account met API-toegang regel je via PostNL voor bedrijven. Daar vraag je een contract aan met API-toegang, en dat duurt meestal een paar werkdagen voor het rond is. Heb je nog geen tarief afgesproken, dan loop je dat traject eerst af voor je aan de techniek begint.
De plugin zelf is gratis en wordt door PostNL onderhouden. Vind hem in de WordPress plugin-directory onder de naam “PostNL for WooCommerce”.
PostNL koppelen WooCommerce: de officiële plugin installeren
Installatie volgt het standaard WordPress-pad:
- Ga naar Plugins > Nieuwe plugin in je WordPress-admin.
- Zoek op “PostNL for WooCommerce”.
- Klik op “Installeren”, daarna op “Activeren”.
- Onder WooCommerce > PostNL verschijnt een nieuw instellingenmenu.
In dat menu vul je je gegevens in:
- Klantnummer (het PostNL-klantnummer dat op je contract staat)
- Klantcode (een korte code die hoort bij je contract, ook in het portal te vinden)
- API-key (lange tekenreeks uit het PostNL Business Portal)
- Type omgeving: Live voor echte verzendingen, Sandbox voor testen
Belangrijk: gebruik eerst Sandbox-modus voor je live gaat. Daarmee maak je testlabels die niet daadwerkelijk in de PostNL-stroom belanden. Dat scheelt je niet alleen onbedoelde verzendingen, maar je merkt ook of de adresvalidatie en label-generatie werkt voor je een echte klant verstuurt.

Waar je de API-key vindt
Dit is de stap waar ik in mijn werk vaak vragen over krijg, dus iets uitgebreider.
- Log in op het PostNL Business Portal.
- Ga naar Instellingen of Integraties (de exacte naam wisselt soms; zoek op API).
- Klik op API-keys of Sleutels beheren.
- Genereer een nieuwe key. Geef hem een herkenbare naam, bijvoorbeeld “WooCommerce productie”.
- Kopieer de key direct. Sluit de pagina niet voor je hem hebt opgeslagen; sommige portals tonen hem maar één keer.
Plak die key in je WordPress-instellingen onder de PostNL-plugin. Test direct met “Verbinding testen” of een vergelijkbare knop. Krijg je een groene OK-melding, dan staat de techniek.
Adrescheck en levertijden inschakelen
PostNL biedt een aantal slimme extra’s die je in de plugin kunt aanzetten:
Adresvalidatie tijdens checkout. De plugin controleert tijdens het afrekenen of het opgegeven adres bestaat en geeft een correctie als de postcode niet bij het huisnummer past. Dat scheelt mislukte bezorgingen en klantenservice-tickets. Aanzetten onder de instellingenpagina, optie “Adrescheck”.
PostNL bezorgopties tonen. Standaardlevering, avondlevering, ophalen bij PostNL-punt, een specifieke dag of tijdvak. De plugin laat de klant deze opties kiezen in checkout, mits je contract die bezorgopties dekt. Niet elk PostNL-contract heeft alle opties, dus check je tarievenoverzicht eerst.
Track-and-trace automatisch versturen. Zodra een label is aangemaakt en aangeboden, wordt een T&T-nummer aan de order gekoppeld. WooCommerce kan dat automatisch in de “Order is verzonden” e-mail meesturen. Configureerbaar onder de plugin-instellingen.
Internationale verzendingen. Voor verzending buiten Nederland heeft PostNL aparte producten (Tracked & Insured, Standard International). Die zet je per land aan, met de juiste douaneformulieren als je naar landen buiten de EU stuurt.
De orderflow in de praktijk
Met alles ingesteld ziet een typische dag er zo uit:
Order komt binnen om 09:14. Klant heeft “Standaard bezorging” gekozen en een geldig adres opgegeven (validatie groen). Je opent de order in WooCommerce. In de zijbalk staat een PostNL-blok met “Label aanmaken”. Eén klik, een paar seconden, en je krijgt een PDF met het verzendlabel. Print, plak, klaar voor de PostNL-rijder.
De order krijgt automatisch een track-and-trace-nummer. De klant ziet het in de “Verzonden”-mail. Als de PostNL-rijder het pakket scant, gaat de status door in PostNL’s eigen tracking, en dat zien zowel jij als de klant terug.
Voor shops met veel orders is er een bulk-label-modus: vink twintig orders aan, klik “Labels aanmaken”, en de plugin genereert één PDF met twintig labels achter elkaar. Vijf minuten werk in plaats van een uur.

Veelgemaakte fouten en hoe ik ze oplos
Een paar dingen die in mijn werk regelmatig terugkomen.
API-key werkt niet. Negen van de tien keer is dit een typfout of een spatie aan begin of einde van de key. Open de plugin-instellingen, knip de key opnieuw, plak hem direct uit de portal. Werkt het nog steeds niet, check dan of je niet de sandbox-key in productie probeert te gebruiken (of andersom).
Adressen worden afgekeurd voor levering naar België. PostNL heeft voor België een aparte productcode en soms een ander contract nodig. Check in het Business Portal of je internationale verzendingen daadwerkelijk in je contract zitten. Zo niet, dan moet je dat aanvragen.
Label-generatie geeft fout 401. Authenticatie-fout. API-key niet meer geldig, of je IP-adres staat niet op de whitelist als je die hebt ingesteld. Genereer een nieuwe key en update de instellingen.
Track-and-trace komt niet in de klant-mail. De plugin moet expliciet de WooCommerce-mailtemplate aanpassen, en dat doet hij niet altijd automatisch. Check onder WooCommerce > Instellingen > E-mails of de “Order voltooid”-template een track-and-trace-placeholder bevat. Zo niet, dan voeg je die handmatig toe, of je gebruikt een transactional email plugin.
Bulk-print loopt vast. Bij zeer grote batches (boven 100 labels) kan de PDF-generatie de PHP-tijdslimiet overschrijden. Verhoog max_execution_time op je hoster, of splits in batches van 50.
Wanneer je naar een verzendplatform gaat
De officiële PostNL-plugin werkt prima als PostNL je enige verzender is. Veel shops verzenden alleen via PostNL, en dan is dit de meest directe route.
Heb je meerdere verzenders nodig (PostNL plus DHL voor Duitsland, plus DPD voor pakketten boven 30 kilo), dan loont een verzendplatform. De twee die ik het meest tegenkom:
Sendcloud. Nederlandse aanbieder, integreert met WooCommerce via een eigen plugin. Ondersteunt PostNL, DHL, DPD, UPS, GLS en internationale verzenders. Tariefstructuur per verzending, soms gunstiger dan een direct contract. Goede klant-bezorgportal en automatische retourflow.
MyParcel. Vergelijkbaar concept, ook Nederlands, sterk in lokale verzenders. Plugin-integratie is uitstekend. Tarieven afhankelijk van volume.
Beide platforms onderhandelen tarieven met de verzenders en jij verzendt onder hun contract. Voor kleine en middelgrote shops is dat vaak voordeliger dan een eigen contract met PostNL. Voor grote shops met een vast volume blijft een direct PostNL-contract meestal de scherpste keuze.
De Sendcloud-website en MyParcel-website hebben tariefcalculators waar je je verwachte volume kunt invoeren om te zien wat past.
Verzendkeuze
PostNL-plugin, Sendcloud of MyParcel?
Tik aan wat voor jou telt. De tabel licht de punten uit en laat zien welke optie het best past.
Op basis van je keuzes: Tik aan wat voor jou telt.
Indicatie op basis van je keuze. Prijzen en features verschillen per aanbieder, controleer ze actueel.
| Punt | PostNL-pluginPast nu | SendcloudPast nu | MyParcelPast nu |
|---|
Interactieve versie, zet JavaScript aan. Hieronder staat de statische vergelijking.
| Punt | PostNL-plugin | Sendcloud | MyParcel |
|---|---|---|---|
| Vervoerders | alleen PostNL | meerdere carriers | meerdere carriers |
| Kosten | gratis plugin (PostNL-contract apart) | gratis basis, daarna betaald | per label of abonnement |
| Setup | simpel, één koppeling | uitgebreid dashboard | shipping-dashboard |
| Retouren | basaal | sterk | sterk |
| Past bij | alleen PostNL, klein tot middel volume | meerdere vervoerders of hoger volume | meerdere vervoerders, veel retouren |
Het werkt ook op andere shops
Voor Shopify werkt PostNL via een eigen Shopify-app, met dezelfde structuur. Voor een custom Laravel- of HubSpot-shop bouw je de koppeling via de PostNL REST API. Dat is werk dat ik regelmatig doe; de API is goed gedocumenteerd en de logica blijft hetzelfde: order ophalen, label aanvragen, track-and-trace terugschrijven, klant informeren.
Wat verschilt is de plek waar je de knop “Label aanmaken” zet en hoe je de label-PDF beheert. In WooCommerce zit dat in de order-zijbalk. In een eigen systeem zit het op de plek die voor jouw flow logisch is.
Voor meer over webshop-optimalisatie zie webshop optimalisatie. Het bijbehorende artikel over BTW en verzending binnen Europa staat onder WooCommerce btw en OSS instellen.



