Why the Standard Percentage Misleads You
The instinctive calculation is simple: take the number of jobs you booked this month, divide by the number of quotes you sent this month, and multiply by 100. The problem is that quotes sent late in the month almost never resolve in the same month. A quote sent on the 28th may not get a yes or no until the 5th of next month. When you include those unresolved quotes in your denominator, you artificially deflate the rate. When you exclude them from next month's denominator because you forgot about them, you lose the data entirely.
The fix is cohort-based tracking. Instead of measuring by calendar month of quote issuance against booking date, you measure by quote resolution date. Every quote gets logged when it is sent, then updated when it closes, whether that means approved, declined, expired, or still pending. Your conversion rate is calculated only against quotes that have actually reached a final state. Open quotes stay in a holding bucket until they close, then move into the appropriate cohort.
The Four States Every Quote Must Have
Ambiguous quote statuses are the root cause of bad conversion math. If your system only distinguishes between sent and booked, you have no way to separate a quote the customer is actively considering from one they ignored three weeks ago. You need exactly four states, and every quote should sit in one of them at all times.
Approved means the customer said yes and a job is scheduled or complete. Declined means you received a clear no, or you made a documented decision to treat silence as a no after a defined waiting period. Expired means you applied a quote expiration policy and the window closed without a response. Open means the quote is still within its valid window and awaiting a response. Only Approved, Declined, and Expired quotes belong in your conversion denominator. Open quotes sit outside the calculation until they move to a final state.
- Approved: customer confirmed, job scheduled or completed
- Declined: explicit no received, or silence treated as no after your defined cutoff
- Expired: validity window closed with no response and no follow-up extension granted
- Open: still within the valid window, awaiting response, excluded from rate calculation
Related resource: What to Say When a Detailing Quote Is 'Too Expensive'
The Cohort-Based Formula
The formula itself is straightforward once your statuses are clean. Count all quotes that reached a final state during a given review period, regardless of when they were originally sent. Divide the number of Approved quotes by the total of Approved plus Declined plus Expired. Multiply by 100 to express it as a percentage. Open quotes are not in any part of this fraction.
Conversion Rate = (Approved) divided by (Approved + Declined + Expired) multiplied by 100. This means a quote sent in March that the customer declines in April belongs in April's cohort, not March's. Your March rate may look lower because some of its quotes are still open. That is accurate. It reflects the true state of the business at that point in time, not a retroactively cleaned-up picture.
QUOTE CONVERSION RATE WORKSHEET Review Period: _______________ Step 1: Pull all quotes that reached a FINAL state this period Approved this period: ___ Declined this period: ___ Expired this period: ___ Total Closed: ___ (add the three lines above) Step 2: Count quotes still OPEN (valid window not yet closed) Open (excluded): ___ Step 3: Calculate rate Conversion Rate = Approved / Total Closed x 100 = ___ / ___ x 100 = ___% Step 4: Note open-quote carryover Open quotes from last period that closed this period: ___ Still-open quotes aging past 14 days: ___ Action on aged open quotes: ________________________ Notes / unusual factors this period: ________________________________________________
Worked Example: The Denominator Problem in Practice
Here is a hypothetical scenario to show how the denominator error plays out. Imagine a solo mobile detailer, call him Marcus, who sent 20 quotes in April. By April 30, he had booked 9 jobs. Using the naive calculation, he tells himself his conversion rate is 9 divided by 20, or 45 percent. That feels decent. But 6 of those 20 quotes were sent in the final week of April and have not yet received any response. Three more quotes came back as explicit declines. Two had expired after 7 days of silence per his policy.
Using the cohort method, Marcus's closed quotes for April are: 9 Approved, 3 Declined, 2 Expired, totaling 14 closed. The 6 open quotes move to May's watch list. His actual April conversion rate is 9 divided by 14, or 64 percent. That is a more useful number because it reflects the quotes that actually ran their course. When the 6 open quotes resolve in May, they will join May's cohort regardless of when they were issued. If 3 of those 6 eventually approve and 3 decline, May gets credit for 3 Approved and 3 Declined from that carry-forward group, added to whatever new quotes close that month.
What Distorts the Rate Beyond Math Errors
Even with correct math, your conversion rate can mislead you if the composition of quotes is changing. A period in which you quoted more complex paint correction jobs will likely show a lower rate than a period dominated by simple wash-and-wax requests, not because your sales skills changed but because the customer base shifted. If you start tracking lead sources, you may find that quotes from one channel close at a meaningfully different rate than quotes from another. That difference matters more than the overall average.
Seasonal availability pressure also skews interpretation. When you are nearly fully booked, some customers may decline not because of price but because your earliest opening does not suit them. That counts as a declined quote and lowers your rate, but it does not signal a pricing or communication problem. The rate is a signal worth investigating, not a verdict in itself. When you see movement, look for a cause before changing anything.
Related resource: Qualify Detailing Leads Before Spending Time on a Quote
Handling Aged Open Quotes Without Distorting Results
Open quotes that sit unresolved for a long time are a tracking hazard. If you let them accumulate indefinitely, your closed-quote denominator shrinks and your rate looks artificially good. You need a policy for when an open quote becomes a declined or expired quote so that every quote eventually exits the open bucket.
A reasonable approach is to set a quote validity window, typically 7 to 14 days, communicated to the customer at the time of sending. If no response arrives by that date, you mark the quote Expired and it enters the denominator as a non-conversion. If you choose to extend the window after a follow-up, update the expiration date in your log and note that an extension was granted. This keeps the aging bucket honest. Quotes should not sit in Open status for 45 days while you tell yourself the customer might still come back. A deliberate extension is a separate decision from passive neglect.
Related resource: Detailing Quote Follow-Up: A Useful Message Sequence
Tradeoffs and Failure Cases
The cohort method creates a short-term information gap. In the first few weeks of using it, you will have fewer closed quotes than you expect because your historical open quotes are entering the denominator for the first time. Your calculated rate may jump or drop sharply in the first one or two review periods. That volatility is a one-time calibration artifact, not a real change in performance. Stick with the method through at least two full review cycles before drawing conclusions.
The other failure mode is inconsistent status updates. If you forget to mark a declined quote as Declined, it stays in Open and eventually ages out as Expired, which misrepresents why it did not convert. If your follow-up article covers loss-reason tracking, consistent status updates are the prerequisite for that data to be valid. The formula only works if every quote gets a final status entered when the outcome is known, not batched at month-end from memory.
Setting Up a Simple Tracking System
You do not need dedicated software to track this correctly. A shared spreadsheet with columns for quote number, customer name, date sent, service type, quote amount, expiration date, status, and resolution date is sufficient for a solo operator or small team. Filter by resolution date to pull your cohort for any period. Total the final-status rows and apply the formula. Review it weekly if your volume is high, monthly if your volume is lower.
If you use a CRM that tracks quotes or requests through a workflow with defined stages, the same logic applies. Map your four statuses to whatever stage labels your system uses, and make sure your team updates the status promptly when an outcome is known. In WeavrCRM, the lead and request workflow lets you move a contact through stages as a quote progresses, which can serve as a lightweight status tracker when used consistently. The calculation still happens outside the system in a worksheet, but the underlying status data is maintained in one place rather than scattered across text threads.
Whatever system you use, the tracking habit is more important than the tool. A rate calculated monthly from accurate statuses will show you real trends over time. A rate calculated ad hoc from approximate memory tells you almost nothing actionable.
| Quote Status | Include in Denominator? | Include in Numerator? | When to Apply |
|---|---|---|---|
| Approved | Yes | Yes | Customer confirmed, job scheduled or complete |
| Declined | Yes | No | Explicit no received from customer |
| Expired | Yes | No | Validity window closed, no response, no extension granted |
| Open | No | No | Still within validity window, awaiting response |
The practical takeaway
Start by assigning one of four statuses to every quote you have sent in the last 30 days. Move any quote past its expiration date to Expired, flag genuinely open ones, and calculate your rate only from closed quotes. Run that number monthly for three months before making any operational changes based on it.
Explore the relevant WeavrCRM workflow · Review integrations and requirements