> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Fulfillment Rate Over Time, Shopify

> Fulfillment Rate Over Time for Shopify stores. Tracked live in Vortex IQ Nerve Centre. How to read it, why it matters, and how to act on it.

**Metrics type:** [Supporting Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

## At a glance

> Daily fulfillment rate (FULFILLED ÷ total orders for that day) over the 90-day window. The operational pattern view: where are the dips, what is the day-of-week shape, and is the trend stable?

|                               |                                                                                                                                                                                                     |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**            | `DATE_HISTOGRAM(day, COUNT(orders WHERE FULFILLED) ÷ COUNT(orders))`. Daily ratio; same definition as [Fulfillment Rate](/nerve-centre/kpi-cards/shopify/fulfillment-rate) but in time-series form. |
| **API endpoint**              | `Admin GraphQL. Order.displayFulfillmentStatus` and `Order.fulfillments[]`.                                                                                                                         |
| **Bucketing**                 | Orders bucket on `Order.createdAt` date (not fulfillment date) so the rate is "what share of orders placed today have been fulfilled?". The most recent bars rise as fulfillment catches up.        |
| **VAT / tax treatment**       | Not applicable.                                                                                                                                                                                     |
| **Shipping**                  | Not applicable.                                                                                                                                                                                     |
| **Discounts**                 | Not applicable.                                                                                                                                                                                     |
| **Refunds**                   | Refunded-after-fulfillment orders count as fulfilled.                                                                                                                                               |
| **Cancelled / voided orders** | Cancelled before fulfillment never reach FULFILLED; they sit in the denominator and drag the rate.                                                                                                  |
| **Currency**                  | Multi-currency safe (count ratio).                                                                                                                                                                  |
| **Channels / sources**        | Online + POS + B2B all contribute. POS auto-fulfills, lifting the daily rate on POS-heavy days.                                                                                                     |
| **Time window**               | `90D` (daily buckets)                                                                                                                                                                               |
| **Alert trigger**             | None on this card directly; pair with [Fulfillment Rate](/nerve-centre/kpi-cards/shopify/fulfillment-rate) for the alerted aggregate.                                                               |
| **Roles**                     | owner, operations                                                                                                                                                                                   |

## Calculation

```
DATE_HISTOGRAM rate(displayFulfillmentStatus=FULFILLED)
  WHERE date BETWEEN [period_start, period_end]
```

## Worked example

A UK skincare DTC brand on Shopify Plus, single 3PL warehouse. Period: 12 Feb 26 to 12 May 26.

| Week             | Avg daily fulfillment rate | Notable days                                |
| ---------------- | -------------------------- | ------------------------------------------- |
| 12 Feb to 18 Feb | 92.4%                      | Steady                                      |
| 19 Feb to 25 Feb | 91.8%                      |                                             |
| 26 Feb to 04 Mar | 92.1%                      |                                             |
| 05 Mar to 11 Mar | 88.5%                      | Spring drop launch, slight backlog          |
| 12 Mar to 18 Mar | 79.2%                      | **Stockout cascade**, 14 Mar dropped to 68% |
| 19 Mar to 25 Mar | 84.7%                      | Recovery in progress                        |
| 26 Mar to 01 Apr | 90.3%                      | Continue Selling turned off                 |
| 02 Apr to 08 Apr | 92.6%                      | Back to baseline                            |
| 09 Apr to 15 Apr | 91.8%                      |                                             |
| 16 Apr to 22 Apr | 92.4%                      | Easter slight bump                          |
| 23 Apr to 12 May | 92.1%                      | Steady                                      |

Five things to notice:

1. **The 14 Mar 68% trough is the diagnostic moment.** A single-day drop to 68% with surrounding days at 79 to 84% pinpoints the cause: that day's order cohort included a high share of orders for an OOS hero SKU. Cross-reference [Products with Zero/Negative Stock](/nerve-centre/kpi-cards/shopify/products-with-zero-negative-stock) for 13-14 Mar.
2. **The recovery shape (5 days from 79% to 90%) is healthy.** Continue Selling was disabled on 16 Mar; the rate climbed steadily as new oversell-orders stopped accumulating. Slow recoveries (>10 days) suggest the fix didn't address the root cause.
3. **Day-of-week effect: Mondays are usually 2-4 ppt lower than Wednesdays.** Most 3PLs don't pick on Sunday so Monday morning starts with a backlog. The 30D average smooths this out; daily resolution preserves it. Mondays at the same level as Tuesdays would actually be a problem (it would mean the 3PL is picking weekend orders, which usually signals an emergency rush).
4. **Spring drop dip + recovery sequence is a textbook stockout cascade.** Order volume spiked, hero SKU sold past available count, fulfillment rate dropped, the merchant turned off Continue Selling, the rate recovered. The full lifecycle is visible in 4 weeks.
5. **POS days don't show as dips here.** A retail-event day with strong POS sales lifts the rate (POS auto-fulfills). Brands running occasional POS pop-ups see Saturdays in pop-up cities measurably higher than Saturdays without.

## Sibling cards merchants should reference together

Daily fulfillment rate is the diagnostic timeseries. Pair with these:

| Card                                                                                                   | Why pair it with Fulfillment Over Time | What the combination tells you                                                                |
| ------------------------------------------------------------------------------------------------------ | -------------------------------------- | --------------------------------------------------------------------------------------------- |
| [Fulfillment Rate](/nerve-centre/kpi-cards/shopify/fulfillment-rate)                                   | The 30D aggregate.                     | Aggregate alerts; timeseries reveals the day.                                                 |
| [Fulfillment Breakdown](/nerve-centre/kpi-cards/shopify/fulfillment-status)                            | Status mix on the snapshot date.       | Combines the "when" with the "what".                                                          |
| [Unfulfilled Orders](/nerve-centre/kpi-cards/shopify/unfulfilled-orders)                               | Real-time backlog count.               | A rising backlog precedes a rate drop here.                                                   |
| [Products with Zero/Negative Stock](/nerve-centre/kpi-cards/shopify/products-with-zero-negative-stock) | The #1 cause of dips.                  | OOS days predict rate dips 1-3 days later.                                                    |
| [Orders Over Time](/nerve-centre/kpi-cards/shopify/orders-over-time)                                   | Volume counterpart.                    | Orders × rate = fulfilled volume; spikes that crash the rate are usually order-volume-driven. |
| [Cancelled Over Time](/nerve-centre/kpi-cards/shopify/cancelled-orders-over-time)                      | Cancellation timeseries.               | A simultaneous cancel spike + fulfillment dip = stockout cascade.                             |
| [`datadog.dd_incident_count`](/nerve-centre/datadog/dd_incident_count)                                 | Warehouse / 3PL incidents              | Incidents lead fulfillment dips by 24-72h.                                                    |

## Reconciling against the vendor's own dashboard

**Where to look in Shopify Admin:**

Shopify Admin doesn't have a single fulfillment-rate-over-time chart. Reconstruct from:

* [Orders](https://admin.shopify.com/orders) → filter by date and fulfillment status, count manually per day.
* \[Apps like ShipStation, Better Reports]: build daily fulfillment-rate views.

Other Shopify Admin views:

* **Settings → Shipping & delivery → Performance** (Plus only): on-time delivery vs promised date, a stricter metric.
* **Reports → Sales by fulfillment status**: revenue split, complementary view.

**Why our number may legitimately differ from Shopify Admin:**

| Reason               | Direction              | Why                                                                |
| -------------------- | ---------------------- | ------------------------------------------------------------------ |
| **Time zone**        | Boundary days          | Standard time-zone gap.                                            |
| **Bucket alignment** | Either                 | Daily buckets in store time zone vs UTC for window edges.          |
| **Sync lag**         | Ours lower for "today" | 5 to 15 minute index lag. The latest day rises throughout the day. |
| **Multi-location**   | Either                 | Shopify can split by location; this card aggregates.               |
| **Test orders**      | Ours slightly higher   | Test orders not filtered.                                          |

**Cross-connector reconciliation:**

| Card                                                                                          | Expected relationship               | What causes legitimate divergence                     |
| --------------------------------------------------------------------------------------------- | ----------------------------------- | ----------------------------------------------------- |
| [`datadog.dd_incident_count`](/nerve-centre/datadog/dd_incident_count)                        | Incidents predict dips 24-72h later | Indirect; only useful if 3PL monitoring is connected. |
| [`shopify_xc_revenue_at_risk_from_incident`](/nerve-centre/kpi-cards/shopify/revenue-at-risk) | Live incident £/min                 | Pair on the dashboard during ops outages.             |

***

<details>
  <summary><em>Same-metric documentation cross-reference (for agencies running multiple platforms)</em></summary>

  The same definition lives on other commerce platforms. Cross-platform navigation only.

  * [`bigcommerce.fulfillment_over_time`](/nerve-centre/kpi-cards/bigcommerce/fulfillment-rate-over-time)
  * [`adobe_commerce.fulfillment_over_time`](/nerve-centre/kpi-cards/adobe-commerce/fulfillment-rate-over-time)
</details>

## Known limitations / merchant FAQs

**Why does the latest day's bar look low?**
Sync lag plus partial-day. Today's bar rises throughout the day as fulfillments complete. Yesterday and earlier are caught up.

**My weekly pattern shows Monday lows, why?**
Backlog. Most warehouses don't pick on Sunday; Monday's order cohort starts unfulfilled and catches up over Mon-Tue.

**A specific day shows a dip; how do I diagnose?**

1. Cross-reference [Products with Zero/Negative Stock](/nerve-centre/kpi-cards/shopify/products-with-zero-negative-stock) for that day and the preceding 1-3 days.
2. Cross-reference [Cancelled Over Time](/nerve-centre/kpi-cards/shopify/cancelled-orders-over-time); a simultaneous spike confirms a stockout cascade.
3. Check 3PL / warehouse status on that day; an outage often shows up as a single-day dip.
4. Check order volume; an unusually high-volume day with normal pick capacity will dip the rate mechanically.

**Why do my Saturdays look higher than Mondays?**
POS lift. Retail-event Saturdays auto-fulfill at the till, raising the daily rate. Online-only stores see flatter weekday patterns.

**Multi-currency, any impact?**
None on the count ratio.

**Shopify Plus vs basic?**
Plus stores can run multi-location flows that distribute fulfillment across warehouses; the rate may show smoother patterns. Basic stores with one warehouse show sharper weekly cycles.

**Refresh cadence?**
5 to 15 minute index lag.

**B2B vs DTC?**
B2B SCHEDULED orders sit in the denominator for days/weeks before flipping to FULFILLED, dragging the rate. Mixed stores benefit from filtering by tag.

**The card shows a sustained dip, what should I do?**

1. Open [Fulfillment Breakdown](/nerve-centre/kpi-cards/shopify/fulfillment-status) for the affected days, find the bucket bleeding (OPEN, PARTIALLY\_FULFILLED, IN\_PROGRESS).
2. If OPEN dominates, capacity issue at the 3PL; escalate.
3. If PARTIALLY\_FULFILLED dominates, stockout on a specific SKU.
4. If IN\_PROGRESS dominates, work in flight but not flipping; check whether 3PL is marking complete (sometimes API fail).
5. Pair with customer-service comms; preempt SLA-breach inquiries.

***

### Tracked live in Vortex IQ Nerve Centre

*Fulfillment Rate Over Time* 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
