Plain-language questions
Ask for on-time delivery rate per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
KPI · Logistics
On-time delivery (OTD) is the percentage of shipments delivered on or before the date promised to the customer. It measures whether you keep your delivery promise, regardless of whether the delivery was complete. It is one of the figures customers notice first.
Shipments delivered on or before the promised date ÷ total shipments delivered × 100%
In May 2026 Acme Groothandel delivered 3,500 shipments. Of these, 3,290 arrived on or before the promised date. The on-time delivery rate is 3,290 ÷ 3,500 × 100% = 94.0%.
Fictitious figures for Acme Groothandel, a sample wholesaler.
A higher rate means customers can rely on your delivery promise. Break late deliveries down by cause: shipped late, or shipped on time but slow in transit. Compare by carrier, region and customer segment, and against the delivery promise in your terms or contracts.
SQL & DAX
Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.
SELECT date_trunc('month', delivered_at) AS month,
carrier,
COUNT(*) AS delivered,
COUNT(*) FILTER (WHERE delivered_at::date <= promised_date) AS on_time,
ROUND(100.0 * COUNT(*) FILTER (WHERE delivered_at::date <= promised_date)
/ NULLIF(COUNT(*), 0), 1) AS on_time_pct
FROM shipments
WHERE delivered_at IS NOT NULL
GROUP BY 1, 2
ORDER BY 1, 2;Delivered Shipments = CALCULATE(COUNTROWS(Shipments), NOT ISBLANK(Shipments[DeliveredDate]))
On-Time Delivery % = DIVIDE(COUNTROWS(FILTER(Shipments, NOT ISBLANK(Shipments[DeliveredDate]) && Shipments[DeliveredDate] <= Shipments[PromisedDate])), [Delivered Shipments])In ENABLE
Ask for on-time delivery rate per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.
Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.
With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.
FAQ
Divide the number of shipments delivered on or before the promised date by the total number of shipments delivered in the same period. Use the date you promised the customer, not an internal plan. Multiply by 100 for a percentage.
On-time delivery only checks whether the delivery was on time. OTIF (on time in full) also requires the delivery to be complete. OTIF is therefore always equal to or lower than on-time delivery.
In most definitions it does, because the customer does not have to wait. For booked deliveries, such as to a distribution centre with fixed time slots, early can be as disruptive as late. Agree which window applies for each customer group.
In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.