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

# Fulfilment Delay Alert, BigCommerce

> Orders ageing past SLA. 3PL outage / staff out / wrong picklist, surface before the customer emails support. How to read it, why it matters, and how to ac...

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

> Orders ageing past SLA. 3PL outage / staff out / wrong picklist, surface before the customer emails support.

## At a glance

> Real-time alarm when more than 10 orders sit unfulfilled for more than 48 hours. Catches a 3PL outage, a staff absence, a misrouted picklist, or a Channel Manager sync gap **before the customer emails support and posts a 1-star review.** Where Shopify Fulfillment Network or Shop Promise creates implicit SLAs that are mostly auto-managed, BigCommerce merchants typically run their own 3PL or warehouse, so this alert is the primary signal that operational throughput has stalled.

|                              |                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**           | `COUNT(orders WHERE status_id IN (7, 8, 9, 11) AND date_created < NOW() - 48h AND date_shipped IS NULL)`. Orders in `Awaiting Fulfilment` (`status_id = 11`), `Awaiting Shipment` (`status_id = 9`), `Awaiting Pickup` (`status_id = 8`), or `Partially Shipped` (`status_id = 3`) that have been pending more than 48 hours since order creation. Cancelled, refunded, or completed orders are excluded. |
| **API endpoint**             | `GET /stores/{store_hash}/v2/orders?status_id={9,11,8,3}&min_date_created={48h ago}` (BC REST Management API) plus shipment data from `GET /v2/orders/{order_id}/shipments`. The OpenSearch index materialises `status_id`, `date_created`, and `date_shipped` per order.                                                                                                                                 |
| **VAT / tax treatment**      | n/a, this is an operational count metric.                                                                                                                                                                                                                                                                                                                                                                 |
| **Shipping**                 | n/a, but configured shipping methods affect the SLA, expedited orders should fire faster than standard. The default 48-hour threshold tunes for standard ground; configure tighter SLAs (24h, 12h) for expedited / next-day shipments.                                                                                                                                                                    |
| **Discounts**                | n/a.                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Refunds**                  | Excluded (`status_id = 4` Refunded).                                                                                                                                                                                                                                                                                                                                                                      |
| **Cancelled orders**         | Excluded (`status_id = 5` Cancelled).                                                                                                                                                                                                                                                                                                                                                                     |
| **`Incomplete` orders**      | Excluded (`status_id = 0`). Incompletes never reached fulfilment.                                                                                                                                                                                                                                                                                                                                         |
| **Currency**                 | n/a, count metric.                                                                                                                                                                                                                                                                                                                                                                                        |
| **Channels**                 | All channels tracked, with per-channel breakdown in the alert payload. **A 3PL outage typically shows as a multi-channel fire** (web, Amazon, B2B all delayed simultaneously); a single-channel fire usually indicates a Channel Manager sync issue specific to that marketplace.                                                                                                                         |
| **B2B Edition behaviour**    | B2B orders typically have longer fulfilment SLAs (PO terms, scheduled delivery dates). The alert auto-detects B2B orders by `customer_group` and applies a longer threshold (default 72h) for B2B orders unless explicitly overridden. **Don't apply DTC SLAs to B2B fulfilment**, you'll get constant noise alerts on perfectly normal B2B operational cycles.                                           |
| **Multi-Location Inventory** | When MLI is enabled, the alert breaks down by `inventory_location`. A single location lagging while others ship normally is the classic "warehouse staff out sick" pattern; all locations lagging is a 3PL or system-wide issue.                                                                                                                                                                          |
| **Time window**              | `RT` (evaluated every 15 minutes; orders cross the 48h threshold continuously rather than at a hard cutoff).                                                                                                                                                                                                                                                                                              |
| **Alert trigger**            | `>10 orders aged >48h unfulfilled`                                                                                                                                                                                                                                                                                                                                                                        |
| **Sentiment key**            | `unfulfilled_count`                                                                                                                                                                                                                                                                                                                                                                                       |
| **Roles**                    | owner, operations                                                                                                                                                                                                                                                                                                                                                                                         |

## Calculation

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

## Worked example

A US apparel brand on BigCommerce Pro with a single 3PL (ShipBob) and an in-house POS terminal at a flagship store. Snapshot at 10:00 UTC on Wednesday 15 Apr 26.

| Channel                            | Orders aged >48h unfulfilled | Oldest pending | Inventory location  |
| ---------------------------------- | ---------------------------- | -------------- | ------------------- |
| `1` (DTC web)                      | 18                           | 4d 7h          | ShipBob warehouse A |
| `1019847` (Amazon Channel Manager) | 12                           | 3d 12h         | ShipBob warehouse A |
| `1020111` (Walmart Marketplace)    | 6                            | 3d 1h          | ShipBob warehouse A |
| B2B portal                         | 2                            | 2d 4h          | Direct dropship     |
| POS Terminal A                     | 0                            | n/a            | n/a                 |
| **Total**                          | **38**                       |                |                     |

What's interesting:

1. **All affected orders share warehouse A.** Three different channels (web, Amazon, Walmart) but one underlying inventory location, that's a single 3PL outage at ShipBob warehouse A, not three independent issues. **Always group the alert by inventory location before by channel**, the root cause is almost always operational, not channel-specific.
2. **The B2B portal is largely unaffected (2 orders).** B2B portal uses direct dropship (manufacturer ships direct to customer) bypassing the 3PL entirely. This is a structural advantage of B2B Edition's dropship workflow that DTC merchants rarely think about; in a 3PL outage your B2B revenue keeps flowing.
3. **POS shows zero by design.** POS sales are walk-out fulfilled at the till; nothing to "ship". The card correctly excludes them.
4. **Lost-revenue and lost-customer impact**: 38 delayed orders at average $85 = $3,230 of revenue stuck. More importantly, \~25% of customers will refund or chargeback within 7 days if not communicated to, \~10% will leave a 1-star review. **The dollar cost of inaction over 48 hours is \~$800 in refunds and ~$2,000 in lifetime-value damage from review impact.**
5. **Amazon penalises this hardest.** Amazon's late-shipment rate (LSR) tracks shipments not dispatched within their committed handling time. Above 4% LSR Amazon throttles your seller account. Twelve late Amazon shipments in one day on a moderately-trafficked account can push LSR over the threshold. **Set Channel Manager → Amazon to fail-fast cancel for orders that breach the 48h SLA**, an Amazon cancellation hurts less than an LSR strike.

The rapid-response playbook (when this alert fires):

1. **Identify the choke point.** Group by `inventory_location` first; if all orders are at one location, the warehouse / 3PL is the cause. Group by `shipping_method` second; if all are expedited, your express courier is the cause.
2. **Call the 3PL.** Most ShipBob, ShipMonk, ShipHero outages are operational (forklift broken, staff out, system down) and resolve within 4-6 hours once the 3PL knows you're watching.
3. **Communicate proactively.** Email affected customers a delay notification *before* they email you. Customers tolerate delay 5x better when notified vs. discovered. **BC's order notes API supports bulk-tagging affected orders for batch email; use it.**
4. **For Amazon orders specifically**, consider cancelling and re-creating any pending orders from a different warehouse if MLI is enabled. Amazon's LSR penalty is harsher than the cancellation penalty.
5. **Audit the picklist generator.** Some 3PLs miss BC orders if the order falls outside the picklist API call's date window; verify recent picklist exports include all the affected orders.

## Sibling cards merchants should reference together

| Card                                                                                            | Why pair it with Fulfilment Delay Alert                                                                                                  |
| ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| [BC Channel Fulfilment Rate](/nerve-centre/kpi-cards/bigcommerce/fulfilment-rate-by-channel)    | The trend view of which channels are systematically slow. After this alert fires, this card shows whether the issue is acute or chronic. |
| [BC Alert Channel Revenue Drop](/nerve-centre/kpi-cards/bigcommerce/channel-revenue-drop-alert) | Often co-fires when a 3PL outage cascades into channel-listing throttles (Amazon, eBay penalise late sellers).                           |
| [BC Inventory Distribution](/nerve-centre/kpi-cards/bigcommerce/inventory-distribution)         | Decomposes by warehouse / location, the real grouping for fulfilment issues.                                                             |
| [BC Channel Inventory Split](/nerve-centre/kpi-cards/bigcommerce/inventory-split-by-channel)    | Surfaces whether the affected channel has stock at the right location.                                                                   |
| [BC Alert Refund Rate Spike](/nerve-centre/kpi-cards/bigcommerce/refund-rate-spike-alert)       | The downstream effect, unfulfilled orders convert to refund requests within 5-10 days.                                                   |
| [Order Count](/nerve-centre/kpi-cards/bigcommerce/total-orders)                                 | Volume context, 38 delayed orders on a 1,000-order day is 3.8% impact; on a 100-order day it's 38%.                                      |
| [BC Top Products by Channel](/nerve-centre/kpi-cards/bigcommerce/top-products-by-channel)       | Identifies which SKUs are stuck, often a single hero SKU with picking complexity drives most of the backlog.                             |
| [Total Revenue](/nerve-centre/kpi-cards/bigcommerce/total-revenue)                              | The dollar exposure of the backlog, multiply unfulfilled count by AOV.                                                                   |

## Reconciling against the vendor's own dashboard

**Where to look in BigCommerce Control Panel:**

[Orders → All orders](https://login.bigcommerce.com/deep-links/manage/orders), filter by status `Awaiting Fulfilment`, `Awaiting Shipment`, `Awaiting Pickup`, sort by date ascending. Orders at the top of the list are the oldest unfulfilled. Compare the count to this card's number; they should match within 1-2 (boundary timing).

For per-channel breakdown: [Channel Manager](https://login.bigcommerce.com/deep-links/manage/channel-manager) → per-channel order list shows fulfilment state per marketplace. For shipment tracking specifically: [Orders → Shipments](https://login.bigcommerce.com/deep-links/manage/orders) (Pro / Enterprise) shows shipment timestamps.

For B2B Edition: B2B-specific orders surface under [Channel Manager → B2B Edition → Orders](https://login.bigcommerce.com/deep-links/manage/channel-manager) with their customer-group context preserved.

**Why our number may legitimately differ from BC's order list count:**

| Reason                                                                                                                                                                                                | Direction                                           |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| **Status interpretation**. BC's "All orders" list shows all unfulfilled regardless of age; we count only >48h aged. Our count is necessarily lower.                                                   | Vortex IQ LOWER than naive BC filter                |
| **`Partially Shipped` (`status_id = 3`) treatment**. We count partially-shipped orders if any line is still pending. BC's count varies by view: some BC views treat partially-shipped as "fulfilled". | Vortex IQ HIGHER than BC fulfillment-rate dashboard |
| **B2B custom SLA**. We auto-extend the threshold to 72h for B2B orders; BC has no concept of customer-group-specific SLA in the native UI.                                                            | Vortex IQ LOWER on B2B-heavy stores                 |
| **Backorder / Preorder**. Items configured as preorder may show as `Awaiting Fulfilment` indefinitely; we exclude them by default if `is_preorder = true`. BC's filter does not.                      | Vortex IQ LOWER on preorder-heavy stores            |
| **Channel Manager sync lag**. Marketplace fulfilment events sometimes lag 30-60 minutes from actual shipment; recent shipments may still show as pending in BC and our index until the next sync.     | Both LAG simultaneously                             |
| **Multi-Location Inventory boundary**. With MLI active, an order with line items split across locations counts as one order in our card but as multiple shipments in BC's shipments view.             | Different denominators                              |

**Cross-connector reconciliation (when carrier and 3PL integrations are connected):**

| Card                                                                                       | Expected relationship                                                           | What causes legitimate divergence                                                                                                                        |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`shippo.shippo_late_shipments`](/nerve-centre/shippo/shippo_late_shipments)               | Should match within ±10%                                                        | Shippo tracks the carrier-promised delivery date; we track BC's order-creation timestamp. Different reference points produce slightly different numbers. |
| [`amazon_sp.amazon_late_shipment_rate`](/nerve-centre/amazon_sp/amazon_late_shipment_rate) | Amazon LSR co-spikes with this alert when warehouse delays affect Amazon orders | Amazon's LSR uses a 30-day rolling window; this card is real-time. Divergence is normal in the first few hours of an outage.                             |
| [`shipbob.sb_pending_orders`](/nerve-centre/shipbob/sb_pending_orders)                     | ShipBob's pending count should match the warehouse-A slice                      | ShipBob's UI shows orders pending picking, not orders pending shipment; the picking-to-shipment gap can hide a few hours.                                |
| [`datadog.dd_3pl_api_errors`](/nerve-centre/datadog/dd_3pl_api_errors)                     | API-level errors at the 3PL co-fire with this card on systemic outages          | Datadog catches the technical signal; this card catches the merchant-facing impact. Pair them.                                                           |

**The fulfilment-delay alert shape is BC-aligned with similar alerts on Shopify (per `unfulfilled_quantity`) and Adobe Commerce (per `shipment_status`); merchant-facing semantics are equivalent across platforms.**

***

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

  * [`shopify.alert_fulfilment_delay`](/nerve-centre/shopify/alert_fulfilment_delay) (planned)
  * [`adobe_commerce.alert_shipment_delay`](/nerve-centre/adobe_commerce/alert_shipment_delay) (planned)
</details>

## Known limitations / merchant FAQs

**Why is the threshold 48 hours and not 24 or 72?**
48 hours is the industry-standard SLA gap for ground shipping where most reasonable buyers expect movement. 24 hours fires constantly on weekends and holidays (your 3PL doesn't pick on Sunday); 72 hours misses Amazon LSR violations (Amazon's threshold is 48-72 hours depending on the offer type). 48 hours is the sweet spot for DTC. **Configure tighter thresholds (24h, 12h) for expedited orders specifically**, the alert engine supports per-shipping-method SLAs.

**My alert keeps firing every Monday morning. Why?**
Weekend pile-up. Most 3PLs don't pick on Saturday-Sunday; orders placed Friday afternoon cross the 48h threshold by Monday morning. Two options: (a) silence the alert during your known weekend window (Settings → Alerts → Silence Friday 17:00 to Monday 09:00), (b) tighten the SLA explicitly to 72h to absorb weekends. **Most stores prefer option (a)**, the alert remains useful for genuine weekend operational outages.

**My B2B portal alert is firing on orders with PO terms net-30. Are those even "delayed"?**
Probably not, but the alert can't tell PO-terms-pending from "stuck in warehouse" without explicit configuration. Configure customer-group-specific thresholds: B2B with PO terms gets 7-30 day SLA based on the negotiated terms. **B2B Edition's customer-group setup should include an `expected_fulfilment_days` field**; if it does, our alert auto-honours it. If it doesn't, configure manually per customer group.

**My MLI store shows orders split across locations. How does the alert handle them?**
An order with line items at multiple locations is counted as one order. The alert payload includes per-location detail so you can see which location is the bottleneck. **In a multi-location store the per-location view is more actionable than the per-channel view**, the bottleneck is almost always one location, not one channel.

**My Channel Manager → Amazon shows orders shipped but BC still shows unfulfilled. Is one wrong?**
Sync lag, both are right at their respective points. Channel Manager's Amazon ack of shipment can lag BC's order status by 5-30 minutes during high-volume periods. If the gap persists more than 1 hour, force a Channel Manager refresh: [Channel Manager → Amazon → Sync](https://login.bigcommerce.com/deep-links/manage/channel-manager) (button in top-right). **Persistent gaps over 4 hours are usually a Channel Manager bug; file a ticket with BC support.**

**Should I auto-cancel orders that breach 7 days?**
Generally yes, but with care. A 7-day-unfulfilled order is almost certainly a deeper systemic issue (wrong address, item not actually in stock, account flagged for fraud review). Auto-cancelling cleanly returns inventory to Channel Manager and refunds the customer. **For B2B, NEVER auto-cancel** without manual review, the customer relationship damage of an unprompted B2B cancellation is huge.

**My alert says 38 orders pending but my 3PL says 12. Who's right?**
Both might be right at different points in the workflow. The 3PL is showing orders in their pick queue; we're showing orders BC marked as `Awaiting Shipment`. The gap (26 orders) likely sits in the BC-to-3PL transmission step (orders BC has marked ready but the 3PL hasn't ingested yet). Audit the integration's recent transmission log to find the gap.

**Can I exclude POS orders from the alert entirely?**
Yes, by default POS is excluded since walk-out fulfilment doesn't use the order-shipment lifecycle. If your POS workflow does use shipment (BOPIS, ship-from-store), un-exclude POS in Settings → Alerts → Channel filter.

**Why does the alert fire so often during the 4 weeks of November-December?**
Holiday peak. Order volume 3-5x normal, 3PL throughput linear at best. Expect 30-50% more pending orders than normal pre-holiday season. **For Q4 specifically, raise the threshold count from 10 to a percentile of order volume** (e.g. "fire when >5% of orders aged >48h"). The alert engine supports percentile thresholds.

**My alert fires but the affected orders all have addresses in remote-area zones. Is this real?**
Partially. Remote-area shipments genuinely take longer to dispatch (special carriers, longer pick paths). Configure SLA-by-zone if your 3PL provides zone tags; remote-area orders should get 96h SLA, mainland 48h. The alert engine supports zone-based thresholds with shipping-rate-API zone tagging.

**The Channel Manager → Amazon LSR is over 4% but this card shows healthy. What's wrong?**
Usually a date-window mismatch. Amazon LSR uses a 30-day rolling window; this card is real-time. If you had a bad week 3 weeks ago that pushed LSR up, today's healthy operations won't immediately show on Amazon. Look at the trend over the past 30 days using [BC Channel Fulfilment Rate](/nerve-centre/kpi-cards/bigcommerce/fulfilment-rate-by-channel) to spot the lag.

***

### Tracked live in Vortex IQ Nerve Centre

*Fulfilment Delay Alert* is one of hundreds of KPI pulses Vortex IQ tracks across BigCommerce 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.
