Orders fully fulfilled / total orders. <90% means the merchant is breaking shipping promises.
At a glance
Share of paid orders fully fulfilled (every line item shipped) over the rolling 30 days. The single number that tells the founder whether shipping promises are being kept. Below 90% means the brand is publicly losing trust on delivery; APAC merchants typically run at 95 to 98% in steady state.
| What it counts | COUNT(orders WHERE fulfillment_status = 'fulfilled') / COUNT(paid orders) over rolling 30D. Partial-fulfillment counts as not fulfilled even if 9 of 10 lines have shipped. |
| API endpoint | GET /v1/orders filtered by fulfillment_status and financial_status. Webhook updates on fulfillment.created and fulfillment.cancelled. |
| Numerator | Orders with all lines shipped (fulfillment_status = 'fulfilled'). |
| Denominator | Paid or partially-paid orders only. Cancelled and unpaid orders are excluded from both numerator and denominator. |
| In-flight orders | Orders that have not reached their fulfilment deadline are still excluded from this calculation; they neither pass nor fail until the merchant or warehouse acts. |
| APAC same-day expectation | HK / TW / SG fashion merchants typically promise same-day dispatch on weekday orders before 3pm. The fulfilment-rate floor for that promise is roughly 96%; 90% is the universal Shopline alert threshold. |
| Pre-orders | Tag-excluded if the merchant uses a pre-order convention; otherwise pre-orders inflate the unfulfilled count and depress this rate until release date. |
| Time window | 30D vsP. |
| Alert trigger | <90%. Hero-tier; below this floor, ops needs to intervene immediately. |
| Sentiment | fulfillment_rate. Direct gauge; higher is better. |
| Roles | owner, operations. |
Calculation
Calculated automatically from your Shopline data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
An APAC fashion brand running a Hong Kong Shopline store, rolling 30D ending 27 Apr 26.| Metric | This 30D | Prior 30D | Change |
|---|---|---|---|
| Total paid orders | 712 | 658 | +8.2% |
| Fully fulfilled | 656 | 638 | +2.8% |
| Partial fulfilment | 18 | 8 | +125% |
| Unfulfilled | 38 | 12 | +217% |
| Fulfillment Rate (this card) | 92.1% | 96.9% | -4.8pp |
Sibling cards merchants should reference together
| Card | Why it matters next to fulfilment rate | What the combination tells you |
|---|---|---|
| Unfulfilled Orders | Real-time backlog. | High unfulfilled count + dropping fulfilment rate = warehouse capacity ceiling reached. |
| Avg Time to Fulfil (hrs) | Continuous-time view. | Rising avg time before fulfilment rate drops = early warning; the rate lags the time. |
| Fulfillment Rate Over Time | The 90D shape. | Spot whether this is a recent break or a structural drift. |
| Fulfillment Status Mix | The mix view. | If the gap is mostly partial rather than unfulfilled, the issue is cross-warehouse coordination, not capacity. |
| Refund Rate | Downstream. | Late fulfilment correlates with refund rate 7 to 14 days later (delivery-time refunds). |
| Total Revenue | The headline. | Fulfilment rate is the leading indicator for revenue continuity; below 90% revenue eventually follows down. |
| Inventory Alerts (OOS) | Blocking input. | OOS variants on paid orders cannot fulfil; the gap may be inventory, not capacity. |
| Shopline Health Score | Composite. | Fulfilment rate is one of 5 health-score inputs; weighted heavily because it is leading. |
Reconciling against the vendor’s own dashboard
Where to look in Shopline’s own dashboard:Shopline Admin -> Reports -> Fulfillment performance The “Fulfillment rate” tile gives the same figure; mobile app shows the same percentage in the dashboard summary.Why our number may legitimately differ from Shopline’s Admin:
| Reason | Direction | Why |
|---|---|---|
| Time zone | Boundary days | Shopline Admin uses store-local; we use UTC. |
| In-flight handling | Either | Shopline Admin sometimes counts in-flight orders as in-progress; we exclude until they pass or fail. |
| Partial counting | Marginal | Partials count as not-fulfilled in our card; some Shopline reports count them as 0.5 of a fulfilment. |
| Sync lag | Ours occasionally lower | Webhook-driven; under 60s typically. |
| Pre-orders | Either | Tag-based exclusion may not match Shopline’s own filter. |
shopline_fulfillment_rate = 1 - shopline_unfulfilled_count_excluding_in_flight / shopline_paid_order_count over the same 30D window.
Known limitations / merchant FAQs
What is a healthy fulfillment rate for an APAC Shopline merchant? 95 to 98% in steady state for fashion and homeware. Above 98% is rare without dedicated cut-off-aligned warehouse staffing. Below 90% is structural and triggers the alert. My fulfilment rate dropped to 88%; what should I check first? (1)shopline_unfulfilled for the real-time backlog, (2) shopline_avg_fulfilment_hours for the upstream lag, (3) shopline_inventory_alerts for OOS-blocked orders, (4) shopline_fulfillment_breakdown to see whether the issue is unfulfilled or partial.
Why does this exclude in-flight orders?
Because they have not yet had a chance to pass or fail. Including them as failures would mechanically penalise the rate every time an order is paid; including them as passes would inflate it. The standard ecommerce convention is “exclude until resolution”, which we follow.
Does this include orders that were eventually fulfilled but late?
Yes; this card measures whether the order was fulfilled at all, not whether it was on-time. For on-time fulfilment look at shopline_avg_fulfilment_hours.
My fulfilment rate is 100% but my refund rate spiked. What is happening?
The orders shipped, but the buyers were unhappy on arrival. Common causes: damaged in transit, sizing wrong, photo / reality mismatch. See shopline_refund_rate for the reason-code breakdown.
Does this account for split shipments across multiple warehouses?
Yes. Partial fulfilments count as not-fulfilled until every line ships. APAC merchants with multiple warehouses (HK + Shenzhen, or TW + JP cross-border) often see lower headline rates than single-warehouse stores until the cross-warehouse split is rationalised.
Why is the alert at 90% not 95%?
Because the alert is a “below this is bad” floor, not a “this is the goal” target. 90% is the line at which buyer trust starts to erode publicly (reviews, social media); 95% is what well-run operations target. Setting the alert at 95% would generate too many notifications during normal operational variance.
My subscription orders count toward this rate. Is that right?
Yes. Each subscription billing cycle is a separate order in Shopline; if it ships on time it counts as fulfilled. If the merchant runs heavy subscription volume, fulfilment rate is dominated by the subscription fulfilment cadence, which is usually more reliable than one-time orders.
Does B2B / wholesale order count?
Yes. The card does not segment B2B from B2C unless the merchant configures a tag-based exclusion. Most APAC Shopline merchants run B2C only.