“SmartMoving already has a marketing ROI report.”
It does, on the sources it holds. This adds the campaign and keyword underneath them and puts lead vendors and ad accounts on one axis.
For SmartMoving
SmartMoving reports on the sources it holds. This adds the campaign behind them and ranks every lead vendor on invoiced work.
No API key Nothing to install in SmartMoving No card required
The gap
A marketing ROI report that arrives as a spreadsheet by email is a report nobody opens twice. It is also blind to everything outside the system.
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 customer on the job. Phone first — this trade books by call.
Final invoice rather than the booked estimate, for the same reason every mover already knows.
Used consistently between uploads.
Separates interstate from local, and branch from branch.
Step by step
Written for somebody with SmartMoving open in the next tab. Report names vary by edition, so each step says what to look for.
SmartMoving's marketing reporting exports to a spreadsheet, which is the right starting point — it already holds source against revenue.
This is what lets the report go below the source name to the campaign, keyword and call.
Each becomes a source file. This is where the interesting comparison lives.
Google Ads, Local Services, Meta, and call tracking if you run it.
Interstate and local have different economics and should be judged separately.
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 Long-Distance Movers page — not from a SmartMoving account.
| Channel | Share | Sales | Revenue |
|---|---|---|---|
| Google Ads | 209 | $1,295,000 | |
| Purchased leads | 185 | $1,145,500 | |
| Organic search | 96 | $597,500 | |
| Meta Ads | 40 | $249,000 | |
| Direct / Unknown | 273 | $1,693,000 |
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
Marketing reporting inside operational software tends to be delivered rather than dashboarded: run it, receive a spreadsheet, open it, interpret it. That is fine once a quarter and it is not a cadence that steers weekly spend.
More importantly it can only report on what the system holds. A source name against a revenue figure is genuinely useful, and it is a level above where the decisions get made — which is at the campaign and keyword, inside an ad account the moving software never sees.
Reconciling the invoiced jobs against the ad and call exports produces that level, and produces it as a standing report rather than an attachment.
Movers buy leads and also advertise. Both spends come out of the same budget and are measured in different units by parties with different interests. The lead vendor reports leads. The ad platform reports conversions. Neither reports invoiced revenue.
Putting every vendor's delivered-lead file and every ad export through the same reconciliation ranks all of them on invoiced work. It is a comparison neither party will ever hand you, and it is usually the one that moves budget.
Moving is violently seasonal. A source that performs in June and disappears in November may simply be a source that serves summer demand, and comparing consecutive months will tell you the wrong story about it.
Uploading two years lets the report compare the same weeks across years. For a business whose peak is three months long, that is the difference between a chart that is argued about and a chart that gets acted on.
The moving software holds the job, the customer and the money. It does not hold the keyword, the campaign, the ad spend or the call recording — and it has no route to any of them.
That is not a gap to be apologised for; it is the boundary between an operational system and an advertising one. Crossing it requires reconciling two exports, which is what this does.
Two estimators working the same source will convert it at different rates, and a source that looks weak may simply be routed to whoever is busiest. Ranking sources without that context blames the channel for a routing decision.
Exporting the assigned salesperson alongside the job lets the report break source performance down by who worked it. For a company buying shared leads where speed decides the win, this is frequently more actionable than the channel ranking itself.
It is also the kind of finding that changes an operation rather than a budget, which tends to be cheaper and faster than either.
Fair questions
It does, on the sources it holds. This adds the campaign and keyword underneath them and puts lead vendors and ad accounts on one axis.
It is two uploads a month. There is nothing to install and nothing to keep running.
Then the report will confirm it in invoiced revenue, and you will know what the alternative channels are actually worth before you renegotiate.
Invoiced jobs with a customer phone or email, the amount, and a date.
No. It adds the campaign and keyword layer and ranks external lead vendors on the same axis.
Invoice, for the same reason as every mover's own accounting.
Yes. Each delivered-lead file is a source file ranked on invoiced revenue.
Yes, with a move-type column.
Yes, with a branch column, on Growth and above.
Two years if you can, because the trade is strongly seasonal.
Not required, but it is the strongest second file in a phone-booked trade.
No. CSV export and upload.
Encrypted in transit and at rest, isolated per workspace, deletable in one click, DPA available.
Yes, with an assigned-salesperson column. On shared leads this frequently explains more than the channel does.
Yes, if the lead file carries a timestamp.
Yes. Each vendor's delivered-lead file is its own source file, ranked on invoiced revenue.
Yes, as further rows against the same customer.
They stay in the lead file and earn nothing, which is what makes the close rate per source meaningful.
Yes, with a branch column, on Growth and above.
Yes, with an account-type column. Government and corporate work arrives through channels that have nothing to do with consumer advertising and should not dilute it.
Both files will contain the person. The report shows the overlap rather than crediting one arbitrarily, which is itself a useful negotiating fact.
Not as revenue, because a cancellation earns nothing. What the report does show is which sources cancel most, which is a real cost in held truck capacity even though it never reaches an invoice.
It works on whatever revenue your accounts recognise. Where a van line supplies both the lead and a revenue share, the source is the van line and the amount is your share — which is worth reporting separately from your own demand rather than blending the two.
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.
SmartMoving 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 SmartMoving, no API key, and no need to have been tracking anything until now. Last year works as well as this month.