Connect Your Store to a Delivery Platform: A Step-by-Step Setup
Connecting a Shopify or WooCommerce store to a multi-courier platform takes an afternoon, and most of that afternoon is preparation you have to do regardless. The integration is the easy part. Getting weights and dimensions onto every SKU first is what decides whether it works.
Booking parcels by hand does not scale, and the point at which it stops working is earlier than most sellers expect — somewhere around fifteen orders a day, or the first time you copy an address wrong at 11pm. Connecting your store to a multi-courier shipping platform fixes it: rates appear at checkout, labels generate from the order, and tracking goes to the customer without anyone typing anything. The integration itself takes under an hour. The preparation takes the afternoon — and skipping the preparation is the only way this goes badly.
Before you connect anything
Work through this list first. Every item on it will otherwise fail after you go live, when it is visible to customers.
| Check | Why it matters | Done when |
|---|---|---|
| Weight on every SKU | Live rates cannot be quoted without it. A missing weight usually defaults to zero and quotes a nonsense price. | No product has a blank or zero weight |
| Dimensions on every SKU | Couriers bill on the greater of actual and volumetric weight — see volumetric weight | Packed dimensions recorded, not product dimensions |
| One pickup address, correct and complete | It is on every label and every rate calculation | Postcode verified, contact number reachable |
| Business details as registered | Needed for the courier account and for your invoices | Matches your SSM registration |
| Decide your rate strategy | You cannot configure what you have not decided | See the next section |
| A test product worth RM1 | You will need to place a real order end to end | Created, hidden from collections |
"Packed dimensions, not product dimensions" deserves emphasis. The courier measures the box you hand over, including padding and tape. A 20 cm product in a 26 cm box quotes as 20 cm and bills as 26 cm, and you will not know why the invoices do not match the checkout.
Step 1 — Decide how shipping is priced at checkout
Three options, and you can mix them:
- Live rates. The platform quotes real courier prices for the actual basket and destination. Most accurate, never undercharges, and the number moves — which some customers dislike.
- Flat rate. One price, or a small table by zone (Peninsular / Sabah / Sarawak). Predictable and simple. You will overcharge some orders and undercharge others; the aim is that it averages out, which requires checking the average rather than guessing it.
- Free above a threshold. Best used on top of one of the above. Set the threshold so the worst realistic parcel still leaves margin, not the average one — bulky items are what break this.
Whichever you choose, the amount shown at checkout must be the amount charged. Under the Consumer Protection (Electronic Trade Transactions) Regulations 2024 the full price payable has to be disclosed before purchase, and beyond compliance it is the single most common cause of abandoned carts. Our checkout guide covers presentation.
Step 2 — Install the connection
On Shopify: install the shipping platform's app from the Shopify App Store, authorise it when prompted, then complete the platform's own onboarding — business details, pickup address, and which couriers you want enabled. If you are using live rates, check that your Shopify plan supports carrier-calculated shipping at checkout; on some plans it is a paid add-on or requires annual billing. Find that out now, not at go-live.
On WooCommerce: install and activate the platform's plugin, then paste in the API key from your platform account. Configure it under WooCommerce → Settings → Shipping, where you will add the platform as a shipping method inside your shipping zone. If your store has multiple zones (Peninsular, East Malaysia, international), add it to each one you intend to serve.
If there is no plugin for your platform, most shipping platforms still support CSV order upload and bulk label printing. That is less elegant but removes the same manual retyping, and it is a perfectly reasonable stopping point for a small store.
Menu names and screen layouts change between versions — treat the labels above as landmarks rather than exact text.
Step 3 — Choose and order your couriers
Enable more than one, and set the priority deliberately. The common configurations:
- Cheapest first for price-sensitive categories where transit time is not a promise.
- Fastest first where speed is the selling point.
- A preferred courier by destination — many sellers use one carrier for Peninsular Malaysia and a different one for Sabah and Sarawak, because coverage genuinely differs.
Do not enable a courier you have not tested to East Malaysia if you sell there. Our courier comparison guide covers what separates them.
Step 4 — Map order statuses so tracking flows
The integration is only half-installed until statuses sync both ways:
- Store order marked paid → available to the platform for booking.
- Platform generates a consignment note → written back to the store order.
- Store marks the order fulfilled and emails tracking to the customer automatically.
- Courier status updates → visible on the order.
That last flow is what stops "where is my parcel?" messages. If you have to copy tracking numbers by hand, the integration is not finished — see reducing failed deliveries for why proactive tracking matters so much.
Step 5 — Test with one real order, end to end
Do not skip this and do not test with a fake address.
- Buy your RM1 test product yourself, to a real address you can receive at.
- Confirm the checkout rate looks sane for that basket and destination.
- Book the shipment from the platform and check the label: correct sender, correct recipient, correct weight.
- Confirm the tracking number appears on the store order and that the customer email actually arrives.
- Let it deliver. Then compare the amount you were billed against the amount quoted at checkout.
Step 5 is the one everybody skips and the one that finds the problem — almost always a weight or dimension that was wrong in the catalogue.
Step 6 — Go live, then watch three numbers
For the first month, check weekly:
- Quoted vs billed shipping. A persistent gap means catalogue data, not courier error.
- Checkout abandonment at the shipping step. A jump means your rate presentation is scaring people.
- Failed first-attempt deliveries. Should fall once automated tracking notifications start going out.
Common failure modes
| Symptom | Almost always |
|---|---|
| "No shipping rates available" at checkout | A product with no weight, or a destination outside your configured shipping zone |
| Rates far too high | Dimensions entered in millimetres instead of centimetres, or product dimensions used instead of packed |
| Rates far too low, invoices higher | Weights left at a default, or volumetric weight not accounted for |
| Labels print with the wrong sender | Pickup address configured in the store but not in the platform account |
| Tracking never reaches customers | Store notification email disabled, or fulfilment status not syncing back |
Frequently asked questions
Do I need a separate account with each courier?
Not when you go through an aggregator — that is much of the point. You hold one account and it books across the couriers it has agreements with. You can still hold your own direct courier accounts alongside it if you have negotiated rates worth keeping.
Will this work with Shopee and Lazada orders too?
Marketplace orders are normally fulfilled through the marketplace's own logistics flow, and mixing that with your own can create double-booking. Keep marketplace fulfilment on the marketplace and use the platform for your own store, unless you are running a channel-sync tool that manages both. See managing marketplaces.
Can I still print labels if my internet or the platform is down?
Ask before you need to know. Most platforms allow label downloads as PDFs that you can reprint, but the booking itself needs connectivity. For a busy dispatch day, generating labels in a batch in the morning is more robust than one at a time through the day.
How accurate are live rates, really?
As accurate as your catalogue. Live rates come from the courier, so the rate for a given weight and destination is right; what goes wrong is the weight and destination your store sends. Fix the catalogue and live rates are reliable.
Is a flat rate ever better than live rates?
Yes — for a narrow catalogue where every parcel is a similar size and weight, a flat rate is simpler for the customer and roughly as accurate for you. It gets dangerous when your catalogue is mixed, because the bulky items quietly subsidise nothing and cost everything.
Sources: price-disclosure obligation under the Consumer Protection (Electronic Trade Transactions) Regulations 2024 (in force 25 December 2024), administered by KPDN. Platform menu paths, plan requirements for carrier-calculated shipping, and available integrations change between software versions and vendor plans — the steps above describe the shape of the task, and you should confirm exact labels and plan entitlements against your store platform's current documentation before you begin.
Get live courier rates by postcode and weight, powered by Delyva — with an indicative estimate as backup.