Design-partner runbook — Linnworks ↔ Abicart stock
Operate a paying (or pilot) commerce client through shadow → preview → cutover on the Ready golden path.
Goal
Prove safe stock sync without wiping inventory. Success = client ops signs the preview, cutover completes, and the first reconcile cycle has no unexplained wipe risk.
Prep
- Create a dedicated PullPush tenant for the partner (never share with another client).
- Collect:
- Linnworks app credentials + location UUID (web stock warehouse — not POS)
- Abicart API URL, key, shop id
- Named cutover approver
- Confirm
HG_READONLY/ tenant readonly gates are off for this pilot tenant only when ready to cut over (keep on during shadow).
Run (MCP or dashboard)
1. connection.create + connection.test (Linnworks SOURCE)
2. connection.create + connection.test (Abicart DESTINATION)
3. flow.create stocklevel Linnworks → Abicart (must start SHADOW)
4. sync.preview <flowId>
5. sync unmatched / explain drift
6. Fix catalog issues; re-preview
7. Client sign-off comment on the preview report
8. shadow.cutover <flowId>
9. sync.reconcile + ops dead-letter review
Pass criteria
| Check | Pass |
|---|---|
| Preview reviewed | Human + client |
| Unknown stock | Only UNKNOWN_STOCK_SKIP / never delivered as 0 |
| Draft/hidden Abicart | ARTICLE_NOT_SELLABLE skips |
| Unmatched SKUs | Documented decision per SKU |
| Post-cutover DLQ | Empty or every residual explained |
| Reconcile | First cycle completes without mass wipe |
Capture for the case study
- Time from connect → signed preview
- SKU match rate / unmatched count
- Oversells avoided (if any near-misses in shadow)
- Flow + connection IDs (internal)
If MCP / production is offline
Use local worker preview against a seeded tenant:
# .env.local loaded
pnpm --filter @pullpush/worker exec tsx src/scripts/preview.ts <flowId>
Keep the partner in shadow until a live preview is signed.
Reference run — HG Linnworks → Abicart (2026-08-09)
Production tenant hg, flow cmqlmroq2001flroy1zl9bcyn (ACTIVE / LIVE, stock.changed + reconcile):
| Metric | Result |
|---|---|
| Preview total | 280 |
| Equal | 273 (~97.5%) |
| Changed | 3 (BC-WX4018-150, BC-WX5814-400, HG-1106) |
| Missing in dest | 0 new |
| Unmatched (dest-only) | 4 (BC-IA8002, BC-IA8003, BC-SO1017-5-12, BC-WX6010-gra) — 2 have parent candidates |
| Flow success rate | 100% (4682 deliveries) |
| Last poll | OK — 50 events |
Interpretation: Golden path is production-proven. Remaining work is catalog hygiene (channel SKUs for unmatched variants), not runtime safety. Do not treat unmatched zeros as a reason to push inventing quantities.