EnableYourData.com

KPI · Projects and time

On-time project delivery: formula and example.

On-time project delivery is the percentage of completed projects delivered on or before their planned end date. You divide the number of projects delivered on time by the total number of projects completed in a period. It says something about how reliable your planning and your commitments to clients are.

On-time project delivery formula

Projects completed on or before the planned end date ÷ all completed projects × 100%

Worked example

Acme Groothandel completed 40 installation projects in 2025. Of these, 34 were delivered on or before the planned date. On-time project delivery is 34 ÷ 40 × 100% = 85.0%.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A higher percentage means clients can rely on the agreed date more often. Also look at how many days late the other projects were: one day or one month makes a big difference. Compare by project type and project manager, and look for recurring causes in late projects, such as material lead times or overly tight schedules.

Pitfalls with on-time project delivery

  • Moving the planned end date mid-project and measuring against the new date without keeping the original.
  • Showing only the percentage and not how large the delay was.
  • Counting projects the client postponed as late without distinguishing them.

SQL & DAX

Calculating on-time project delivery in SQL and 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.

SQL · PostgreSQL
SELECT date_trunc('quarter', actual_end)::date AS quarter,
       COUNT(*) AS completed_projects,
       COUNT(*) FILTER (WHERE actual_end <= planned_end) AS on_time,
       ROUND(100.0 * COUNT(*) FILTER (WHERE actual_end <= planned_end) / NULLIF(COUNT(*), 0), 1) AS on_time_pct,
       ROUND(AVG(actual_end - planned_end) FILTER (WHERE actual_end > planned_end), 1) AS avg_days_late
FROM projects
WHERE actual_end IS NOT NULL
GROUP BY 1
ORDER BY 1;
DAX · Power BI
Completed Projects = CALCULATE ( COUNTROWS ( Projects ), NOT ISBLANK ( Projects[ActualEnd] ) )
On-time Projects % = DIVIDE ( COUNTROWS ( FILTER ( Projects, NOT ISBLANK ( Projects[ActualEnd] ) && Projects[ActualEnd] <= Projects[PlannedEnd] ) ), [Completed Projects] )

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for on-time project delivery 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.

Read more →

In your Power BI dashboard

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.

Read more →

Custom dashboards (pilot)

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.

Read more →

Monthly targets

With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.

Read more →

FAQ

Frequently asked questions

How do you calculate on-time project delivery?

Count the projects completed in the period and how many of them finished on or before the planned end date. Divide the second number by the first and multiply by 100%. Record whether you measure against the original or the latest agreed date.

Should you measure against the original or revised end date?

Both are useful, but they answer different questions. The original date tells you about your planning, the revised date about your reliability after a change. Keep both and state which one you show.

Why are projects delivered late?

Common causes are optimistic schedules, growing scope, waiting for materials or for the client, and too little capacity. Record the main cause for every late project. After a few months you will see which cause comes up most often.

Use AI on your own data. Securely, and without the headache.

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.