Use case
How long does it take a lead to reach each milestone, and where does it stall?
Every business has a chain it wants shorter: lead to first contact, inquiry to tour, application to onboarded. The dates are usually in the CRM somewhere. Turning them into an average that survives an argument is the part that takes work.
Lead velocity by rep
saved report · Sales / Velocity
Average days between milestones
| Rep | Leads | Lead to contact | Contact to booked | Booked to estimate | Lead to won |
|---|---|---|---|---|---|
| Dana R. | 412 | 0.4 | 3.1 | 11.8 | 17.2 |
| Priya S. | 351 | 0.6 | 4.0 | 13.5 | 19.4 |
| Marcus T. | 388 | 2.8 | 6.7 | 18.1 | 31.0 |
| Owen K. | 214 | 1.1 | 4.4 | 14.0 | 21.3 |
| Unassigned | 98 | 9.2 | 12.6 | — | — |
| All reps | 1,463 | 1.9 | 5.2 | 14.1 | 21.4 |
applied — a milestone with no date is excluded from the average, not counted as zero — so a rep with few completions shows a dash rather than a flattering number
Every figure above is invented. We build these reports for real businesses and do not put their numbers, or their names, on a public page.
Why it is not one query
The rules that decide the number.
The milestone is often not a field
In one build, nothing records when a lead was booked. What exists is the date a tag was applied. The milestone has to be derived from tag history, and it has to keep being derived the same way as the tag list changes underneath it.
Dates arrive out of order
A tour dated before the inquiry is not a fast tour, it is a data problem. Every elapsed column ships beside a flag marking the rows where the interval came out negative, so a bad average is visible rather than averaged in.
Leads that never got there
A lead with no won date has not taken zero days. Excluding it flatters the average; counting it as zero destroys it. It is excluded from the average and counted in the denominator of the rate beside it, so the two numbers tell you different things on purpose.
Nobody owns some of them
Keap files an ownerless contact under owner zero. Leave that group out of a per-rep report and it quietly stops adding up to the total, so it is a row called Unassigned instead.
Average, or middle?
One lead that sat for two years drags a mean far enough to make a good team look bad. Which measure a report uses is a decision about the business, so it is written down as a rule beside the number rather than buried in SQL.
Same day is not zero days
Contacted within the hour and contacted at 11pm are both day zero. Where same-day speed is the thing being managed, the rule says so and the report carries a separate same-day rate.
Related questions
Connect your AI agent today.
Connect your CRM and let the first import run. Then add ReportMojo to Claude Desktop, ask it about your business, and have it build the reports you need.