Repair revenue, not form fills
Rank channels by the repair revenue they produced, so one major repair outweighs a page of oil-change inquiries.
Marketing attribution for Auto Repair Shops
Match closed repair orders and their revenue to the calls and campaigns that produced them.
$203,000 58% of $350,000 paid
The blind spot
A shop's marketing is judged on calls booked, but an oil change and a transmission rebuild are the same call and a hundredfold different in revenue.
What you get
Rank channels by the repair revenue they produced, so one major repair outweighs a page of oil-change inquiries.
Someone who asked for a quote in March and booked the repair in June still credits March's campaign.
Only exact matches count automatically; anything weaker is flagged for review rather than assumed.
A worked example
Not impressions, not leads, not cost per click. Closed revenue, by the channel that produced it, for a period you choose — with the portion we could not trace shown rather than quietly shared out across your paid channels.
| Channel | Sales | Revenue | Share | % |
|---|---|---|---|---|
| Google Ads | 203 | $101,500 | 29% | |
| Local service ads | 142 | $77,000 | 22% | |
| Meta Ads | 61 | $24,500 | 7% | |
| Direct / Unknown | 289 | $147,000 | 42% |
Two channels can produce identical call counts at identical cost while one fills the bays with $60 oil changes and the other with $2,400 engine work. Cost-per-call rates them the same.
Ranking on repair-order revenue separates them immediately, and it is normally the difference between a channel that pays for itself and one that does not.
A first-time customer who returns twice a year for four years is worth many times the first ticket, and no click-based tool credits the original campaign for visit seven.
Because the match is on the customer, every later order credits the channel that produced them — which usually reorders the ranking entirely.
Every multi-point inspection produces a list of recommendations the customer declines that day. Brakes at four millimeters, a weeping water pump, tires that will not pass next year. Some of that work comes back through the door in three months and some of it never does, and when it returns it is booked as a fresh repair order with no memory of where the customer originally came from. It is the largest identified pipeline in the shop and almost no advertising report has ever counted a dollar of it.
Matching on the customer solves the memory problem without anybody building a report to do it. A repair order raised in November for work declined in August credits the channel that produced that customer, because it is the same phone number in the same file. What that changes is the apparent payback on the channels that bring genuinely new customers rather than repeat ones, which tend to be the expensive channels everyone is nervous about. Judged on the first ticket they look poor; judged across the customer they frequently do not.
It is worth exporting a full year for exactly this reason. A month of repair orders shows you first visits and nothing else; twelve months shows the shape of the relationship, including the customers who came once and were never seen again. The same two files answer how often a second visit happens by source, without any extra work, and in a trade where the second visit is the whole margin story that is the more useful of the two numbers on the page.
Shops schedule work and then lose it. The customer does not turn up, the estimate is declined at the counter, the part is on back order and the job is rebooked into a week that never arrives. The appointment book and the closed repair orders disagree by a meaningful margin in every shop, and it is not the same margin for every source of work. A campaign that fills the diary and a campaign that fills the bays can be two different campaigns, and only one of them pays for the building.
This is why the revenue file has to be closed, invoiced repair orders rather than appointments. The appointment list is still worth having — use it as the lead file and the report shows what a booking from each channel turns into — but the money side must be work that was done and paid for. Anything else is a forecast, and a forecast ranked as though it were revenue is precisely how a budget ends up funding the wrong half of the phone.
The gap itself is a finding. If one source produces appointments that convert to invoiced work at half the rate of another, that is a targeting or an expectation problem rather than a pricing one, and it shows up as soon as the appointment book is the lead file. A shop advertising a headline price for one specific service may find the gap sits exactly there: the promotion fills the diary with people who booked the promotion, declined everything else, and left.
A repair order's pay type changes both what it is worth to the business and what marketing had to do with it. Customer-pay work is retail revenue produced, at least partly, by whatever brought that person through the door. Extended-warranty and third-party administrator work arrives with a claim attached and a rate you did not set. Internal work is the shop billing itself. Averaged together they produce a figure that flatters the month and describes nothing, and they are averaged together constantly, because the export defaults to everything.
A pay-type column mapped as Product / service shows customer-pay, warranty and internal revenue as separate lines, with how much of each traces to a channel. To rank channels on retail work alone, export only customer-pay work; the ranking always covers everything in the file. The two are answers to genuinely different questions: the first tells you what the advertising produced, the second how busy the shop was. Confusing them is common and expensive, because a quarter that looks strong on total revenue can be one in which retail demand fell and warranty volume happened to cover the hole.
The same column is what makes a commercial account visible. A handful of local businesses running vans through the shop can be a large share of revenue at a rate nothing like retail, and if one of those accounts originally arrived through a campaign then that campaign has earned the credit. If it arrived through a relationship, it belongs in Direct / Unknown with everything else the advertising did not produce. Either answer is useful to have; a blended average of both is not.
Why it matters
"We generated 400 leads" invites an argument. "This channel closed $186,400 last quarter, here is the reconciliation" ends one. The teams that can show closed revenue by channel are the teams that get the next increase approved, because they are asking with evidence rather than with conviction.
Killing spend is politically harder than adding it, because someone always owns the channel being cut. A number that reconciles to the sales export takes the argument out of the room — you are not overruling a colleague's judgment, you are reading the same ledger they are.
Platform-reported conversions do not reconcile to revenue, and eventually someone in finance notices. Reporting built from your own closed-sales export starts from the number finance already trusts, which is why it holds up when it is checked.
Because this reconciles exports rather than tracking visitors, it works on months that have already closed. You are not instrumenting now to learn something in ninety days — you can answer for last quarter today, which is usually when the question is being asked.
Honest answers
Which is what the Direct / Unknown bucket is honest about. What the report changes is the part you do pay for.
If it exports repair orders to CSV, that is enough. Any column layout works.
Two exports and a mapping you confirm once. Nothing is installed on your website and no numbers are bought.
Pricing
The price here is the price on the invoice, plus any sales tax that applies — no per-call, per-minute or per-form fees. Starter usually fits independent repair shops and service centers — one workspace, one seat, and everything that makes the number defensible from the first plan.
A single business getting started
$9/mo
billed monthly
Questions
Anything else? Talk to us — a person answers, usually the same day.
Closed repair orders: a customer email or phone, the total, and a date.
Yes — later orders credit the channel that produced the customer.
Yes, with a service-category column.
Yes, with a location column.
No. It is useful rather than required, and plenty of auto repair shops run this with only an ad platform export.
It is encrypted in transit and at rest and isolated per workspace, so no other account can reach your customers. Deletion is immediate and a DPA is available.
Yes. There was no tag running back then and it makes no difference: the customer appears in both files either way.
Repair-order rows analyzed in a calendar month. Call rows do not count.
Yes. The later repair order carries the same customer contact detail, so it credits the channel that produced them originally. Nothing expires in between, which is why a three-month gap between the recommendation and the job causes no trouble.
It helps. As the lead file, it shows what a booking from each channel converts into in invoiced work, and the spread between sources can be wider than anyone at the counter expects.
Export only customer-pay work if you want the ranking to answer what the advertising produced; the report counts everything in the file. A pay-type column mapped as Product / service shows warranty and internal work as separate lines instead, which answers how busy you were. They are different questions and deserve separate answers.
It may show as a source with a high ticket count and a low average. A service-category column mapped as Product / service adds revenue by category, which shows whether oil changes are a large share of what is attributed; it does not split the promotion's own tickets by what else they bought.
Twelve months at least. One month shows first visits only. A year shows whether customers from each source came back, and in this trade the second visit is where the margin actually lives.
Leave them out if the question is what the advertising produced, or include them with an account-type column mapped as Product / service, which shows their revenue as its own line. The channel ranking itself counts every row in the file, and a few local businesses can dominate revenue at rates unlike retail.
Nearby
Match completed jobs and their revenue to the calls, referrals and campaigns that produced them.
See how it worksMatch closed tickets and their revenue to the calls and campaigns behind them, including the service work that follows.
See how it worksMatch delivered vehicles and front-end gross to the calls, forms and ads that produced them.
See how it worksWhere your sales already are
Export your Square transactions, upload the inquiries beside them, and find out which marketing produced the people who walked in.
What to exportExport repair orders from Shopmonkey, upload the leads behind them, and rank marketing on the customer rather than the ticket.
What to exportExport resolved cases from CasePeer, upload the leads behind them, and rank marketing on fee revenue rather than on signed retainers.
What to exportExport Birdeye conversations as your lead file, match them against closed revenue, and find out what the widget and the listings are worth.
What to exportExport repair orders from Tekmetric, upload the leads behind them, and rank channels on approved work rather than on cars through the door.
What to exportExport your conversations, match them against closed sales, and find out what texting actually produced.
What to exportCapture Yelp calls and requests as leads, match them against closed sales, and separate what the ads added from what the listing would have brought anyway.
What to exportExport invoices from AutoLeap, upload the leads behind them, and separate the customers marketing won from the ones your reminders brought back.
What to exportExport repair orders from Shop-Ware, upload the leads behind them, and rank channels on gross profit — shop by shop.
What to exportExport customers and paid invoices from Thryv, match them on the customer, and see what each source produced in money you received.
What to exportFrom the blog
A dealer group's marketing reports add up to more vehicles than the group sold. Third-party marketplaces, OEM co-op campaigns and your own paid search all claim the same buyer, and the only file that counts each sale once is the one in your DMS.
Read the articleAdd up what your agencies and platforms claim and you have sold the same thing several times over. Nobody is lying. Here is why double counting is structural, how to run the reconciliation meeting, and what to change in the contracts so it stops recurring.
Read the articleEvery attribution vendor quotes a match rate and none of them define it the same way. Here is what the number actually measures, what range is honest for a mid-market business, and the three ways the figure gets inflated before it reaches your slide.
Read the articleStart today
Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.