← field notes
case study

Shopify → 3PL Fulfilment Automation: From 6-Hour Lag to 10 Minutes

Mar 31, 2026 6 min read

A DTC skincare brand was manually copy-pasting every Shopify order into their 3PL portal — 500 times a month. Here's the n8n pipeline we built to make that a problem of the past.

The problem

James runs a direct-to-consumer skincare brand doing around 500 orders a month through Shopify. Their 3PL handles warehousing and shipping. Sounds like a clean setup — until you ask how orders get from Shopify to the 3PL.

The answer: someone logs into Shopify, copies the order details, logs into the 3PL portal, and pastes them in. Manually. For every order. That's 3–4 hours of ops work every single day.

"We have a 3PL with a perfectly good API," their ops lead told us. "And we're typing addresses into a web form fifteen times a day." They'd had two fulfilment errors in the previous month from typos. A wrong digit in a postcode. One order shipped to a completely different city.

Nobody had prioritised the fix because the business was growing fast and there were always more urgent fires. Classic ops debt.

What we built

A five-step n8n pipeline that handles the full order handoff — trigger to tracking number — with zero human steps for routine orders:

shopify → 3pl fulfilment pipeline
🛒
Shopify Webhook
orders/paid
──▶
🔄
SKU Mapper
Sheets lookup
──▶
🚦
Validator
Address + stock
──▶
📦
3PL API
POST fulfilment
──▶
🔁
Tracking Sync
Write to Shopify
↳ order paid → 3PL receives it in <10 min → tracking written back to Shopify → Slack alert only on exceptions

The SKU mapper is a Google Sheet that translates Shopify variant IDs to 3PL warehouse codes. The ops team owns it — when new products launch, they add a row. No code involved.

The validator checks three things before the 3PL API call: does the SKU exist in the warehouse catalog, does the address pass a basic format check, is the item flagged as in stock. Anything that fails routes to a Slack channel with a link to the order. An exception takes about 5 minutes to handle manually. Everything else is invisible.

Tracking sync is a separate scheduled workflow that polls the 3PL every two hours, grabs new tracking numbers, and writes them to the Shopify order. That fires Shopify's native shipping email — so customers get their tracking notification automatically, earlier than before.

The details that matter

A few non-obvious pieces we had to build:

None of these are exotic problems, but they're invisible until you run real orders. That's why we always test with live data in staging before flipping to production.

The stack

n8n as the workflow engine, running on a $12/month VPS. Google Sheets for the SKU and HS code mappings — ops-editable, no engineering required. Shopify webhooks as the trigger. The 3PL's REST API as the destination. Slack for exception alerts.

No new software for the team to learn. No monthly platform fee per order. The brand got the full workflow export, the Sheets templates, and a Loom walkthrough. Self-sufficient from day one.

Build time: 4 days. The 3PL's API documentation was patchy, which cost us half a day. Everything else was clean.

The result

after 6 weeks
Fulfilment lag: 6 hours average → under 10 minutes
3–4 hours/day of manual ops work eliminated
Fulfilment error rate dropped to zero for automated orders
~3% of orders flagged as exceptions; each resolved in under 5 minutes
"Where's my order" support tickets down noticeably — tracking emails go out same day now

The ops lead put it well: "I only see a Slack message when something actually needs me. I don't think about orders anymore." That's what a well-built automation should feel like — not a dashboard to monitor, just a problem that stopped existing.

Still manually pushing orders to your 3PL? We can probably fix that in a week.

[ let's talk ]

home work pricing blog about