> ## 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.

# On-Time Delivery Trend, ShipBob

> On-Time Delivery Trend for ShipBob stores. Tracked live in Vortex IQ Nerve Centre. How to read it, why it matters, and how to act on it.

**Metrics type:** [Key Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Fulfilment & Logistics](/nerve-centre/connectors#connectors-by-type)

## At a glance

> The 90-day shape of on-time-delivery, plotted as a daily line. Same numerator and denominator as the [On-Time Delivery Rate](/nerve-centre/kpi-cards/shipbob/on-time-delivery-rate) gauge, but rendered as a trend so a structural slide is visible against a one-week blip.

|                               |                                                                                                                                                                                                                                                                                                        |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **What it counts**            | Daily rolling on-time-delivery percentage: `COUNT(shipments delivered on or before estimated_delivery_date in day D) / COUNT(shipments with actual_delivery_date in day D)`. Each day is one point on the line.                                                                                        |
| **API endpoint**              | `GET /shipment` (Shipments API v2), bucketed by `actual_delivery_date` day. The card builds 90 daily aggregates from the same shipment payload as the rate card.                                                                                                                                       |
| **DC scope**                  | **Aggregated across every DC**, same as the rate card. Per-DC trend is not in this card; pivot to [SLA Compliance by Warehouse](/nerve-centre/kpi-cards/shipbob/sla-compliance-by-warehouse) for a DC-level slice.                                                                                     |
| **Shipping-method scope**     | **All methods pooled.** Standard, Expedited, Overnight, 2-Day, Ground are weighted by their daily volume. A spike in Expedited volume on one day can move the trend if Expedited has a different on-time profile.                                                                                      |
| **Inventory-split semantics** | One delivery per shipment, same as the rate card. A multi-DC split order contributes one point per shipment to its delivery day.                                                                                                                                                                       |
| **Perfect-order definition**  | This card is on-time-only, not perfect-order. See [Operational Health Score](/nerve-centre/kpi-cards/shipbob/operational-health-score) for the composite.                                                                                                                                              |
| **SLA definition**            | Per-shipment `estimated_delivery_date` from the carrier transit-time table, not a flat merchant-set "5-day SLA". 1-day to 5-day promise depends on DC-to-customer zone.                                                                                                                                |
| **Peak-period seasonality**   | **The 90-day window almost always crosses peak boundaries.** A line read in January will include 23 to 31 December (peak tail) and a week of January (recovery). Read the slope, not just the headline. Q4 typically sees a 5 to 15 point dip from Q3 baseline, recovering across mid to late January. |
| **API rate limits**           | 200 requests / minute / token, same as the rate card. Trend rebuild for 90 days takes about 25 minutes for a 100k-shipment merchant; the card uses incremental webhook updates after first sync.                                                                                                       |
| **Time window**               | `90D` (rolling 90-day daily series)                                                                                                                                                                                                                                                                    |
| **Alert trigger**             | `<90%`, the `on_time_delivery_rate` sentiment trips when any single day in the recent window drops below 90 percent.                                                                                                                                                                                   |
| **Roles**                     | owner, operations                                                                                                                                                                                                                                                                                      |

## Calculation

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

## Worked example

The same US DTC skincare brand from the OTD Rate card, reading the 90-day trend on 12 Mar 26 (window 12 Dec 25 to 11 Mar 26). The line crosses peak season, recovery, and steady state.

| Window                 | Daily on-time average | Daily shipment volume | Note                                                                             |
| ---------------------- | --------------------- | --------------------- | -------------------------------------------------------------------------------- |
| 12 Dec 25 to 24 Dec 25 | 78.4%                 | 1,840 / day           | Pre-Christmas crunch, carrier networks saturated, DC overtime.                   |
| 25 Dec 25 to 31 Dec 25 | 84.1%                 | 740 / day             | Post-Christmas low volume, but Boxing Week sale and gift-card-redemption orders. |
| 1 Jan 26 to 14 Jan 26  | 89.6%                 | 980 / day             | Recovery period, capacity returns to normal, residual inventory mis-positioning. |
| 15 Jan 26 to 28 Feb 26 | 93.7%                 | 620 / day             | Steady state, three DCs balanced, no weather events.                             |
| 1 Mar 26 to 11 Mar 26  | 92.8%                 | 580 / day             | Steady state continues, matches the OTD Rate gauge headline of 92.8%.            |

The line shape:

1. **The Q4 trough is structural and predictable.** A 78.4% daily average across mid-December is 14 percentage points below steady-state. Most DTC brands using ShipBob, FBA, or any 3PL will see a dip of similar magnitude. Do not read the December dip as a process problem; read it as the seasonal cost of operating in Q4.
2. **The recovery curve takes 4 to 6 weeks, not days.** From the 25 Dec low, the brand needed until mid-January to break 90 percent again. The lag is real: returned-from-customer items need to flow back through DCs, mis-positioned inventory gets rebalanced, post-holiday-staff layoffs reduce capacity, and the customer mix shifts from gifters (often shipping to a different state than the buyer) to direct buyers.
3. **The 25 Dec to 31 Dec mini-recovery is misleading.** Volume crashes that week, so even a small absolute count of late shipments looks worse-or-better at a percentage level. Watch volume alongside the percentage.
4. **Steady-state shape is the benchmark.** Mid-January through end-of-February is the merchant's "true" rate (93.7%). Use this number, not the trailing 30D, when setting SLA promises and customer-facing copy.
5. **The early-March dip from 93.7 to 92.8 is noise, not signal.** A 0.9-point shift on 580 daily shipments is well within day-to-day variation. Wait for a 2 to 3 percentage-point deviation across 5+ days before acting.

## Sibling cards merchants should reference together

On-time-delivery trend is the long-shape view. Pair it with these to read the slope correctly:

| Card                                                                                                | Why pair it with On-Time Delivery Trend                      | What the combination tells you                                                                                                                                  |
| --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [On-Time Delivery Rate](/nerve-centre/kpi-cards/shipbob/on-time-delivery-rate)                      | The 30D point estimate behind the trend.                     | The trend tells you the slope; the gauge tells you the current level. A flat trend with a low gauge means structural under-performance, not a slipping problem. |
| [SLA Compliance by Warehouse](/nerve-centre/kpi-cards/shipbob/sla-compliance-by-warehouse)          | Trend per DC, breakdown of the aggregate.                    | If the aggregate trend dips but two DCs are flat, the third DC is dragging. Per-DC slope identifies the real source.                                            |
| [Average Shipping Time](/nerve-centre/kpi-cards/shipbob/avg-shipping-time)                          | Trend of warehouse-floor performance.                        | Rising shipping time precedes dropping on-time rate by 1 to 3 days. Use shipping time as the leading indicator.                                                 |
| [Carrier Performance](/nerve-centre/kpi-cards/shipbob/carrier-performance-comparison)               | Carrier-mix shifts can move the trend without any DC change. | If UPS Ground rates degrade nationally, the trend dips while DC operations are clean.                                                                           |
| [Pending Fulfilment Backlog](/nerve-centre/kpi-cards/shipbob/pending-fulfilment-backlog)            | Backlog drives next-day-out shipping time.                   | A persistent backlog spike will show up in this trend 4 to 7 days later.                                                                                        |
| Cross-connector: [`shopify.unfulfilled_orders`](/nerve-centre/kpi-cards/shopify/unfulfilled-orders) | Upstream order pressure.                                     | Sustained Shopify backlog correlates with ShipBob on-time-rate dropping 3 to 5 days later.                                                                      |
| Cross-connector: [`shopify.refund_rate`](/nerve-centre/kpi-cards/shopify/refund-rate)               | Downstream impact.                                           | A sustained on-time-rate dip in this trend predicts a refund-rate climb 7 to 14 days later.                                                                     |
| Cross-connector: customer NPS / returns rate                                                        | Downstream sentiment.                                        | Brand NPS surveys often correlate with the slope of this trend at a 2-to-3-week lag.                                                                            |

## Reconciling against the vendor's own dashboard

**Where to look in ShipBob Merchant Portal:**

[ShipBob Merchant Portal](https://merchant.shipbob.com/) → **Analytics → Performance → On-Time Delivery → Trend tab**. The portal renders the same daily series with togglable DC and method filters. Use *All DCs, All Methods, Last 90 Days* to compare like-for-like.

**Why our number may legitimately differ from ShipBob's portal:**

| Reason                                                       | Direction              | Why                                                                                                                                                       |
| ------------------------------------------------------------ | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Timezone (UTC default)**                                   | Boundary days off      | ShipBob portal and the card both default to UTC; merchants who switched portal to local time will see day-edge shifts at the start and end of the window. |
| **DC-level vs aggregated reporting**                         | Either                 | Portal's trend tab defaults to aggregated; the card aggregates by default. If the merchant has a DC chip selected in the portal, numbers diverge.         |
| **SLA definition variance (carrier vs ShipBob vs merchant)** | Either                 | Same as the rate card, ShipBob's `estimated_delivery_date` is the truth source; carrier scans and merchant-set checkout SLAs may differ.                  |
| **Peak-period batch-processing delays**                      | Ours lower for "today" | Q4 webhook lag of 4 to 12 hours; T-2 fully reconciles. The most-recent point on the trend may be conservative.                                            |
| **Daily aggregation granularity**                            | Smoothed               | The card shows daily; the portal optionally shows hourly. Hourly is noisier but better for incident-response work.                                        |

**Cross-connector reconciliation:**

| Card                                                                               | Expected relationship                                                                           | What causes legitimate divergence                                                                    |
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| [`shopify.unfulfilled_orders`](/nerve-centre/kpi-cards/shopify/unfulfilled-orders) | Upstream pressure leads on-time rate by 2 to 6 hours (sync) plus 3 to 5 days (operational lag). | Webhook delivery failures, B2B / pre-order flow that bypasses ShipBob, batch-processing pauses.      |
| Amazon FBA on-time delivery                                                        | Peer 3PL, independent population.                                                               | Amazon-only orders; most multichannel merchants run both with no expected agreement between the two. |
| Customer NPS / Klaviyo post-purchase survey                                        | Downstream sentiment, lag 7 to 21 days.                                                         | Survey response bias; customers who had a great delivery experience are more likely to respond.      |

***

<details>
  <summary><em>Documentation cross-reference (for agencies running multiple 3PLs)</em></summary>

  The 90-day on-time-delivery trend exists with conceptually similar definitions across other 3PLs. These are independent operations on different shipments, not parallel measurements; the cross-link exists so multi-3PL agencies can navigate documentation.

  * Amazon FBA on-time-delivery trend
  * Shopify Fulfillment Network historical trend (legacy)
</details>

## Known limitations / merchant FAQs

**ShipBob vs FBA, can I compare the trend lines?**
Not as a like-for-like, since the underlying order populations are different. FBA's on-time number is for Amazon-marketplace orders; ShipBob's is for direct-to-consumer orders on Shopify, BC, Adobe, marketplace direct-merchant flows. Watch each trend separately and use them to decide channel-level inventory allocation, not to declare one 3PL "better".

**How does ShipBob choose which DC ships my order, and does it affect the trend?**
ShipBob's order-routing engine picks the closest DC with all line-item stock. If the inventory split across DCs is unbalanced, more orders ship from a far DC, transit time stretches, and the trend slopes down. The signal is "are we hitting >80% closest-DC ship rate?" (see [Warehouse Proximity](/nerve-centre/kpi-cards/shipbob/warehouse-proximity-performance)); the trend is the consequence of that allocation.

**Why does the trend dip when the carrier tracking shows everything delivered on time?**
SLA definition variance. The carrier's "on-time" tracks against its own zone-based transit-time table, which can be looser than ShipBob's per-shipment `estimated_delivery_date`. If the merchant set tighter promises in checkout copy, ShipBob will mark a shipment late even when UPS reports it on-time at the carrier level. Three definitions exist (carrier, ShipBob, merchant); the trend uses ShipBob's.

**Perfect-order vs on-time-shipping vs on-time-delivery, which is in this trend?**
On-time-delivery only, the customer-facing leg. On-time-shipping is the warehouse-floor leg (parcel left the DC by cutoff). Perfect-order combines four legs: right product + on-time + no damage + no return-due-to-error. This trend is one of the four.

**How do I plan for Q4 / BFCM peak using this trend?**
Read last year's curve. The 78 to 84 percent Q4 trough is structural; do not target your normal 92 to 95 percent level during peak. Three pre-season actions: pre-position inventory in 3 DCs by mid-October, negotiate carrier rate-and-capacity holds, set customer expectations in checkout copy ("delivered by 23 December if ordered by 18 December"). Track the trend through January to see how fast you recover.

**Multi-DC inventory split, how do I optimise it from this trend?**
The aggregate trend is too coarse for split decisions. Pivot to [SLA Compliance by Warehouse](/nerve-centre/kpi-cards/shipbob/sla-compliance-by-warehouse) to find the lagging DC, then to [Warehouse Proximity](/nerve-centre/kpi-cards/shipbob/warehouse-proximity-performance) to see whether the lag is a "shipping from too-far-a-DC" problem (rebalance inventory) or a "shipping speed at the right DC" problem (more staffing). The trend confirms whether your fix worked, but does not prescribe it.

**How do returns appear in this trend?**
They do not. The trend scores outbound shipments; returns flow through a separate Returns module ([Return Rate](/nerve-centre/kpi-cards/shipbob/return-rate)). A late delivery that triggers a return still counts as one late point on this trend and one return on the returns card.

**Why does ShipBob show the parcel as shipped but Shopify still says "unfulfilled"?**
Webhook sync lag. ShipBob fires `shipment.created` to Shopify; the receiving Shopify app processes it within seconds normally, but during Q4 and BFCM the app queue can lag 4 to 12 hours. If the gap is over 24 hours, check *Shopify Admin → Apps → ShipBob → Connection health*; webhook retries may be silently failing. Shopify [`unfulfilled_orders`](/nerve-centre/kpi-cards/shopify/unfulfilled-orders) appears artificially high during this lag.

**The trend looks fine but customers are complaining about late deliveries, why?**
Three usual reasons. (1) Customer perception of "late" is tighter than ShipBob's `estimated_delivery_date`; checkout copy may be over-promising. (2) The trend is volume-weighted; a small number of high-value or high-visibility late shipments hurt brand reputation while the percentage stays high. Pair with [Delayed Orders](/nerve-centre/kpi-cards/shipbob/delayed-orders) for the absolute count. (3) Customers complain about the slowest 5 percent, not the average; consider the p95 delivery time, not just the headline.

***

### Tracked live in Vortex IQ Nerve Centre

*On-Time Delivery Trend* is one of hundreds of KPI pulses Vortex IQ tracks across ShipBob 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.
