Checklist

The Records Checklist

Six exports a trades business already keeps, the fields that break an analysis when they are missing, and a gap list you can act on today.

In ten minutes: A gap list of exports and fields, and how many days of records you have.

Which numbers should a trades business track? Start one step earlier, with the records the numbers come from. This checklist covers six exports from the records a trades business already keeps, the question each one answers, and the fields that quietly break an analysis when they are missing.

It is written for owners getting ready for any review of the business, and for buyers writing a data request. The buyer version is further down.

Why records come first

Unknown is not zero. When a record is missing, the number it would have produced is missing too, and a missing number is a gap, not a finding. A business with no marketing spend on file has not been shown to waste nothing on marketing. Nobody has looked.

Revvy is built on that rule. When a check lacks the records it needs, it says "Not enough data" and why, and it leaves that check out of the score instead of counting it as zero.

The first job is knowing what you have. Ten minutes with the checklist below gets you a gap list: what is missing, and what each gap leaves out.

The six exports, in the order to pull them

This is the order Revvy's import guide suggests: jobs first, because completed jobs with their revenue set the average ticket most money figures are priced against.

1. Jobs

Answers: what did each job earn, and was it for a customer you have served before?

Fields Revvy reads: the type of work, the invoiced value, the status (scheduled, completed or cancelled), the completed date on every completed job, and a customer id.

The one people forget: the customer id. Without it every job looks like a new customer, so repeat business is invisible and there is no list of customers who have gone quiet.

Watch the completed date too. A completed job without one is invisible to every revenue figure, so Revvy's importer refuses it.

2. Leads

Answers: how many enquiries became booked jobs, and from which source?

Fields Revvy reads: the source, the date the lead came in, and a booked status or booked date.

The one people forget: the leads that did not book. A file of booked work alone shows a 100% booking rate and tells you nothing.

3. Estimates

Answers: which quotes sold, which were lost, and which are still open?

Fields Revvy reads: the amount, the status (open, sold, lost or expired), the presented date and the last follow-up date.

The ones people forget: the open quotes and the follow-up date. A blank follow-up date on an open quote is the sign nobody chased it, so a blank there tells you something. Close the open quotes out to tidy the file and the list of quotes to call goes with them.

4. Marketing spend

Answers: what did each channel cost, against the leads it brought in?

Fields Revvy reads: the channel, the amount, and the first and last day each amount covers.

The one people forget: matching names. Each channel in the spend file has to be named the way your leads name their source, or the spend has no leads to be set against. Spend on a channel that no lead source covers is better left out than filed under the wrong source, where it would raise that source's cost per booked job by money it never spent.

Without a spend file Revvy will not compare channels at all. Lead volume with no cost beside it says nothing about which budget is working.

5. Calls

Answers: how many calls were answered live, missed or sent to voicemail?

Fields Revvy reads: the outcome and the date of each call.

The one people forget: the missed calls. An export of answered calls alone reads as 100% answered. Revvy measures the answer rate from this file; it does not put a dollar figure on missed calls.

6. Invoices

Answers: what was billed, and what has been collected?

Fields Revvy reads: the invoiced amount, the amount paid so far, the invoice date and the job it belongs to.

The one people forget: the job link. An invoice whose job is not on file is kept but not tied to its job, which is why Revvy's import guide brings jobs in first.

How much is enough

Revvy will not state a rate from a handful of rows. Before a check reports at all, it needs at least these:

The fewest records Revvy needs before it states a rate
RecordsAt least
Leads, at least 14 days old20
Calls20
Decided estimates (sold or lost), for a close rate15
Stale open quotes, for a figure on them5, at low confidence until 15
Jobs15
Customers25

Time matters as much as rows. Below 60 days of records Revvy scales nothing to a year. From 60 to 364 days it does, with a note that trades work is seasonal, so part of a year can over- or under-state a full one. At 365 days or more you have a full year.

DemoFabrikam Roofing

Fabrikam Roofing, one of Revvy's demo businesses, has 19 days of records from around a September hailstorm, well short of the 60 days a yearly figure needs. So Revvy puts no yearly figure on it and gives it no score at all, and every check says "not enough data", with its reason.

Build your gap list

For each export, say whether you can produce it, and tick the fields it carries. Then enter how many days your records cover. The gap list builds as you go, each gap with what it leaves out.

Your records, export by export

Your numbers

For each export, say whether you can produce it. For each one you can, tick the fields it carries.

Nothing you type here is saved or sent. It clears when you reload the page.

  1. Jobs

    Answers the question: What did each job earn, and was it for a customer you have served before?

    Can you produce it?
    Fields it carries
  2. Leads

    Answers the question: How many enquiries became booked jobs, and from which source?

    Can you produce it?
    Fields it carries
  3. Estimates

    Answers the question: Which quotes sold, which were lost, and which are still open?

    Can you produce it?
    Fields it carries
  4. Marketing spend

    Answers the question: What did each channel cost, against the leads it brought in?

    Can you produce it?
    Fields it carries
  5. Calls

    Answers the question: How many calls were answered live, missed or sent to voicemail?

    Can you produce it?
    Fields it carries
  6. Invoices

    Answers the question: What was billed, and what has been collected?

    Can you produce it?
    Fields it carries

From the first record to the last, in the exports you can produce.

Your gap list

Answer the questions above to build your gap list.

Take the gap list to whoever runs your exports. "Not sure" belongs on it too: it means nobody has checked yet.

If you buy leads on Local Services Ads

Google is moving Local Services Ads into Google Ads. Its timeline puts the first phase in August 2026, for select home and storefront service advertisers in the United States, plumbing, HVAC, electrical and roofing among them.[1] The same help page says:

Your Local Services Ads performance reports will not transition to Google Ads.

Google Ads Help, Local Services Ads transition to Performance Max campaigns with pay-per-lead goals (opens in a new tab) [1]

Keep your own record of the leads those ads bring in: the date, the source, and whether each one booked, in your leads export. With that history in your own records you can still work out your booking rate and cost per booked job for that source, whatever happens to the reports.

Google's page was read on October 8, 2026, and the move is still under way, so check the current position there. Google's own advice on saving the old reports, as its page read that day, is summed up in Local Services Ads are moving: keep your lead data.

Customer names

The customer id is what matters. It links a second job to the first, which is how repeat business shows up. The name column is optional.

If you send names, Revvy uses one only to label a customer it has not seen before. Its row-by-row import history drops the name.

For a data request, ask for ids rather than names. Repeat business can be measured from the ids alone.

Buyer version

Evaluating a business? The same six exports make a data request whose answers you can compare from one target to the next. Ask for:

  • All six exports, with the fields named in each section above.
  • At least twelve months of each, so a yearly figure rests on a full year and every season is in it.
  • More than eighteen months of jobs if you want to see customers who have gone quiet. Revvy counts a customer as lapsed after 18 months without a job, its default and a judgement, not an industry figure, so the history has to reach back further than that.
  • The open quotes and the leads that did not book, not only the work that was won.
  • Weekly schedule capacity by location, if the business records it.
  • Gross margin for the same period, from the books, before any figure is read as profit.

When a field does not exist

Ask how the business tracks it instead, and write the answer down. "We do not record follow-ups" is a fact about the business. Do not let the gap be filled with an estimate: once an estimate sits in a spreadsheet, it reads as a measurement.

Mark the field as missing on your request, with what it leaves out (the gap list words each one), so nobody prices that gap as zero.

Sending the request

Print this page with the gap list filled in and attach it to your request letter. It covers the operating records and sits beside the documents an attorney and an accountant review, not in place of them. The U.S. Small Business Administration's guide to buying a business says:

Once you know whether you want to franchise or buy a business, you'll need to evaluate each specific opportunity. In short, it boils down to this: do your due diligence.

U.S. Small Business Administration, Buy an existing business or franchise (opens in a new tab) [2]

For the upside claims a seller makes, use the Upside Diligence Checklist. For the full list of records to ask a seller for, read Buying an HVAC or plumbing firm: records to ask for.

What Revvy does with these files

  • It imports all six as CSV files today, and each format has a built-in example in the app.
  • It checks a file before writing anything, names the row and column of every problem, and refuses to half-load a batch.
  • It shows how each cell will be stored before you apply the file, and can undo a file from the import history.
  • You do not need all six. A check without the records it needs says so, and the others still run.
  • ServiceTitan and Housecall Pro connections are planned. In the demo they are demo adapters.

With your gap list done, two worksheets use the records straight away: the Open-Quote Call List works from your estimates, and the Booking-Rate Check from your leads. For what spend and leads can tell you together, read Cost per lead vs cost per booked job.

Do not upload real records to the demo

The live demo is shared and has no sign-in. Anything entered or imported there is visible to anyone who opens it.

Use it to see the import check and the example files on Contoso's connections screen, and keep your own records off it. Open Contoso's connections screen in the demo.

Sources

  1. Google Ads Help. Local Services Ads transition to Performance Max campaigns with pay-per-lead goals (opens in a new tab). No date shown on the page; its timeline names August 2026, late 2026 and 2027.A live rollout that is still changing; this page was read on October 8, 2026.
  2. U.S. Small Business Administration. Buy an existing business or franchise (opens in a new tab). No date shown on the page.General guidance, not specific to the trades. The page lists documents an attorney and accountant typically review: letter of intent, confidentiality agreement, contracts and leases, financial statements, tax returns, sales agreement, purchase price adjustment.
Next step

Next: the Open-Quote Call List.