OrderOpsBETA

Field notesProduct

The sixty-second order

The homepage says an order placed on Shopify becomes a printed label and a tracking email inside a minute. People ask if that's marketing. It's a pipeline, and every station on it is boring on purpose. Here's the line with the clock running.

T+0 — the webhook lands

When a customer pays, Shopify fires orders/create at us. We verify the HMAC signature, check we haven't seen this delivery before — every webhook is deduplicated per delivery, so Shopify's retries can't double-ingest an order — and write it down. If you run several stores in one organisation, the order drops into the same queue as everything else, tagged with its store name. Elapsed: about a second.

T+15 — the pack bench

An operator opens the order at the pack bench. If the variant has dimensions and weight on file, the first box row is already filled in; products flagged as shipping in their own box expand to one box per unit. As the dimensions settle, live rates come back from your connected carriers — quotes refresh on a 500 ms debounce, so nudging a height by a centimetre doesn't spam the carrier. Pick the service. Enter prints and advances to the next order; the bench shortcuts have their own page.

T+25 — the label, without a dialog

Enter buys the label from the carrier. The browser fetches the PDF and hands it to the print agent listening on the Mac's loopback interface — no print dialog, no scale-to-fit checkbox. The Zebra just cuts. If the agent is unreachable, you get a view-label link instead of a hung print job.

T+60 — the email

A job runs every minute, finds new shipments, and pushes the fulfilment and tracking number to Shopify. Shopify sends the customer its normal tracking email. This is the slowest station on the line: worst case, the email trails the label by about a minute. If the push fails, the failure is logged on the shipment for an operator to retry — it doesn't vanish.

T+0s     orders/create — HMAC verified, deduped
T+1s     order in the queue, store-tagged
T+15s    pack bench open, box pre-filled from variant dims
T+16s    live rates back (500 ms debounce)
T+24s    ↵  label purchased, handed to the print agent
T+26s    Zebra cuts
T+≤60s   cron pushes fulfilment → Shopify emails tracking

That clock assumes the happy path: stock on hand, a clean address (we validate before printing and flag the ambiguous ones), an operator at the bench, and a carrier API having a good day. Most orders get the happy path. The ones that don't fail loudly — which is the part we actually spent the time on.

The sixty-second order — OrderOps