Case studies · Carpet cleaning
28 years of history, in one record.
A carpet cleaning franchise had 28 years of customer history spread across an old field service system, a new one and a CRM. Nobody could answer "who have we not seen in a year" without a spreadsheet, so nobody asked. Here is what changed, and what the same history turned up on the way.
- Client
- Withheld
- Trade
- Carpet and upholstery cleaning
- Footprint
- 3 locations
- History
- 28 years, 3 systems
- Went first
- Bring past customers back
What runs
The Monday morning that builds the report.
Every week, without anyone on their team touching it. The whole sequence takes four minutes.
- Pulled together once
28 years of history from the old field service system, the new one and the CRM, into one record per household.
One customer, one record, back to day one.
- Mon 7:00
The list builds itself: customers serviced this month last year who have not been back.
This month, last month, next month, rolling.
- Mon 7:00
Opt-outs, bad emails and anyone who bought in the last six months come off automatically. So does a small group we leave off on purpose.
Leaving that group off is how we know the list is what worked.
- Mon 7:04
The list is in the owner's inbox and the send goes out.
Email today; text and calls where the customer has said yes.
- Through the week
Bookings land back in the same record. The Monday Report shows the week against the same week last year.
The numbers are retrieved, never made up.
years of history, in one place
systems it used to live in
customers a month who would have been forgotten
record per household, back to day one
None of this was new spend. It was their own numbers, put somewhere somebody could act on them.
Nobody exports a list on Monday. Nobody writes the follow up at 10pm. The work happens whether anyone remembers it or not.
Monday Report · Same page every week
Week of Aug 17 to 23, 2026
Carpet cleaning · 28 years of history · 3 locations
Built Mon Aug 24, 7:00Against the same week last year, Aug 18 to 24, 2025
1New leads
71last year 34 · +109%Paid search: 50 calls, 21 messages. 60 charged.2New customers
40last year 29 · +38%First invoice this week. Repeat customers not counted.3Cost to sell
$6,790Aug to date213 charged leads · $32 a lead$2,670 (39%) of it was spent on people who were already customers.4Gross margin
From the books, monthlyLands with the accountant's monthly close. Job costs are not split in the CRM yet, so this one waits for the books.| Retrieved from the record | This week | Last year | Change |
|---|---|---|---|
| Revenue invoiced | $32,444 | $19,826 | +64% |
| Jobs invoiced | 79 | 53 | +49% |
| Customers billed | 77 | 53 | +45% |
| Average ticket | $411 | $374 | +10% |
| Bookings back in the record | 95 | not tracked | old system |
- Win-back list built and sent, 7:00 to 7:04. 95 customers served in Aug 2025 who have not been back. 16 left off on purpose, so we could tell the list is what worked.Opt-outs, missing emails and anyone who bought in the last 6 months came off automatically.
- Follow-up series after a job. 26 customers from last week, 12 from five weeks back, 25 from nine.Services beyond carpet cleaning. Nobody lands on two lists in the same week.
- Customers showing they are ready to buy. 7 existing customers looking for services you sell.
- Every search lead matched to the customer record the day it arrived: 71 leads, 60 charged, 4 of the charged ones were active customers.
- Paid search is buying back your own customers. 83 of 213 charged leads this month were already in the record, $2,670 so far.Existing-customer leads are now flagged in the daily lead digest so the spend question is on the table with a number attached.
Revenue is what was invoiced, counted by service date, and it matches the books to the dollar. Same definitions every week. Every number comes from their records; nothing is estimated.
Nobody built a spreadsheetOne Monday Report, built from a carpet cleaning franchise’s own records. Client name withheld; every number comes from those records, not from a guess.
What the same history found
41% of a year's paid search had gone to people who were already customers.
Once every job, call and invoice lives in one record per household, you can ask a question nobody could answer before: was this lead a new customer, or one we already had? For a full year of paid search, 41% of the spend went to people they already had.
One record per household does not just tell you who to call. It shows which money is being wasted, with a figure attached, so the conversation with the ad rep stops being a matter of opinion.
The fix is not to stop advertising. It is to know the difference the moment the lead arrives, which is what the agent does on the phone and in the text thread.
Your history has a list like this.
Every business with a few years behind it has a list like this one and a spend question like that one. Send the four numbers and we tell you what we would run first. The first two steps are free.
