“We are too small for this.”
The smaller the team, the larger the share of the budget a single wrong call wastes. Starter pricing exists for exactly this size and the work is two uploads.
For Jobber
Export paid invoices and match them to the campaigns that produced the customer — including the recurring work that follows.
CloseRev reads a Jobber export of invoiced work — the client's phone or email, the invoice total and the date — and joins it to wherever your leads and calls are recorded. The output is closed revenue per channel for a business whose jobs are small and numerous, which is the case ad platforms report worst. Nothing is attributed on a guess: an invoice with no matching lead stays in Direct / Unknown.
Page updated September 24, 2026.
The gap
You are a small team with a real ad budget and no analyst. Jobber tells you what you earned; it cannot tell you which advertisement earned it.
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.
The client record attached to the invoice. Either works; both is better, because a household often calls from one number and pays from another address.
What was actually billed. If you work from quotes, use the invoice — the two differ most on the jobs worth measuring.
Whichever your bookkeeping uses. Keep it consistent between uploads.
Lets a one-off clean be judged separately from a recurring contract.
Step by step
Written for somebody with Jobber open in the next tab. Report names vary by edition, so each step says what to look for.
You want a list of billed work with the client's contact detail on each row. Jobber's reporting is exportable, and the shape you need is the ordinary billed-work list rather than anything specialized.
Recurring clients and seasonal trades both need more than a quarter before a pattern is legible.
A phone number or an email is what makes the row matchable. Without it the file is an accounting record and nothing else.
Mapping is suggested and you confirm it. Manual mapping is always available and is the fallback whenever a header is unusual.
Google Ads, Local Services, Meta, or a call tracking export. Any one is enough to start; to use several, combine them into one lead file with a source column on each row.
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 Landscaping & Lawn Care page — not from a Jobber account.
| Channel | Share | Sales | Revenue |
|---|---|---|---|
| Google Ads | 148 | $116,000 | |
| Local service ads | 94 | $72,000 | |
| Meta Ads | 41 | $32,000 | |
| Direct / Unknown | 229 | $180,000 |
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
A twelve-person landscaping company spends real money on search ads and has nobody whose job is to evaluate it. The owner sees a monthly ad bill and a monthly revenue figure, and the relationship between them is a matter of opinion. That is not a reporting gap anybody chose — it is what happens when the two facts live in different systems and joining them by hand takes an afternoon nobody has.
That is the exact job this does, and it does it from files that already exist. There is nothing to install on a website, no tag to maintain, and no dependency on anybody remembering to ask a caller how they found you.
The output is one page: channels ranked by the revenue they actually produced, the number of jobs behind each, and an honest count of the work that could not be traced to any channel.
Jobber's core strength is repeat and recurring work, which is also where marketing measurement usually breaks. A lawn maintenance client at two hundred dollars a visit, twenty-six visits a year, for three years, is a five-figure customer. The advertisement that produced them is scored against the first visit.
Because the match is on the client rather than on a job, every later invoice against that client credits the channel that produced them. A channel that brings recurring clients and one that brings single call-outs stop looking alike, and that alone can reverse the ranking.
Nothing is forecast. Only invoices that have actually been raised count, so the figure is one you can reconcile against your own books rather than a projection of what a client might be worth.
Trades on Jobber are frequently seasonal in a way that makes month-on-month comparison meaningless: spring clean-ups, summer pest pressure, autumn gutter work. A channel that looks strong in May and weak in November may simply be a channel that sells a May service.
Uploading two or three years lets the report compare the same weeks across years instead of consecutive months. That is usually the difference between a chart somebody argues about and a chart somebody acts on.
You do not have to connect Jobber to anything, grant API access, or upgrade a plan to get an integration. The input is a CSV you can export today and open in a spreadsheet to check before you send it.
You also do not have to have been tracking anything until now. Because this works from records kept for billing rather than from a tag that had to be present at the time, last year is as analyzable as this month.
Two things are worth expecting. The Direct and Unknown bucket can be large, because word of mouth and long-standing customers are a real share of a small trade's revenue, and nothing traces them to an ad.
The second is that the channel with the most jobs need not be the channel with the most revenue. Cheap clicks bring small jobs. That is not a failure of the advertising; it is what those keywords are. Knowing it lets you bid differently rather than switching the campaign off.
Neither finding is a reason to stop advertising. Both are reasons to stop guessing which part of the budget is doing the work.
Fair questions
The smaller the team, the larger the share of the budget a single wrong call wastes. Starter pricing exists for exactly this size and the work is two uploads.
Then the report will show a large Direct bucket, honestly, and you will be able to size the ad budget against that rather than against a guess.
Not required. The ad platform export alone works; call tracking adds the phone side if you ever add it.
Billed invoices or jobs: a client phone or email, the amount, and a date.
Invoices. A quote is not revenue, and every row in the sales file is counted as a sale, so only billed work belongs there.
Yes, and it credits the channel that produced the client originally rather than counting as a new acquisition each visit.
Yes, with a service or job type column.
A year at minimum. Two or three if your trade is seasonal, so the report can compare like seasons.
No. Nothing goes on your website and nothing connects to Jobber. It is a CSV upload.
Not as a figure: the report does not compute time to close. What it does is credit the earliest lead however long ago it arrived, so a slow job is still credited to the channel that started it.
Add the marketplace's leads to your lead file, tagged with its name in the source column, and it ranks against your own channels on revenue.
They are reported as Direct / Unknown rather than assigned to a paid channel.
Three columns leave Jobber: a contact detail, an invoice total and a date. Quotes, photos, notes and payment methods stay where they are. Everything uploaded is encrypted in transit and at rest and lives only in your own workspace; deleting an import removes the rows and the original file.
Yes, if you upload more than a year. Recurring revenue is attached to the client, so a channel's clients can be compared on what they billed over time rather than on a first job.
Yes. Its leads go into the same lead file as everything else, one row each with the marketplace named as the source, and it is ranked on revenue beside your own campaigns.
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.
Jobber 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.
From the blog
Multi-crew home and field services businesses run on phone calls and job management software, not on web forms. Which means the standard marketing dashboard is measuring the smallest part of the business and missing where the money actually is.
Read the articleCall tracking answers one question well: which campaign produced the ring. It has no view of what happened after the call ended, which is where the money is decided. This is what the gap costs, and how to close it without replacing the call tracker you already have.
Read the articleYou can see which channel each sale came from with two exports and a dozen formulas: clean every phone number to ten digits, lowercase every email, find each customer's earliest lead dated on or before the sale with MINIFS, return its source, and total revenue by channel with a Direct / Unknown row. Here are the formulas for Excel and Google Sheets, why VLOOKUP gets the answer wrong, a worked example of eight sales and ten leads, and where a spreadsheet stops being enough.
Read the articleStart today
Nothing to install in Jobber, no API key, and no need to have been tracking anything until now. Last year works as well as this month.