ShipStation & fulfilment¶
ShipStation is the fulfilment brain. WooCommerce tells it an order happened; ShipStation prints labels, picks carriers, and tells Woo the tracking number.
Current wiring¶
sequenceDiagram
participant PWA
participant Woo as WooCommerce
participant SS as ShipStation
participant Carrier as Royal Mail / DPD
PWA->>Woo: POST /checkout (new order, status=processing)
Woo->>SS: webhook: new order
SS->>SS: Assign carrier, print label
SS->>Carrier: dispatch
SS->>Woo: webhook: shipped + tracking number
Woo->>PWA: order updated (read via /wc/v3/orders/{id})
PWA->>Customer: "Your parcel is on its way" + tracking link
Under the hood: the ShipStation for WooCommerce plugin handles the two-way sync. No code in the PWA touches ShipStation directly.
Custom order statuses¶
The Custom Order Status Manager plugin adds four statuses that matter for the local-delivery flow:
| Status | When set | By whom |
|---|---|---|
wc-driver-assigned |
Driver picked up on the Local Delivery Drivers plugin's queue | Ops / auto-assignment |
wc-out-for-delivery |
Driver starts the delivery trip | Driver PWA (Phase 3) |
wc-fruit-plug-delivery |
In-house same-day delivery (NW10 area) | Ops |
wc-customer-collection |
Order ready for pickup at NW10 6EU | Ops |
The PWA reads the status on /account/orders/{id} and renders a human-friendly timeline.
What stays automated¶
- ShipStation tracking-number push → Woo → PWA order-detail page. No manual copy.
- WooCommerce Shipment Tracking plugin exposes the tracking URL in the REST response; PWA renders a "Track with Royal Mail" button.
What we still need to build¶
| Feature | Phase | Who does it |
|---|---|---|
| Driver PWA (accept / mark delivered) | 3 | Frontend — new /app/driver/ route |
| Delivery-day SMS via Twilio | 2 | fruitplug-api cron, triggered by status change |
| Delivery photo proof | 3 | Driver PWA uploads to Cloudinary, attaches to order meta |
Ops runbook¶
Label didn't print / shipment stuck in processing:
- Check ShipStation dashboard — is the order there?
- If not, re-sync in Woo → ShipStation → Settings → "Re-send orders".
- If yes and no label, check ShipStation connection:
/wc-admin?page=wc-settings&tab=shipstation.
Customer says tracking link is broken:
Tracking numbers come from ShipStation. If the tracking URL in the order fails, it usually means ShipStation hasn't pushed the shipment status back yet. Wait 30 min or contact ShipStation support.