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

At a glance

Percentage of orders that progressed to state = complete within the merchant’s defined SLA. Adobe Commerce’s complete state means “shipped and invoiced”; the rate is the operational quality KPI for fulfillment. Below 92% is the industry-baseline alert; below 88% indicates structural issues (3PL queue depth, integration failures, persistent staffing gaps).
What it countsCOUNT(orders where state = complete AND fulfilled_within_SLA) / COUNT(orders eligible for fulfillment). The denominator excludes pending_payment (SLA hasn’t started) and canceled (no fulfillment expected). The numerator counts orders that reached complete within the configured SLA hours of payment capture.
API fieldstate, created_at, updated_at from GET /rest/V1/orders.
VAT / tax treatmentn/a, count-and-time metric.
Shipping inclusionn/a.
Discountsn/a.
Credit Memo refund treatmentAn order shipped on time then later refunded still counts as “fulfilled within SLA”.
state machine inclusionNumerator: complete within SLA. Denominator: orders eligible for fulfillment (paid, not cancelled, not deliberately held).
pending_payment quirkExcluded from denominator (SLA clock hasn’t started).
holded quirkExcluded from denominator (operations deliberately paused; SLA pauses with it).
Multi-currency grand_total vs base_grand_totaln/a.
Store View scope (store_id)All Store Views; per-Store-View variants useful when warehouses serve different regions.
Time window30D vsP.
Alert trigger<92% (industry baseline).
Sentiment keyfulfillment_rate
Rolesowner, operations

Calculation

COUNT(state=complete) / COUNT(_id)
  WHERE date BETWEEN [period_start, period_end]

Worked example

A nutritional supplements brand on Adobe Commerce 2.4.6 with US, UK, and B2B Store Views. SLA: 48h consumer, 72h B2B. 30-day window ending Monday 4 May 26. Fulfillment rate by Store View:
StreamEligible ordersFulfilled within SLARate
US consumer2,6102,48695.2%
UK consumer2,0401,84990.6%
B2B portal1,4201,39898.5%
Blended6,0705,73394.4%
Vs prior 30-day: 94.4% current vs 95.7% prior = -1.3 pts. What this is telling operations:
  1. Blended 94.4% is just above the 92% baseline, mid-pack performance. Best-in-class is 96%+.
  2. UK at 90.6% is below the alert threshold. Worth investigating: cross-check Fulfilment Over Time for the UK series specifically. The UK staffing dip mentioned in that worked example (5 days in late April) explains the drop.
  3. B2B at 98.5% is best-in-class because the in-house HQ team prioritises B2B and their SLA is more generous (72h vs 48h consumer).
  4. The 1.3 pt blended decline is driven entirely by the UK Store View; US and B2B are stable. Targeted action on the UK warehouse, not blanket changes.
  5. Operational implications: roughly 3.4% of orders breached SLA (337 of 6,070). Customer service can expect ~340 enquiries-per-month from these customers (industry typical: 70 to 100% of late-shipment customers contact support).
  6. Action: address UK warehouse staffing-flex; weekly review with Huboo to ensure forecast-vs-actual reconciliation; set per-Store-View alerting to catch UK-specific dips before blended rate drags.
The point: a single number (94.4%) across multiple Store Views obscures region-specific issues. Per-Store-View alerting and decomposition is essential for multi-warehouse Adobe Commerce stores.

Sibling cards merchants should reference together

CardWhy pair it with Fulfilment Rate
Fulfilment Over TimeTrend chart.
Fulfilment Delay AlertReal-time breach alerting.
Unfulfilled OrdersCurrent pipeline.
Fulfillment BreakdownState distribution.
Total OrdersVolume context.
Refund RateLagging effect of breaches.
Cancellation RateCustomer-cancel response to delays.
shopify.fulfillment_rateCross-platform peer.

Reconciling against the vendor’s own dashboard

Where to look in Adobe Commerce Admin:
Reports > Sales > Shipping for shipment counts; manual SLA-breach computation requires per-order time-since-payment.
Sales > Orders with state filter; manual export and analysis for SLA breach detection.
Sales > Shipments lists every shipment created in the period.
Why our number may legitimately differ from a manual count:
ReasonDirection of divergence
SLA threshold. Card uses configurable threshold (default 48h/72h). Different thresholds yield different rates.Material if thresholds differ
Time-zone. Admin in Store View timezone; card UTC.Negligible at 30D
pending_payment exclusion. Card excludes from denominator.Card rate higher
holded exclusion. Card excludes from denominator.Card rate higher
Partial shipments. Card treats any shipment as fulfillment-started.Card rate higher than strict definition
Sync lag. Card uses OpenSearch sync; Admin live.Negligible
Cross-connector reconciliation (when these connectors are connected for this merchant):
PairExpected relationshipWhat divergence tells you
3PL on-time-shipment reportsShould align within SLA-definition matchMaterial divergence indicates definition mismatch or off-platform shipments.
Carrier API trackingFirst scan ≈ Adobe shipment-createLag indicates carrier handover delay.

Known limitations / merchant FAQs

My fulfillment rate is 88%, is that bad? Below the 92% industry baseline, yes. Most likely cause: the SLA is too tight for current operational capacity, or there’s a structural issue (3PL queue depth, integration). Cross-check with Fulfilment Over Time for the trend (declining or stable?) and Fulfilment Delay Alert for current breaches. Adobe Commerce vs Magento Open Source: difference? None at the calculation. Both editions have identical state machine. My multi-store, can I see per-Store-View rates? Yes, configure per-Store-View variants. Strongly recommended for multi-warehouse operations. B2B is on a 72h SLA but consumer on 48h, can I configure both? Yes, per-Store-View thresholds. Most B2B portal Store Views configure 72h or 5-day SLA; consumer Store Views 48h or 24h. The card respects whatever you configure. Why exclude holded from the denominator? Adobe’s holded state is “operations paused this order” (fraud review, B2B credit check, custom-make awaiting design). The SLA should pause while held; counting them as breach would penalise legitimate ops actions. Why exclude pending_payment? SLA only starts when payment captures. A pending_payment order is still in the customer’s hands (or AP’s hands). Including would distort the rate. My 3PL says they ship 99% within 48h but the card shows 91%, why? Likely SLA-definition difference. The 3PL measures from “order received in 3PL queue” to “shipment despatched”; the card measures from “Adobe payment capture” to “shipment created”. The Adobe-to-3PL handover (typically 1-4 hours) is included in the card but not in the 3PL metric. Why does the card consider partial shipments as fulfilled? Default behaviour: any shipment for an order moves it to fulfillment-started. The customer received goods; the SLA is functionally met. For strict “all items shipped” measurement, configure tighter. The default is operationally pragmatic. Why is fulfillment rate falling but customer service tickets are flat? Customers don’t complain on day 3; they complain on day 5 to 7. Tickets lag rate by ~5 days. If rate is falling now, ticket volume rises in a week or two unless you intervene proactively.

Tracked live in Vortex IQ Nerve Centre

Fulfillment Rate is one of hundreds of KPI pulses Vortex IQ tracks across Adobe Commerce 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.