Integrations

WooCommerce shipping label automation: Sendcloud, DHL, Royal Mail

How to stop copying addresses into carrier portals: the three ways to automate labels in WooCommerce, the data that has to flow, and the errors that break it.

By RaaoPublished 8 min read

Short answer: how does WooCommerce shipping label automation work?

WooCommerce shipping label automation means the label is created from the order data, the tracking number is written back to the order and the customer is notified, without anyone retyping an address into a carrier portal. You get there in one of three ways: an official carrier plugin (Royal Mail Click & Drop, PostNL, DHL), a multi-carrier platform such as Sendcloud, or a direct integration with the carrier's API.

For a shop with one carrier and simple parcels, a plugin is usually enough. Once you ship with several carriers, split orders across warehouses or need returns and cash-on-delivery rules, a platform or a custom integration pays for itself in packing time.

Why does manual label creation break as you grow?

At 10 orders a day, copying addresses into a carrier portal costs perhaps half an hour. At 100 orders a day it is a full-time job, and the errors scale with it: a wrong postcode, a missing house number or a parcel booked as 1 kg when it weighs 7 kg. Each one turns into a failed delivery, a surcharge or a support ticket.

The second problem is visibility. If the tracking number lives in the carrier portal and not in WooCommerce, your support team cannot answer "where is my order?" without logging into another system. Your ERP, if you have one, never learns that the order shipped.

The third is peak season. Black Friday is exactly when the warehouse has the least time and the most temporary staff. An automated flow is the only way to keep cut-off times when order volume triples.

Which option fits: plugin, Sendcloud or a direct API?

Be honest about your volume and the number of carriers before you pay for anything.

Option Best for Strengths Limits
Official carrier plugin (e.g. PostNL for WooCommerce, Royal Mail Click & Drop channel) One main carrier, domestic parcels Free or cheap, quick setup, maintained by the carrier One carrier per plugin; limited rules; plugin quality varies
Multi-carrier platform (Sendcloud, ShipStation) Two or more carriers, cross-border, returns Rules per weight, country or product; return portal; branded tracking Monthly fee; another system in the chain; carrier contract options differ
Direct carrier API (custom) Custom stores, ERP-driven warehouses, unusual rules Full control: split shipments, multi-warehouse, ERP shipment sync Development and maintenance cost; you own the error handling

A few things worth knowing about the common UK and EU options:

  • Royal Mail Click & Drop can connect to a WooCommerce store as a channel, and orders in the Processing status are imported on a schedule rather than instantly. If you also run another app that sends orders to Click & Drop, switch one off; two integrations create duplicate orders. See the Royal Mail help centre.
  • PostNL for WooCommerce is published by PostNL itself on WordPress.org and needs an API key from the Mijn PostNL business portal.
  • Sendcloud connects WooCommerce to many carriers at once, including DHL, DPD, PostNL and Royal Mail, with shipping rules and a return portal. You can use Sendcloud's rates or connect your own carrier contracts, depending on the carrier.
  • DHL runs several separate businesses (Express, eCommerce, Parcel in individual countries), each with its own API and contract. Check which DHL entity you have a contract with before choosing a plugin; a plugin for DHL Parcel Germany will not book DHL Express shipments.

If your store is fully custom or your stock lives in an ERP, the plugin route often stops working. That is when a direct integration is worth it. We cover the ERP side in our guide to WooCommerce Business Central integration, and our ecommerce page lists the couriers and ERPs we connect.

What syncs, which direction, how often

Whichever option you choose, the same data has to move. This table is the checklist we use when we scope a carrier integration.

Data Direction When / how often Notes
Shipping rates and services Carrier → store Cached, refreshed daily Live rate calls at checkout slow the page; cache them and fall back to a flat rate if the API is down
Pickup points and lockers Carrier → store Daily list, or map widget at checkout Store the point ID on the order, not only the address
Order and recipient data Store → carrier When the order reaches Processing (or after picking) Name, address, phone, email, weight, dimensions, cash-on-delivery amount
Label (PDF or ZPL) Carrier → store Immediately after creation A6 PDF for desktop printers, ZPL for thermal printers
Tracking number and URL Carrier → store Immediately Saved to order meta and the shipped email
Delivery status Carrier → store Webhook, or polling every 30–60 minutes Delivered, failed attempt, returned to sender
Shipment confirmation Store → ERP When the label is created or handed over So the ERP posts the shipment and the invoice
Returns Customer → carrier → store On request Return label, then a status update when the parcel is scanned

Step by step: setting up automated labels in WooCommerce

1. Clean the data before you connect anything

Every product needs a weight, and bulky items need dimensions. Go to Products, filter by product type and check the Shipping tab, or export to CSV and look for empty weight columns. A label booked at 0 kg is either rejected or surcharged later.

Check your address fields. UK addresses need a valid postcode; Dutch and German carriers expect the house number separately or at least present in the first address line. Many failed labels are simply "house number missing".

2. Pick the trigger

Decide when a label is created. Common choices are:

  • automatically when the order moves to Processing (paid orders only);
  • in bulk from the order list, after picking;
  • from the warehouse scanner, when the parcel is packed and weighed.

Automatic creation on payment is fast, but it books labels for orders that may still be cancelled. Bulk creation after picking is the safest default for most shops.

3. Write the tracking number back

WooCommerce has long had no native tracking field, so plugins store it as order meta or order notes. Since version 10.2, core offers an opt-in Order Fulfillments feature with carrier and tracking number, still in beta, so check whether your carrier plugin uses it. Make sure the tracking number appears in the Completed email, in the customer's account page and in your ERP. If you use the WooCommerce Shipment Tracking extension or a carrier plugin, check that only one of them sends the shipped email, otherwise customers receive two.

4. Handle cash on delivery and insurance

If you offer cash on delivery, the amount sent to the carrier must match the order total in the currency the carrier expects. Partial refunds before shipping are the classic trap: the order total changes, the label still carries the old amount.

5. Test the unhappy paths

Book a label with a missing house number, an unknown postcode and an overweight parcel. Note what the carrier API returns and make sure the error shows on the order, not only in a log file. Typical messages you will see are variations of "invalid postcode", "street or house number missing", "weight exceeds service maximum" and HTTP 401 when an API key has expired.

6. Watch the background jobs

Most label plugins run through WooCommerce's Action Scheduler. Check WooCommerce → Status → Scheduled Actions for failed or pending actions after launch. A stuck queue is the most common reason labels "suddenly" stop appearing.

Pre-launch checklist

  • Every product has a weight; bulky products have dimensions
  • Address fields validated at checkout (postcode format, house number, phone with country code)
  • Pickup-point ID stored on the order, not just the address
  • Label trigger agreed with the warehouse (on payment, bulk or on packing)
  • Label format matches the printer (A6 PDF or ZPL)
  • Tracking number appears in the shipped email and the customer account
  • Only one plugin sends the shipped email
  • Cash-on-delivery amount recalculated after edits or partial refunds
  • Carrier errors visible on the order and emailed to the warehouse
  • Failed Scheduled Actions monitored after launch
  • Shipment confirmation sent to the ERP, if you have one
  • Return label flow tested end to end

What does shipping label automation cost?

There are two separate costs: what the carrier charges per parcel and what it costs to connect.

Per-parcel prices depend entirely on your contract and volume. As a rough guide for small UK shops, a tracked 48-hour parcel is often in the region of £3–£5 on a business account; treat this as an estimate and check current rates with the carrier. Multi-carrier platforms charge a monthly fee on top, ranging from a free entry plan to several hundred euros a month for high volumes and advanced rules. Check their current pricing pages.

Connecting is a one-off cost:

Scope Typical effort Estimated cost
Configure an official plugin or Sendcloud 1–2 days €300–€800
Direct API integration with one carrier (labels, tracking, errors) 1–3 weeks €800–€3,000
Multi-warehouse, split shipments, ERP shipment sync Part of a larger project Fixed quote after discovery

These ranges are estimates based on typical projects, not a price list. At Raao, the Starter package from €1,900 includes one courier integration and Launch from €3,900 includes two. Enterprise projects add ERP shipment sync, multi-warehouse rules and marketplaces. We integrate any carrier or platform with an API. If you are unsure which route fits your volume, a free 30-minute discovery call is usually enough to decide.

How we did it for the Miele partner store

The Miele partner store we built shows why shipping is never just a label. Stock, orders and shipments all had to agree with the ERP:

  • Two-way Business Central integration for products, stock per location, orders, invoices and shipments, so the warehouse and the store see the same status.
  • Delivery estimates for out-of-stock items via Tradeplace, so customers see a realistic date before they pay.
  • Omnichannel assisted selling in store, with barcode scanning and payment links, feeding the same order flow.
  • Customer 360 profiles with around 15 automated lifecycle email flows, so customer messages run from one place rather than from each plugin.

The lesson: decide where the truth about a shipment lives (store, ERP or carrier) before you pick a plugin. Everything else follows from that.

woocommerceshippinglabelsintegrations

Frequently asked questions

Keep reading

Let us look at your setup together

Book a free 30-minute call and leave with a clear next step and a realistic price range.

Prefer writing? Send us a brief
  • 30 minutes, video call, no obligation
  • Talk directly with the engineers who would build it
  • Honest view on scope, timeline and budget

The calendar is provided by Microsoft Bookings, which may set its own cookies.