Skip to main content
Card class: HeroCategory: Ecommerce Platform
Paid orders with fulfillment_status != fulfilled. The number ops should clear by EOD.

At a glance

A live count of paid orders whose displayFulfillmentStatus is anything other than FULFILLED. The work-queue number, what ops needs to clear before going home.
What it countsCOUNT(orders WHERE displayFinancialStatus IN ('PAID', 'PARTIALLY_PAID', 'AUTHORIZED') AND displayFulfillmentStatus != 'FULFILLED'). Each unfulfilled paid order is 1, regardless of order value.
Statuses included in the countOPEN, UNFULFILLED, IN_PROGRESS, PARTIALLY_FULFILLED, PENDING_FULFILLMENT, SCHEDULED. Each represents a different operational stage but all are “not yet shipped”.
RESTOCKED ordersExcluded. Restocked = customer cancelled and stock returned, no longer needs fulfilling.
VOIDED ordersExcluded. Voided = payment never captured, no goods owed.
Pending-payment ordersExcluded. Orders in PENDING or EXPIRED financial status are not paid, so there’s no fulfilment commitment yet.
VAT / tax treatmentNot applicable (count metric, no money).
ShippingNot applicable (count metric).
DiscountsNot applicable (count metric).
RefundsA refunded order can still be unfulfilled (paid → refunded → still in pick-list because nobody pulled it). The card includes these. Use Refund Rate for the post-refund view.
CurrencyMulti-currency safe (count metric).
Channels / sourcesNot filtered. Online Store, POS (which usually flips to fulfilled instantly at the till and so rarely lands here), Buy Button, B2B, marketplace channels all contribute. B2B orders skewed by SCHEDULED status often dominate this count for hybrid brands.
Time windowRT (real-time, computed from the latest indexed order snapshot, not bounded to a date window)
Alert trigger>10, when more than 10 paid orders sit unfulfilled at any moment, the unfulfilled_count sentiment key trips. The threshold is configurable per workspace.
Rolesowner, operations

Calculation

Calculated automatically from your Shopify data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A UK subscription-box brand (monthly snack box) on Shopify Plus. Reading taken at 09:15 GMT on 12 Apr 26 (Monday morning).
StatusOrder countNote
OPEN (paid, not yet picked)14Friday-evening + weekend orders, no warehouse activity Sat/Sun
IN_PROGRESS (pick-and-pack started)38Monday morning team has started early on Friday’s batch
PARTIALLY_FULFILLED (some items shipped, others backordered)6Customers waiting for the missing snack SKU
SCHEDULED (subscription billings due to ship later this week)92The bulk-fulfilment batch for Wed-Thu shipping
PENDING_FULFILLMENT (3PL queue, awaiting label print)4Yesterday evening’s straggler orders
Total Unfulfilled (this card)154
The card reads 154 at 09:15. The >10 alert has been tripped since Friday afternoon. Six things to notice:
  1. The headline (154) overstates the operational fire. 92 of those are scheduled subscription orders, intentionally batched for Wed/Thu dispatch. Filtering them out: real urgent backlog is 62 orders (OPEN + IN_PROGRESS + PARTIALLY_FULFILLED + PENDING_FULFILLMENT).
  2. The 14 OPEN is the bottleneck. These orders haven’t been touched since Friday, that’s the number the warehouse manager needs to break before lunch. Each hour they sit unfulfilled, customer-service tickets accumulate.
  3. The 6 PARTIALLY_FULFILLED is a different problem. Pick is done, the rest is waiting on stock. Cross-reference Products with Zero/Negative Stock, the missing SKU is almost certainly there.
  4. IN_PROGRESS (38) is healthy. It means the team is actively working. A high IN_PROGRESS against a low OPEN is the operational state to be in. Worry when IN_PROGRESS is low and OPEN is climbing.
  5. The Monday-morning effect is structural. Most subscription brands and DTC merchants will see this card spike on Monday at 09:00 simply because nobody picked Sat/Sun. The card’s shape across the week is more informative than the absolute count, look for the OPEN bucket clearing by Tuesday EOD.
  6. B2B SCHEDULED orders skew the headline. If the merchant ran B2B alongside the subscription box, scheduled wholesale shipments would dominate. The card doesn’t auto-segment by tag today; the operationally useful filter is “scheduled = false” which Shopify Admin offers in Orders → More filters → Fulfillment status.

Sibling cards merchants should reference together

Unfulfilled Orders is the immediate work queue. Pair these to triage and prevent:
CardWhy pair it with Unfulfilled Orders
Fulfillment RateThis card is the live count, fulfillment rate is the trend. A climbing unfulfilled count predicts a fulfillment-rate dip in 3 to 7 days.
Fulfillment BreakdownSplits the 154 across OPEN / IN_PROGRESS / PARTIALLY / SCHEDULED. Tells you which bucket needs attention; a high OPEN is more urgent than a high SCHEDULED.
Products with Zero/Negative StockIf PARTIALLY_FULFILLED orders are climbing, the missing line is usually OOS. Pair to surface the bottleneck SKU.
Cancellation RateUnfulfilled orders sitting >5 days breed cancellations. A persistent unfulfilled spike + rising cancellations is a backlog-induced churn signal.
Refund RateWhen orders get unfulfilled past customer-tolerance, refund-and-cancel becomes the customer-service fix. Watch refund rate climb 3 to 7 days after an unfulfilled-orders spike.
Shipping MethodsExpress-shipping orders sitting in OPEN are the highest-priority customer-trust risk. Filter the unfulfilled list by shippingLines.title containing “Express” or “Next Day” first.
Revenue at Risk (live incident)When ops outage drives this number above 50 with an open Datadog/NewRelic incident, the cross-channel card surfaces £/min impact.

Reconciling against the vendor’s own dashboard

Where to look in Shopify Admin: Orders → filter Fulfillment status: Unfulfilled, Partial, Scheduled, On hold. The count of matching rows should match this card to within sync-lag tolerance. The Shopify Admin home screen also shows an Orders to fulfill widget which is the closest one-tile view. Other Shopify Admin views that look like the same number but aren’t:
  • Home → “Orders to fulfill” widget: this is the same definition (paid + unfulfilled) but Shopify excludes SCHEDULED from the widget by default. The widget will read lower than this card on subscription / B2B-heavy stores.
  • Orders → Filter “Fulfillment status: Unfulfilled” only: misses partials and scheduled. Lower count.
  • Apps like ShipStation backlog: shows orders that have arrived in the 3PL queue but not yet shipped. Often lags Shopify by 5 to 30 minutes due to ShipStation pull cadence.
  • Settings → Locations → Inventory at this location: shows reserved inventory not unfulfilled orders. Different concept.
Why our number may legitimately differ from Shopify Admin:
ReasonDirectionWhy
Sync lagEither, transientOrder webhooks fire within seconds; the OpenSearch index can lag 5 to 15 minutes during heavy writes (sale launches, viral moments). The card is a 5-min-lagged view of Admin.
Status inclusionTheirs lowerShopify’s Orders to fulfill widget defaults to excluding SCHEDULED. This card includes scheduled by default. Configurable per workspace in Nerve Centre → Settings.
Time zoneNegligibleThis is a real-time count, not a windowed metric, so time zone doesn’t affect it the way it does for date-bucketed cards.
Multi-locationEitherA single order with line items fulfilled from multiple locations is PARTIALLY_FULFILLED until the LAST location ships. The card counts it as 1 unfulfilled order; Shopify Admin per-location views may double-count.
Test ordersOurs slightly higherShopify Admin can hide test orders. Vortex IQ does not yet filter Order.test.
Pre-orders / draft ordersExcluded from bothDraft orders aren’t in the Order index until completed. Pre-orders are usually SCHEDULED and counted; if a merchant uses an app that creates a custom status, behaviour varies.
Cross-connector reconciliation: Unfulfilled-orders state is Shopify-internal. The closest cross-connector signal is fulfilment-partner monitoring:
CardExpected relationshipWhat causes legitimate divergence
datadog.dd_incident_countIndirect leading indicator, when 3PL or warehouse systems alert in Datadog, unfulfilled count climbs within hoursOnly useful if the merchant has connected fulfilment infrastructure to Datadog.
newrelic.nr_incident_countSame as Datadog, different vendorSame caveat.
shopify_xc_revenue_at_risk_from_incidentComposite, surfaces £/min of orders sitting unfulfilled during an incidentUse during ops outages.

Known limitations / merchant FAQs

Why does this card include scheduled orders? Because they’re paid and not yet fulfilled, that’s the literal definition. But operationally, scheduled orders (subscription billings, B2B batch shipments, pre-orders) are intentional: the merchant doesn’t want to ship them today. To exclude scheduled, change the workspace setting in Nerve Centre → Settings → Unfulfilled Orders to set include_scheduled: false. The default is true to match Shopify’s order-list raw count. My count climbs every Friday and clears every Tuesday. Is that a problem? No, that’s healthy. Most merchants don’t pick / pack on weekends, so Friday-Sunday orders accumulate in OPEN until Monday morning when the warehouse team starts. The Tuesday EOD clear is the operational SLA. If the count fails to clear by Tuesday EOD, that IS the alarm signal, the standard Mon-Tue accumulation isn’t. Why is this card different from my Shopify “Orders to fulfill” widget? Two reasons. (1) Sync lag: the card is 5 to 15 minutes behind real-time because it reads a periodically-indexed snapshot, not Shopify’s live Admin DB. (2) Scheduled-orders inclusion: the Shopify widget excludes SCHEDULED by default; this card includes them. The Shopify Admin order-list with full filters applied is the closest like-for-like. Does this include orders pending payment? No. Only orders with displayFinancialStatus IN ('PAID', 'PARTIALLY_PAID', 'AUTHORIZED') count. Pending and expired orders are excluded because the goods aren’t owed until payment is captured. This means the card represents “orders we have a fulfilment commitment on”, not “all open orders”. My subscription store, are recurring billings counted? Yes, each recurring billing creates a new order with its own fulfilment lifecycle. Subscription brands typically see this card balloon on the bulk-billing day (1st of month, 15th of month, etc) then drain over 5 to 7 days as the warehouse ships the batch. The Mon-Tue weekly pattern overlays the monthly bulk-billing pattern; both are healthy. B2B / wholesale orders, why do they dominate the count? B2B orders are usually marked SCHEDULED because wholesale buyers schedule shipments weeks in advance. A handful of large B2B orders can swamp the count even when the DTC operation is running cleanly. Filter by tag Wholesale in Shopify Admin to see the DTC-only view, or set include_scheduled: false in Vortex IQ workspace settings. The count alerts at >10. Is that the right threshold? For DTC brands doing 100 to 500 orders / day, yes, an unfulfilled count consistently above 10 means orders are sitting >24 hours which is poor SLA. For higher-volume merchants (5,000+ orders / day), the threshold should be 50 to 100. For subscription stores on bulk-shipping days, the threshold should temporarily lift to several hundred. Configurable in Nerve Centre → Alerts. Can I see how long each order has been sitting unfulfilled? Not from this card today, but Shopify Admin → Orders → Filter Unfulfilled → Sort by date gives the same view. The “age in queue” view is on the Vortex IQ roadmap; the planned card surfaces orders > 48h old separately. Action playbook when this card alerts:
  1. Open the order list. Sort by createdAt ascending (oldest first).
  2. Triage by shipping speed: filter for shippingLines.title = “Express” / “Next Day” / “Overnight”. These breach customer-trust fastest if delayed.
  3. Triage by value: filter for totalPrice > £200. High-value orders cancelling becomes a refund event.
  4. Open Products with Zero/Negative Stock. If PARTIALLY_FULFILLED is climbing, the bottleneck is inventory not labour.
  5. If volume-driven (sale week, viral moment): proactively email customer-service to extend SLA messaging.
  6. If labour-driven (3PL outage, sick day): escalate to fulfilment partner; consider express-courier paid surcharge to recover the SLA.
  7. After triage: clear OPEN first, then IN_PROGRESS, leave SCHEDULED to its planned date.

Tracked live in Vortex IQ Nerve Centre

Unfulfilled Orders is one of hundreds of KPI pulses Vortex IQ tracks across Shopify and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.