“Shopmonkey already reports customer revenue.”
It does, and it has no record of what produced the customer, because that happened before the first order existed.
For Shopmonkey
Export repair orders from Shopmonkey, upload the leads behind them, and rank marketing on the customer rather than the ticket.
No API key Nothing to install in ShopmonkeyNothing to install No card requiredNo card
CloseRev reads a Shopmonkey export of repair orders — the customer's phone or email, the total and the date — and matches it against the calls, ads and forms that produced the first visit. A repair shop's economics are built on customers returning, so a channel's value is the relationship it created rather than the ticket it opened. Orders with no traceable lead are reported as Direct / Unknown.
Last checked against Shopmonkey's own documentation on September 24, 2026.
The gap
Your cheapest advert brings oil changes. Your most expensive one brings people who come back. Nothing you run tells the two apart.
What was sold, to whom, and for how much.
The click, the keyword, the call, and what each one cost.
The file
Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.
On the customer record rather than the order. Phone is the reliable key in this trade.
Parts and labour together, on closed orders. Open estimates are not revenue.
When the order was closed. Use it consistently across every row.
Make, model and whether the visit was maintenance or a major repair. Both predict whether the customer returns.
Step by step
Written for somebody with Shopmonkey open in the next tab. Report names vary by edition, so each step says what to look for.
One row per order with a customer contact detail, the total and a date.
A first visit measures the coupon. A year measures the customer, which is what a channel actually produced.
Call tracking first — this trade converts on the phone — plus search ads, map listings, the website form and any coupon or marketplace listing.
A regular customer produces four or five orders a year. Marketing decisions are made per customer, not per order.
The join runs on the phone and the email, normalised, with first visits and return visits reported apart.
What comes back
Revenue by channel, the count of sales behind each figure, and an honest bucket for the ones nobody could trace. Sample figures, from the worked example on the Auto Repair Shops page — not from a Shopmonkey account.
| Channel | Share | Sales | Revenue |
|---|---|---|---|
| Google Ads | 203 | $101,500 | |
| Local service ads | 142 | $77,000 | |
| Meta Ads | 61 | $24,500 | |
| Direct / Unknown | 289 | $147,000 |
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
A cheap oil change or a brake special fills bays quickly, and the cost per new customer looks unbeatable in the month it runs.
The customers it brings are, by construction, price-led. A meaningful share of them return only when there is another coupon.
Matching a year of repair orders back to the source is the test, and discount channels usually fail it by a wide margin against sources that produced fewer, stickier customers.
This is not an argument against offers. It is an argument for knowing what a channel's customers are worth before deciding how much of the budget it should have.
An oil change is a small ticket. A transmission or an engine job is the kind of work that makes a shop's month, and the two arrive through different routes.
Emergency repairs come from map results and searches made from the roadside; maintenance comes from reminders, habit and coupons.
Where the export carries a service type, splitting on it stops one channel being ranked as though it produced the other's work, and the reordering is usually substantial.
It also tells you which channel to buy when the bays are empty, which is not the same as the channel with the best annual number.
A small fleet account is worth many retail customers and behaves nothing like one: it is won once, it is invoiced monthly and it is lost to a single bad experience.
Averaged into the same file, one fleet win can make whichever channel produced it look extraordinary, and the conclusion will not repeat.
Reading them separately gives two honest rankings — the channels that produce retail customers and the ones that produce commercial accounts — which are rarely the same list.
Where the export flags a customer type, the split is automatic; where it does not, the order pattern usually identifies the accounts within a few minutes.
A driver with a warning light calls. So does the one who saw the sign, the map result and the coupon, and none of them fill in a form.
Without tracked numbers, the lead file covers the small minority of web enquiries and the rest lands in Direct / Unknown.
Distinct numbers on the website, the map listing, any print or coupon and the sign itself produce a lead file with a source on every row, which is what makes the whole exercise work.
Until that exists, the report states the size of the untracked bucket rather than spreading it across the channels that happen to be measurable.
Fair questions
It does, and it has no record of what produced the customer, because that happened before the first order existed.
They fill bays. Whether they produce customers worth keeping is a different question and the file answers it.
Then most of this trade's enquiries have no source, and tracked numbers are the first fix rather than a different report.
No. It reads a file you exported, so your orders, inventory and customer records are not reachable from here.
Closed repair orders with a customer contact detail, the total and a date.
A year at minimum, because the value of a repair customer is measured in visits, not in one ticket.
They are reported separately, so the decision stays yours rather than being made silently.
Yes, where the export carries a service type, and it usually reorders the ranking.
Read separately from retail. One fleet win otherwise makes a channel look extraordinary on a result that will not repeat.
Summed by customer. The vehicle count is useful context but the relationship is the unit.
Yes, on annual revenue per acquired customer, which is where discount channels usually lose their advantage.
Anything with no traceable lead — mostly untracked calls and passing trade, and its size is worth knowing.
Yes. Two exports is the whole exercise.
A contact detail, an amount and a date, plus a service type or vehicle class if you include them. No VINs required, no notes, no card data. Encrypted in transit and at rest and deleted with the import.
Annual revenue per acquired customer by source, first and return visits apart, retail and fleet separated, and everything unmatched kept visible.
By trade
What the report looks like once the export is in, written for each one.
Other systems
Running more than one system, or comparing? The method is the same and the columns are not.
Shopmonkey and the other product names and logos on this page belong to their owners and are shown to identify the software a file comes from. CloseRev is not affiliated with or endorsed by them, and connects to none of them: it reads a file you export.
Start today
Nothing to install in Shopmonkey, no API key, and no need to have been tracking anything until now. Last year works as well as this month.