Cookie preferences

Choose what we may use. Strictly necessary cookies keep you signed in and can't be turned off; everything else is your call and changes nothing about how the site works. You can change your mind any time from the footer.

For Roofr

You can send forty proposals in a week. Four of them are the business.

Export signed work from Roofr, upload the leads behind it, and rank channels on contracts rather than on how many roofs you measured.

No API key Nothing to install in RoofrNothing to install No card requiredNo card

CloseRev reads a Roofr export of signed proposals or invoices — the homeowner's phone or email, the amount and the date — and matches it against the calls, forms and canvassing that produced the lead. Roofing is a trade where a proposal costs almost nothing to produce and a signature is worth five figures, which makes lead counts an especially poor guide to what a channel is worth. Signed work with no traceable lead is reported as Direct / Unknown.

Last checked against Roofr's own documentation on September 24, 2026.

The gap

Proposals are cheap to send, so every channel looks productive until somebody counts signatures.

Roofr sees

What was sold, to whom, and for how much.

no shared row
Your ad account sees

The click, the keyword, the call, and what each one cost.

The file

What the export needs in it.

Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.

  1. Needed

    Homeowner phone or email

    On the customer or proposal record. Phone is the working key in roofing.

  2. Needed

    Signed amount

    The accepted contract value. A sent proposal is not revenue however good the measurement was.

  3. Needed

    Signed date

    When it was accepted. Keep the lead date too — storm work and planned replacement have very different lags.

  4. Optional

    Job type

    Repair, replacement, insurance claim. Their values and their sources differ enormously.

Step by step

Getting the file out of Roofr.

Written for somebody with Roofr open in the next tab. Report names vary by edition, so each step says what to look for.

  1. Export signed proposals or invoices

    One row per signed job with a homeowner contact detail, the amount and the date.

  2. Export the unsigned ones too

    A channel that needs ten proposals per signature costs ten measurements, and that cost is invisible without them.

  3. Export your lead sources

    Canvassing, tracked numbers, search ads, the website form, storm lists and any marketplace you buy from.

  4. Cover a year

    Roofing is seasonal and weather-driven, and a quarter compares storms rather than channels.

  5. Upload both

    The join runs on the phone and the email, normalised. Proposals that were never signed stay in the file as the cost of the channel that produced them.

What comes back

The page Roofr cannot show you.

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 Roofing Contractors page — not from a Roofr account.

Traced to a channel$540,00060% of $900,000
Sales matched31 of 52high confidence only
Average sale$17,300per paid sale
ChannelShareSalesRevenue
Google Ads19$342,000
Meta Ads9$153,000
Email marketing3$45,000
Direct / Unknown21$360,000

Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.

The argument

What changes when the contract and the ad share a row.

Cheap proposals make every channel look busy

When a measurement and a branded proposal take minutes rather than an afternoon, the natural instinct is to quote everything that moves.

That is good operations and it destroys lead-based reporting, because the proposal count stops carrying any information about whether the lead was real.

The number that still means something is the signature, and ranking channels on signed value rather than on proposals sent usually reorders the list substantially.

It also puts a cost on the volume: a source needing ten proposals per signature is consuming ten measurements, ten follow-ups and ten days of somebody's attention.

None of that appears in a cost-per-lead figure, and all of it is paid by the business.

Storm work and planned replacement are different businesses in one file

A hailstorm produces a fortnight of enquiries that no advertising caused, at values set by an insurance adjuster rather than by your pricing.

Planned replacement is a slow, considered purchase where the homeowner has been thinking about the roof for a year and compares three contractors.

Blended, the storm weeks inflate whichever channel happened to be running, and the conclusion will not repeat because the weather will not.

Where the export carries a job type or an insurance flag, the report splits on it; where it does not, the date range usually identifies the storm itself.

The point is not to discard storm revenue but to stop it being read as proof that a campaign worked.

Canvassing is a channel and it is usually the biggest one nobody costs

Door-knocking after a weather event produces a large share of roofing revenue in many markets, and it has a real cost in wages and time.

Because no invoice arrives from an advertising platform, it sits outside every marketing report and the paid channels are judged as though they were the whole budget.

A canvasser code on the lead record puts it into the same comparison on the same signed value, against what it actually cost to have people walking streets.

Contractors who run this frequently find the ranking between canvassing and paid search is not what either side of the argument assumed.

It also identifies which neighbourhoods and which crews produce signatures, which is a scheduling decision rather than a marketing one.

Insurance work needs its own line or it distorts the average

A claim-funded replacement has a value set by the adjuster, a longer timeline, and a conversion pattern driven by the claim rather than by your sales process.

Averaged with retail work it produces a figure describing neither, and a channel weighted towards claims will be read as though it produced retail jobs.

Separating them gives two honest rankings, and most roofers discover the sources feeding each are almost entirely different.

Where the export flags the claim, this is automatic. Where it does not, the amounts and the timelines usually make the split obvious within a few minutes.

Fair questions

“Roofr already does that.” Not quite.

They say

“Roofr already tracks proposal acceptance.”

We say

It does, inside the system. It has no record of the canvasser, the advert or the storm list that produced the homeowner.

They say

“Most of our work is storm-driven.”

We say

Then the report will show that honestly, and separating it is how you find out what the rest of the marketing is worth.

They say

“Canvassing cannot be tracked.”

We say

A code on the lead record is enough. It does not need to be digital to be comparable on money.

Questions

Roofr, specifically.

Something else? Ask us and a person answers.

No. It reads an exported file, so your measurements, proposals and customer records stay where they are.

Roofr 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

Two exports, and you will know.

Nothing to install in Roofr, no API key, and no need to have been tracking anything until now. Last year works as well as this month.