Landscaping Business KPIs: 5 Numbers That Matter
By Mark Fulton · 2026-08-12 · 14 min read

A landscaping business with one or two trucks needs five KPIs, and all five can be calculated from records you already keep: quote close rate (quotes accepted ÷ quotes sent), revenue per customer per season (season revenue ÷ distinct customers served), gross margin by service (service revenue minus its direct materials and crew cost, divided by service revenue), season-to-season retention (last season's customers who booked again ÷ last season's customers), and hours actually billed (hours attached to a job ÷ hours you paid for). No field-service platform is required — a quote list, a money log and a calendar produce every one of them.
Every page that ranks for this query was written by somebody who sells software to landscapers with crews, trucks and a dispatcher. That shows in the metrics they pick. The 2013 trade piece still ranking on page one lists eight categories including a workers' compensation mod factor and an equipment-ownership analysis. The vendor blogs measure monthly recurring revenue, involuntary churn and net promoter score. Those are real numbers for a company with forty accounts per crew and someone in an office to maintain them. They are not the numbers that change what a two-truck operator does on Monday.
This post is the small version. Five numbers, each with the arithmetic, a worked example, and the one decision it should trigger.
Which five numbers tell a landscaper how the business is doing?
Here is the whole thing as a scorecard. Print it, or copy it into a sheet — the columns are the working parts.
| # | Number | Where the raw figure comes from | Formula | What a move means | The one action it triggers |
|---|---|---|---|---|---|
| 1 | Quote close rate | Your quote list — every estimate sent, marked won or lost | Accepted ÷ sent, over a fixed window | Down: pricing, response speed or lead quality slipped. Up sharply: you may be pricing under the market | Read the last ten lost quotes and note why each was lost |
| 2 | Revenue per customer per season | Money entries tagged to a customer | Season revenue ÷ distinct customers served | Flat while total revenue grows means growth is coming from new accounts, not depth | Pick the five accounts nearest the average and offer one add-on service |
| 3 | Gross margin by service | Money entries split into revenue, materials, and crew hours per job | (Revenue − direct cost) ÷ revenue, per service line | A service with rising revenue and falling margin is quietly funding itself with your time | Reprice or retire the lowest-margin line before next season's quotes go out |
| 4 | Season-to-season retention | Last season's customer list vs this season's bookings | Returning customers ÷ last season's customers | A drop concentrated in one service or one crew is a quality signal, not a market signal | Call the non-returners from the last four weeks of last season first |
| 5 | Hours actually billed | Calendar or timesheet hours vs hours attached to a job | Billed hours ÷ paid hours | Falling with steady revenue means drive time, shop time and rework are eating the day | Re-sequence next week's route before adding any new work |
Everything below explains one row.
If you already run the general small-business version of this — revenue, expenses, profit, open invoices, tasks, next appointment — the six numbers to check every Monday still apply. The five here sit on top of those, and they are specific to a seasonal, quote-driven, hours-constrained trade.
How do you calculate close rate from a quote list?
Close rate is quotes accepted divided by quotes sent, over a window you fix and don't move.
The mechanics that matter more than the formula:
- Count the quote when you send it, not when it resolves. Otherwise slow-deciding customers quietly disappear from the denominator and your close rate flatters you.
- Fix the window and keep it fixed. Spring quotes and August quotes behave differently. Compare April–June to last April–June, not to this July.
- Log the loss reason in three words. "Price", "went silent", "chose neighbour's guy", "too far". Three words at the moment of the loss is worth more than any dashboard built later.
Worked example. Between 1 April and 30 June you sent 41 quotes. Seventeen came back accepted.
17 ÷ 41 = 0.415 → a 41% close rate
That is the number. Now the harder question.
What counts as a good close rate — honestly
There is no credible published benchmark for landscaping quote close rate, and it's worth being specific about why. The pages currently ranking for this keyword either use a figure as an illustration — DynaScape's article walks through a 10% close rate as an arithmetic example, not as a target — or cite general marketing statistics for lead conversion, which measures something different (inbound enquiries becoming leads, not written estimates becoming signed jobs). The UK trade association BALI publishes a 40–60% gross margin target with no sample or source attached. None of these are survey data on landscaping close rates, and none of them should be treated as a bar you're failing to clear.
So benchmark against yourself. Your own last season, same months, same service mix, is a far better comparison than any industry figure — it holds constant your market, your pricing and your reputation. What you're reading is direction, and two patterns are worth acting on:
- Falling close rate with steady quote volume usually means response time, not price. The estimate that arrives in two days beats the estimate that arrives in nine, at the same number.
- A close rate near or above 80% is worth examining rather than celebrating. When almost nobody says no, the price is rarely the reason they said yes.
Why is revenue per customer more useful than total revenue?
Total revenue can go up in two completely different ways, and the two demand opposite responses. Either you're serving more customers, or you're earning more from each one. Total revenue can't tell you which; revenue per customer can.
Divide the season's revenue by the number of distinct customers you served in it.
Worked example. Across the season, 58 customers, $86,480 collected:
$86,480 ÷ 58 = $1,491 per customer
Split it by service depth and the number starts working:
| Customer group | Customers | Season revenue | Average |
|---|---|---|---|
| Mowing only | 34 | $31,280 | $920 |
| Mowing plus at least one other service | 24 | $55,200 | $2,300 |
| All | 58 | $86,480 | $1,491 |
A mow-only customer and a mow-plus-mulch-plus-cleanup customer cost roughly the same to win and roughly the same to schedule. One is worth two and a half times the other. That gap is the single most actionable thing on a small landscaper's spreadsheet, because closing it requires no marketing spend at all — it requires one conversation with people who already trust you enough to give you a key to the side gate.
The practical move: sort your customer list by season revenue, find the accounts clustered just below the average, and offer each of them exactly one add-on. Not a menu — one, chosen for their property.
Which services are actually carrying the margin?
Gross margin by service is revenue minus the direct cost of delivering that service, divided by revenue. Direct cost means materials plus the crew hours the job consumed. Overhead — insurance, the truck payment, your phone — stays out of this calculation. You're comparing service lines against each other, and overhead applies to all of them.
Worked example, two lines from one month.
Mulch install:
Revenue $4,200
Materials $1,650
Crew: 26 hours × $20 $ 520
Direct cost $2,170
Gross profit $2,030
Margin: 2,030 ÷ 4,200 = 48%
Mowing route:
Revenue $6,600
Materials $ 0
Crew: 88 hours × $20 $1,760
Fuel and disposal $ 240
Direct cost $2,000
Gross profit $4,600
Margin: 4,600 ÷ 6,600 = 70%
Mowing wins on margin percentage, comfortably. But run the same two jobs per crew hour:
Mulch: $2,030 ÷ 26 hours = $78 gross profit per crew hour
Mowing: $4,600 ÷ 88 hours = $52 gross profit per crew hour
Now mulch wins, by half again. Both calculations are correct; they answer different questions. Margin percentage answers "how much of each dollar do I keep?" — the right question when demand is unlimited and cash is tight. Gross profit per crew hour answers "how much does an hour of my crew's time earn?" — the right question when you're booked out and choosing what to say yes to. Most two-truck landscapers are in the second situation from May onward and still make decisions using the first.
For the crew-hour rate to mean anything, use a realistic loaded labour figure rather than a guess. The US Bureau of Labor Statistics puts the median hourly wage for grounds maintenance workers at $18.50 as of May 2024, across about 1.3 million jobs — and the Occupational Employment and Wage Statistics programme's May 2025 estimate for landscaping and groundskeeping workers specifically is a median of $18.82 an hour. Your own payroll rate is the one to use; the national figures are a sanity check that tells you whether your assumed labour cost is anywhere near reality before you build pricing decisions on it.
One boundary worth naming plainly: this is operational arithmetic for your own decisions, not accounting or tax treatment. How costs are classified on a tax return, what's deductible, and which method your books use are questions for a bookkeeper or CPA. The SBA's guide to managing your business finances covers the difference between the two roles and what each one costs.
How do you measure season-to-season retention without a CRM?
You need one thing: last season's customer list. Not a CRM, not a churn model — a list.
Take the customers you served last season. Count how many have booked at least one job this season. Divide.
44 returned ÷ 58 last season = 76% retention
Some cautions that a vendor's churn-rate dashboard will not give you:
- Set a cutoff date and use the same one every year. Retention measured on 1 June is a different number from retention measured on 1 August. Both are fine; mixing them is not.
- Seasonality is not churn. The BLS notes that grounds maintenance work is partly seasonal, available mainly in spring, summer and autumn. A customer who books in May every year has not churned in March.
- Look at where the non-returners cluster. Fourteen non-returners spread evenly across the season is market noise. Fourteen who all last saw you in the final month of last season is a signal about how the season ended — burnt-out crew, rushed work, a missed autumn cleanup.
Retention is the number with the longest lag and the most leverage. A customer kept is a customer you never have to quote for again, which is why it belongs next to close rate rather than in a separate report.
What should you check weekly versus once a season?
Not every number rewards weekly attention. Three of these five move too slowly to check often, and watching them weekly just adds noise.
| Cadence | Check | Why this cadence |
|---|---|---|
| Weekly | Quotes sent and quotes closed this week | The correction — faster replies, a revisited price — only works if you catch it inside the quoting season |
| Weekly | Hours billed vs hours paid | Route problems compound; a bad route repeated for six weeks is six weeks of margin |
| Monthly | Gross margin by service | You need enough completed jobs in a line for the number to mean anything |
| Monthly | Revenue per customer, running | Tells you whether depth or headcount is driving the month |
| End of season | Close rate for the full season | The comparable figure — same months, previous year |
| Start of season | Retention against last season's list | It sets the entire year's quoting workload |
The weekly pair takes about four minutes if the raw data is already logged. That "if" is the entire difficulty, and it's a logging problem rather than an analysis problem.
How to measure hours actually billed
This is the fifth number and the one most often skipped, because it requires knowing where the day went.
236 hours attached to a job ÷ 320 hours paid = 74% billed
The missing 26% is not waste by definition — drive time between properties is unavoidable, and so is loading, fuelling and equipment repair. But it is the number that explains why a busy season can end with disappointing profit. When billed hours fall while revenue holds steady, the cause is almost always route sequencing or rework, and both are fixable next week rather than next season.
You don't need timesheet software to get this. Two columns on the calendar entry — hours on site, hours to get there — is enough, and it's the same act as marking the job done.
Where these numbers come from if you don't have a system
All five fall out of three records: a list of quotes with a won/lost mark, money entries tagged to a customer and a service, and a calendar with hours on it. A spreadsheet is genuinely enough, and for a lot of one-truck operations it is the right answer.
If you'd rather not build the spreadsheet, that's what this site is: SMBDashboard is a free browser-based dashboard where the money module logs revenue and costs per customer, tasks track the follow-ups, and appointments hold the schedule. Your data stays in your browser unless you turn on Pro sync. Start with the money module — logging revenue and direct costs against a customer and a service label is what makes numbers 2 and 3 computable at all, and it takes about a minute a job. If the cost side is what's missing, the small business expense tracker page covers just that half.
Honest limits: the free tier holds 25 customers and 200 money entries, which is enough to run one season for a small route but not a 60-account book. Pro removes the caps and adds CSV export and recurring entries — $48 every six months (about $8 a month) or $149 once. If you outgrow the free caps mid-season, that's the decision point, and a spreadsheet remains a perfectly respectable alternative.
Whichever way you keep the records, keep them. The IRS's Publication 583, Starting a Business and Keeping Records, lists monitoring your business's progress first among the reasons to maintain books — ahead of preparing a return — and it's right about the ordering. The records exist for you. Filing is what happens to them afterwards.
FAQ
What is a good close rate for landscaping quotes?
There's no reliable published benchmark, and the figures circulating on landscaping KPI pages are either illustrative examples or general marketing-conversion statistics measuring something else. Use your own previous season over the same months as the comparison. Direction is the useful signal: a falling close rate at steady quote volume usually points at response time rather than price, and a close rate consistently above about 80% is worth a hard look at your pricing rather than a celebration.
How do I know which lawn service is most profitable?
Calculate two figures per service line, not one. Gross margin — (revenue − materials − crew cost) ÷ revenue — tells you how much of each dollar you keep. Gross profit per crew hour tells you what an hour of your crew's time earns. They frequently disagree: in the worked example above, mowing had a 70% margin but returned $52 per crew hour, while mulch installs at 48% margin returned $78. When your calendar is the binding constraint, the per-hour figure is the one that should drive what you quote.
Do I need field-service software to track KPIs?
No. All five of these numbers come from a quote list, money entries and a calendar. Field-service platforms earn their cost when you're dispatching multiple crews, routing dozens of stops a day and need someone other than you to see the schedule. Below that, the platform is mostly overhead, and the reason so many articles insist otherwise is that most of them are published by the platforms.
How often should a landscaper review the numbers?
Weekly for quotes sent and closed, and for hours billed against hours paid — both are correctable inside the same season. Monthly for margin by service and revenue per customer, once enough completed jobs have accumulated to be meaningful. Once a year for retention, at the same cutoff date each time, checked at the start of the season while there's still time to act on it.
Sources
- U.S. Bureau of Labor Statistics, Occupational Outlook Handbook: Grounds Maintenance Workers — median hourly wage $18.50 (May 2024), 1,296,400 jobs (2024), seasonality of the work
- U.S. Bureau of Labor Statistics, Occupational Employment and Wage Statistics, May 2025 — Landscaping and Groundskeeping Workers (SOC 37-3011), median hourly wage $18.82
- U.S. Small Business Administration, Manage your finances — bookkeeper vs CPA, accounting methods
- Internal Revenue Service, Publication 583, Starting a Business and Keeping Records — reasons for keeping business records