Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform

At a glance

Order distribution by displayFulfillmentStatus. The operational health view: how many orders are fulfilled, in progress, partially fulfilled, restocked, or unfulfilled?
What it countsGROUP BY displayFulfillmentStatus. Each order contributes one to its status bucket. Statuses: FULFILLED, PARTIALLY_FULFILLED, IN_PROGRESS, OPEN, UNFULFILLED, SCHEDULED, RESTOCKED, VOIDED.
API endpointAdmin GraphQL. Order.displayFulfillmentStatus.
State semanticsFULFILLED = all line items shipped; PARTIALLY_FULFILLED = some shipped; IN_PROGRESS = pick-and-pack in flight; OPEN / UNFULFILLED = nothing shipped yet; SCHEDULED = future-fulfillment scheduled (B2B common); RESTOCKED = cancellation with restock; VOIDED = cancellation without restock.
VAT / tax treatmentNot applicable.
ShippingNot applicable directly.
DiscountsNot applicable.
RefundsAn order can be both REFUNDED (financial status) and FULFILLED (fulfillment status); the two states are independent.
Cancelled / voided ordersVOIDED and RESTOCKED are their own buckets.
CurrencyMulti-currency safe.
Channels / sourcesOnline + POS + B2B all contribute. POS auto-fulfills at checkout (FULFILLED). B2B often has SCHEDULED orders.
Multi-location storesAn order from multiple locations may flip FULFILLED only when the LAST location ships. Partials in multi-location are common.
Time window30D (single window)
Alert triggerNone on this card directly; pair with Fulfillment Rate for the alerted ratio.
Rolesowner, operations

Calculation

GROUP BY displayFulfillmentStatus
  WHERE date BETWEEN [period_start, period_end]

Worked example

A US apparel brand on Shopify Plus. Period: 12 Apr 26 to 11 May 26.
displayFulfillmentStatusOrder countShareNote
FULFILLED5,82085.1%Shipped
IN_PROGRESS4126.0%Pick-pack in flight
PARTIALLY_FULFILLED2183.2%Some line items shipped
OPEN / UNFULFILLED1842.7%Nothing shipped, the backlog signal
SCHEDULED1021.5%B2B and pre-orders
RESTOCKED781.1%Cancellations with restock
VOIDED260.4%Cancellations without restock
Total6,840100%
Five things to notice:
  1. 2.7% OPEN is the backlog alarm. 184 orders that have not started picking. Sort the OPEN list by age; anything aged >24h needs ops triage. The combined OPEN + IN_PROGRESS + PARTIALLY_FULFILLED is your real-time work-in-progress; here that is 11.9%, healthy for a busy DTC brand.
  2. Partials at 3.2% mean SKU stockouts. 218 orders where some items shipped but at least one is backordered. Each is a customer-promise issue. Pair with Line Item Fulfillment for the SKU-level diagnosis; a single OOS hero SKU often dominates.
  3. SCHEDULED at 1.5% is mostly B2B. Wholesale orders with future ship-dates sit here. If you’re a DTC-only brand and SCHEDULED is non-zero, you’re likely running pre-orders or back-orders; check inventory policy.
  4. RESTOCKED + VOIDED together = cancellation events. 1.5% combined; cross-reference with Cancellation Rate. RESTOCKED is the customer-friendly path (inventory recovered); VOIDED suggests test orders or fraud cancellations without inventory return.
  5. POS dominates the FULFILLED bucket disproportionately. A retail-brick brand with strong POS sees 90%+ FULFILLED because POS auto-fulfills at the till. To assess true e-commerce ops health, filter to online-store orders only.

Sibling cards merchants should reference together

The status breakdown is the diagnostic. Pair with these:
CardWhy pair it with Fulfillment BreakdownWhat the combination tells you
Fulfillment RateThe headline FULFILLED-share metric.Breakdown shows where the rate’s denominator went.
Fulfillment Over TimeDaily timeseries.Catches step-changes (3PL outage on a specific date).
Unfulfilled OrdersReal-time backlog.The OPEN bucket here ≈ unfulfilled-orders count.
Line Item FulfillmentPer-line-item state.Diagnoses partials at the SKU level.
Products with Zero/Negative StockStockout root cause for partials and opens.A persistent OOS predicts a rise in OPEN + PARTIALLY_FULFILLED.
Cancellation RateRESTOCKED + VOIDED counterpart.Cross-check VOIDED count vs cancellation count.
datadog.dd_incident_count3PL / warehouse incidents.Operational incidents predict a rise in OPEN + IN_PROGRESS within 24-72h.

Reconciling against the vendor’s own dashboard

Where to look in Shopify Admin: Orders → filter by Fulfillment status. Counts per filter should align with this card’s bucket counts. Other Shopify Admin views:
  • Reports → Sales by fulfillment status: a £-revenue split by status; complementary to this count split.
  • Settings → Locations: relevant for multi-location stores; affects how partial fulfillment surfaces.
  • Apps like ShipStation, ShipBob: 3PL-side fulfillment tracking; should align with the FULFILLED count per their lag.
Why our number may legitimately differ from Shopify Admin:
ReasonDirectionWhy
Time zoneBoundary daysStandard time-zone gap.
Status mappingEitherShopify’s “Fulfilled” filter may include PARTIALLY_FULFILLED depending on settings; the card splits them.
Multi-location aggregationEitherMulti-location stores show partials more often in detailed views; the card aggregates.
Test ordersOurs slightly higherTest order filter not applied.
Sync lagOurs lower for “today”5 to 15 minute index lag.
Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
datadog.dd_incident_countWarehouse / 3PL incidents drive OPEN + IN_PROGRESS upIndirect signal; only valuable if 3PL monitoring is connected.
shopify_xc_revenue_at_risk_from_incidentComposite cross-channel riskPair on the dashboard during ops outages.

Known limitations / merchant FAQs

Why is my OPEN bucket high? Three usual causes:
  1. Stockout on a high-velocity SKU. Orders pile up waiting for inventory.
  2. 3PL or warehouse capacity issue. Pick-and-pack cannot keep up.
  3. Order volume spike. Sale week or viral moment outpaces fulfillment throughput.
Why is my PARTIALLY_FULFILLED bucket non-zero? Almost always one or more SKUs are out of stock and the rest of the order shipped. Cross-reference Products with Zero/Negative Stock to find the bottleneck SKU. What’s the difference between OPEN and IN_PROGRESS? OPEN / UNFULFILLED = no fulfillment record exists yet. IN_PROGRESS = fulfillment record created (label printed, picking started) but not marked complete. The progression is OPEN → IN_PROGRESS → FULFILLED. Why does SCHEDULED appear? Either pre-orders, back-orders, or B2B orders with future ship dates. If your store doesn’t run those, audit; this can indicate misuse of the SCHEDULED status. Multi-location, how does this affect the breakdown? Multi-location orders may appear PARTIALLY_FULFILLED if one location ships first. Once both locations ship, the order flips to FULFILLED. Multi-currency, any impact? None on the count distribution. Shopify Plus vs basic? Plus stores can use Flow automations to manage SCHEDULED orders, B2B-specific fulfillment workflows, and multi-location routing. The card behaves identically; the population mix differs. Refresh cadence? 5 to 15 minute index lag. Status transitions propagate quickly. B2B vs DTC? B2B has more SCHEDULED. DTC is dominated by FULFILLED. Mixed stores benefit from filtering by tag. The card shows a rising OPEN bucket, what should I do?
  1. Open Shopify Admin → Orders → filter Unfulfilled. Sort by age.
  2. Identify SKUs holding up the oldest orders. Cross-reference with Inventory Alerts.
  3. For aged-OPEN with no inventory issue, escalate to 3PL ops.
  4. For volume-spike, accept temporary degradation; protect customer comms with extended SLA messaging.
  5. Email customers proactively for orders aged >5 days; the brand-trust hit of silence is worse than the operational delay.

Tracked live in Vortex IQ Nerve Centre

Fulfillment Status 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.