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

# Carrier OTD by Sales Channel, DPDLocal

> Joins shipment timing to commerce-sibling orders by order_ref - which sales channel is suffering most from carrier delays. Key Metric. How to read it, why it mat...

**Metrics type:** [Cross-Platform Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Shipping & Courier](/nerve-centre/connectors#connectors-by-type)

> Joins shipment timing to commerce-sibling orders by order\_ref - which sales channel is suffering most from carrier delays. Key Metric.

## At a glance

> Cross-platform OTD split: takes every DPDLocal consignment, joins it back to the originating commerce order (Shopify / BigCommerce / Adobe / SFCC sibling) by `order_ref`, and groups by the originating sales channel. Surfaces "which channel's customers are getting the worst delivery experience" so marketing can match acquisition spend to fulfilment reality.

|                                       |                                                                                                                                                                                                                                  |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**                    | `OTD% by commerce_sibling.order.channel`: the headline OTD percentage broken down per sales channel for the same period.                                                                                                         |
| **Channels typically surfaced**       | Online Store (DTC), Amazon-via-3PL-orders, eBay, Faire, B2B trade portal, POS, marketplace integrations (TikTok Shop, Etsy).                                                                                                     |
| **Join logic**                        | `dpdlocal.shipment.actual_delivery JOIN commerce_sibling.order ON order_ref GROUP BY commerce_sibling.order.channel`. The `order_ref` field on the consignment is the merchant-supplied order reference set at label-print time. |
| **Coverage caveats**                  | Consignments with missing or non-matching `order_ref` are excluded from the join. Coverage is typically 96 to 99% on Shopify and BigCommerce sibling stacks; lower on B2B portals where order references can be free-text.       |
| **`only_when: has_commerce_sibling`** | Card only appears in the Nerve Centre when at least one ecommerce connector is also live in the workspace.                                                                                                                       |
| **Time window**                       | `30D`                                                                                                                                                                                                                            |
| **Alert trigger**                     | `any channel <90%`. Channel-level threshold to surface a problem one channel that the aggregate OTD hides.                                                                                                                       |
| **Roles**                             | owner, operations, marketing                                                                                                                                                                                                     |

## Calculation

Calculated automatically from your DPDLocal 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 fashion DTC merchant on Shopify with active TikTok Shop and a small B2B trade portal. \~10,000 DPDLocal parcels per month total. Reading taken 12 Mar 26 for the trailing 30 days.

| Channel                                                                                    | Volume    | On-time   | OTD       |
| ------------------------------------------------------------------------------------------ | --------- | --------- | --------- |
| Online Store (Shopify DTC)                                                                 | 7,200     | 6,948     | 96.5%     |
| TikTok Shop                                                                                | 1,400     | 1,221     | 87.2%     |
| B2B trade portal                                                                           | 320       | 314       | 98.1%     |
| Faire wholesale orders                                                                     | 180       | 178       | 98.9%     |
| **Aggregate** (matches [OTD Rate](/nerve-centre/kpi-cards/dpdlocal/on-time-delivery-rate)) | **9,100** | **8,661** | **95.2%** |

The card flags **TikTok Shop at 87.2%, below the 90% channel threshold**. Three things to notice:

1. **Aggregate OTD looks healthy at 95.2% but TikTok is in trouble.** The xc card surfaces what the aggregate hides. TikTok-Shop customers are getting a materially worse delivery experience, which depresses repeat-purchase rates from a high-acquisition-cost channel.
2. **Why TikTok specifically?** Three usual reasons. (a) **Address-data quality is lower** on TikTok orders (in-app checkout, no address validation); ADDRESS\_INVALID exception rate is 3 times the DTC rate. (b) **Same-day-promise marketing copy** sets customers up to be disappointed by 1-day NextDay delivery. (c) **TikTok's order export** sometimes truncates or mangles the `order_ref`, causing some failures to fall out of the join (coverage gap, not real OTD drop).
3. **Action.** Add address-validation widget at TikTok Shop checkout (e.g. PostcodeAnywhere); align checkout copy with actual NextDay reality; cross-check `order_ref` integrity in the TikTok-to-Shopify integration.

## Sibling cards merchants should reference together

| Card                                                                                                  | Why pair                                                             |
| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| [On-Time Delivery Rate](/nerve-centre/kpi-cards/dpdlocal/on-time-delivery-rate)                       | Aggregate baseline; this xc card splits it.                          |
| [Late-Delivery Revenue at Risk](/nerve-centre/kpi-cards/dpdlocal/late-delivery-revenue-at-risk)       | Quantifies the £ exposure on the worst channel.                      |
| [3PL vs Carrier Delay Attribution](/nerve-centre/kpi-cards/dpdlocal/3pl-vs-carrier-delay-attribution) | Diagnoses warehouse vs carrier root cause.                           |
| Cross-connector: per-channel acquisition spend (Google Ads, Facebook, TikTok Ads)                     | Pair to compute "acquisition cost per healthy delivery" per channel. |

## Reconciling against the vendor's own dashboard

**Where to look in DPDLocal's dashboard:**

DPDLocal's own portal does not split OTD by sales channel; the channel field exists only in the commerce-sibling order data. This card is a Vortex IQ-derived view, no native DPDLocal counterpart to reconcile against. The closest like-for-like is filtering the MyDPD tracking export by `order_ref` prefix per channel and computing OTD manually.

**Why our split may differ from a manual calculation:**

| Reason                                   | Direction | Why                                                                                                                                                                                                |
| ---------------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Coverage of `order_ref`**              | Either    | If 2 to 4% of consignments fail to join the commerce sibling (truncated or missing reference), they sit in an "Unknown channel" bucket. Channel splits exclude them.                               |
| **Channel taxonomy on commerce sibling** | Either    | Shopify's `source_name` field is sometimes free-text; the card does light normalisation (e.g. `web` and `online_store` collapse to "Online Store") but rare values may surface as their own group. |

**Cross-connector reconciliation:**

| Card                                        | Expected relationship                                                                                                                                         |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Per-channel order count on commerce sibling | Joining-loss = (commerce sibling order count) - (sum of channel rows here). 96 to 99% is healthy on Shopify; below 95% indicates `order_ref` integrity issue. |

## Known limitations / merchant FAQs

**My TikTok / marketplace channel always shows worse OTD. Is the carrier punishing them?**
No, the carrier doesn't know which channel an order came from. Three usual real reasons. (1) **Lower address-data quality** in marketplace-app checkouts that don't run the storefront's address-validation widget. (2) **Customer expectation mismatch**: marketplace-app checkout copy often promises faster delivery than the merchant's actual SLA. (3) **`order_ref` join coverage gap**: some marketplace integrations truncate or mangle the reference, so a fraction of consignments fall into "Unknown channel" rather than the actual channel.

**Why is the aggregate of channels different from the [OTD Rate](/nerve-centre/kpi-cards/dpdlocal/on-time-delivery-rate) card?**
Two reasons. (1) **Coverage gap.** Consignments that don't join to a commerce-sibling order (missing `order_ref`) are excluded from the channel split but included in the aggregate OTD. (2) **Window edge effects** during sync, but these reconcile within 24 hours.

**B2B trade portal shows perfect OTD. Believable?**
Yes, usually. B2B accounts have clean address data (warehouse-to-warehouse delivery), generous delivery windows (`expectedDeliveryDate` set conservatively), and cooperative recipients (no recipient-not-available friction). B2B OTD typically runs 97 to 99% even when DTC is below.

**Can I drill into the worst channel from this card?**
Yes, click the channel bar to filter the [OTD by Route](/nerve-centre/kpi-cards/dpdlocal/otd-by-route) and [Exception Reasons](/nerve-centre/kpi-cards/dpdlocal/exception-reasons) cards to that channel only. The drill-through pre-filters by the same `order_ref ∈ channel` set.

**My channel taxonomy doesn't match what the card shows. Why?**
The card uses the commerce-sibling's native channel field (e.g. Shopify `source_name`, BigCommerce `channel_id`). Free-text or custom channel labels surface as-is. Set up channel-name normalisation in the connector field-mapper if you want tidier display labels.

**Should I pause spend on the worst channel?**
Not before fixing the root cause. The card surfaces the symptom, not the diagnosis. If the channel is structurally bad (e.g. address-data quality), pausing spend is treating the wound, not curing the disease. Fix the root cause first, then re-evaluate.

***

### Tracked live in Vortex IQ Nerve Centre

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