Skip to content

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:

  1. Check ShipStation dashboard — is the order there?
  2. If not, re-sync in Woo → ShipStation → Settings → "Re-send orders".
  3. 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.