Skip to main content
Metrics type: Cross-Platform MetricsCategory: Shipping & Courier
Per-channel APC OTD.

At a glance

APC on-time delivery rate split by the originating sales channel (Shopify, BigCommerce, Adobe Commerce, EDI / B2B-direct, marketplaces). The card derives the channel attribution by joining APC consignment records to the upstream order’s source-channel tag, then computes OTD% per channel. The point: if your APC service is healthy on average but one channel is consistently failing, the right action is mix-shift or channel-specific dispatch fixes, not a network-wide carrier conversation.

Calculation

Calculated automatically from your APC Overnight 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 UK premium homewares merchant: £140 average-order-value, sells through three channels (Shopify DTC website, a curated marketplace channel that takes 30%+ of recent volume, and a small B2B trade book to interior-design studios). APC NextDay-12 is the primary service across all three. Reading taken at 09:00 GMT on 12 Mar 26 for the trailing 30 days (10 Feb 26 to 11 Mar 26). The card flips amber on 89.4% (Marketplace). Five things to notice:
  1. The aggregate hides the mix problem. 94.9% on the all-channel apc_otd_rate looks acceptable; reading this card surfaces that one in nine marketplace parcels is missing its APC promise. That is a customer-experience pattern, not a one-week blip.
  2. Marketplace addresses are less reliable than DTC addresses. Marketplace platforms typically pass through customer-supplied address-line-1 and -2 with minimal validation. A “Flat 3, behind the chemist, 24 High Street” parcel from Shopify checkout (validated) is not the same as the same parcel from a marketplace order (un-validated). Address-data hygiene is the most common root cause of channel-OTD divergence.
  3. The right next action is at the marketplace order-ingestion layer, not APC’s depot network. Tightening address validation on the marketplace order import (postcode-API lookup, manual CSR review of fragile addresses) typically lifts the channel’s OTD by 2 to 4 points without any APC-side change.
  4. The B2B channel at 99.5% validates the APC premium. The same network that is at 89.4% on marketplace is at 99.5% on B2B with the same SLA promise. APC is not the problem; the order-data pipeline is. Use the B2B reading as the network-baseline benchmark.
  5. Compare against same-period last year. If marketplace was at 95.1% on 12 Mar 25 and is at 89.4% on 12 Mar 26, the regression is recent. Most likely cause: the marketplace platform changed its address-import format, or volume grew faster than CSR address-validation capacity. Mid-month launches of new marketplace channels show this pattern in the first 30 days.
Revenue-at-risk read: roughly 125 marketplace parcels in the period missed the promise. At a £140 AOV with ~30% margin and a 5-percentage-point lift in repurchase risk per failed delivery, that is roughly £262 of margin-loss exposure on this category alone over 30 days, plus £30+ in recoverable APC carriage refunds the merchant has not filed. Not catastrophic; absolutely actionable.

Sibling cards merchants should reference together

This card is most useful read with channel-revenue and APC-network cards together:

Reconciling against the vendor’s own dashboard

Where to look in APC’s own portal: APC Overnight Customer PortalTrack & Trace → Reports → Service Performance, then export the consignment list as CSV. APC’s portal does not split by sales channel natively (APC has no concept of “marketplace vs DTC”); the channel attribution is a Vortex IQ derivation. To reconcile:
  1. Export APC’s CSV of consignments + POD outcomes for the period.
  2. In your order-management system (Shopify Admin, BC Admin, or your ERP), pull the same period’s orders with channel tagged.
  3. Join on customer_reference (the merchant’s order number passed into APC’s booking). Group by channel.
  4. Compute on-time/total per channel.
The card automates this join. The portal can support it manually, but only the merchant has the channel mapping. For account-managed customers, the APC monthly Service Performance Report (SPR) does not split by channel. APC cannot, the channel-tag does not exist on their side. The merchant’s BI team has to do this join; this card replaces that workstream. Why our number may legitimately differ from a manual reconciliation: Internal identity (within APC): weighted-average(channel-OTD% × channel-volume) = apc_otd_rate aggregate. The per-channel rates and the network aggregate must reconcile to within a rounding tolerance of ±0.1 percentage points. Larger gaps point to channel-attribution failures (orders with no channel tag), which surface as “Unknown” channel volume. Cross-connector reconciliation:

Known limitations / merchant FAQs

Why is one of my channels showing “Unknown” with high volume? Most likely: the order’s source-channel tag is not being passed through to APC’s customer_reference, or the merchant’s OMS is using a different reference number on each side of the join. Two fixes. (1) Audit the OMS-to-APC integration so that the order’s source channel is captured and the consignment reference is the order ID. (2) For B2B orders entered manually, add a “Channel: B2B” tag in the OMS. The card consolidates over time as the data improves. My marketplace channel is below 90% but my Shopify is fine. Is APC the problem? No. If APC’s network were the problem, both channels (and B2B) would be amber. The fact that the underlying APC service is at 99.5% on B2B and 96.9% on Shopify tells you the network is healthy; the marketplace channel is failing for channel-specific reasons. Most common causes: (a) address-data hygiene on marketplace ingestion, (b) marketplace-specific dispatch-cutoff slippage, (c) marketplace customers ordering items APC has no rate negotiated for and being dispatched on a sub-optimal service. Investigate at the channel layer, not at APC. How is sales channel attributed to an APC parcel? The merchant’s OMS or e-commerce platform passes the order’s source-channel tag through to the APC consignment booking via customer_reference (the merchant’s order number). Vortex IQ joins APC consignment records back to the upstream order on this reference. If the join fails, the parcel lands in “Unknown” channel. My APC contract is per-shipment, not per-channel. Why do I care about per-channel OTD? Two reasons. (1) Customer experience asymmetry. A 90% OTD on a low-AOV marketplace channel is much less damaging than a 90% OTD on a high-AOV B2B channel; you need to know which is which. (2) Channel-mix decisions. If marketplace OTD on APC is consistently 5+ points below DTC, the right answer may be to move marketplace volume to a different carrier (e.g. Royal Mail Tracked-24) where the lower SLA matches the lower customer expectation, freeing APC capacity for high-AOV DTC and B2B where the premium pays back. Does this card include returns and RTO? No. Returns to sender are tracked on apc_returned_to_sender and excluded here. The card scores outbound delivery only. Why does the alert trigger on any channel <90% and not on aggregate? Because the cost of the failure is concentrated in the channel that fails. A 95% aggregate that hides an 80% B2B-EDI channel is a bigger fire than a steady 92% across all channels. The alert is set to surface the single worst-performing channel, regardless of aggregate. My channel mix is unstable, the worst channel each week is different. Is the card useful? Yes, but read it with volume context. A channel that lands at 88% on 12 shipments in a quiet week is statistical noise; the same on 1,200 shipments is real. The card includes a volume column for this reason; the alert can be tuned per-workspace to ignore channels with <50 shipments. What if I want APC OTD for a specific marketplace, not “Marketplaces” pooled? Filter apc_shipments_by_destination or apc_shipments_by_service by the specific source tag. The card here pools “Marketplaces”; per-marketplace splits are on the roadmap and can be unlocked by adding granular channel mappings in the integration config. Should I publish per-channel OTD% to my marketplace partners? Cautiously yes. Most marketplaces have their own seller-rating SLA (e.g. Amazon’s “On-Time Delivery Rate” KPI in seller central). If your APC OTD on that marketplace’s channel correlates with the marketplace-side rating, the card is the operational diagnostic; the marketplace’s own rating is the contractual one. Use this card to act, the marketplace’s rating to comply.

Tracked live in Vortex IQ Nerve Centre

APC OTD by Sales Channel is one of hundreds of KPI pulses Vortex IQ tracks across APC Overnight 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.