When She Says It's Leaking, the Clock Starts
On the list of fires: “who goes, and how fast”
Module 13 · Callbacks & Warranty · Play 1 of 6
In a hurry? ↓ Do this this week
The problem in one breath
She called Tuesday. Somebody put it on a sticky pad under a stapler. Nobody called her back and nobody went out. Sunday she called again, crying. By Monday night her name sits in a review next to your company's. The leak was one pipe boot.
Why it happens
A callback pays nothing. Every other call that phone takes is money — a new roof, a supplier, a check clearing — so the callback is the one that gets set down. And no board in your shop has a line for it. It dies quiet. Then it comes back loud.
The play
Call it the callback clock. It starts when the phone rings.
One name owns the callback phone — whoever answers your phone, named out loud. Not "the office." That person keeps the warranty page (Play 3) open on the call. And the homeowner gets a call back the same day, with a name and a day — even when the honest answer is "we don't know yet, I'll have somebody there Thursday."
Every callback goes in the callback log the same day it comes in, before that person goes home. One line, not a sticky pad. It's the promise list (Module 2, Play 1) pointed at roofs you already built.
Two speeds, and the house picks which one. Water coming into the house right now → somebody is on that roof inside 24 hours. If it can't be fixed that day, it gets covered that day — tarped, weighted, and photographed before anybody drives off. A tarp is not the fix; say so, and give the day it gets fixed. No water inside (a dry stain, a lifted shingle, nail pops, a gutter, cleanup, "it looks wrong") → you name a day, and the day is inside seven days. Whether that cover-up is on your warranty or billable is set by her contract and by your state.
The man who goes is the foreman whose crew built that roof, on his own crew's hour. If the homeowner is already hot, the owner goes with him. The callback goes on the ten-day board like any other job (Module 14, Play 1) — the hour comes out of the crew time you never sold (Module 14, Play 5); when that's gone, the hand that owns the board decides which crew loses the hour. Nothing gets "squeezed in." The work that banks for a quiet week (Module 14, Play 6) is punch-list and deferred work she has agreed to a later day on — never an open callback.
Nobody decides whose fault it is over the phone. It gets decided on the roof (Play 2) — until boots are on it, that callback is Open and nothing else, and the other answer ends up in a screenshot (Module 3, Play 5).
The callback is closed in the log: the row is closed when it carries the date somebody was on that roof, the bucket, what failed and what it cost. Then the log gets read once a month (Play 6) — at the same sitting where you grade closed jobs in the money meeting (Module 6, Play 19), so this never becomes another standing meeting.
Do this this week
Name the person who owns the callback phone, say it out loud to the shop today, and tape the card by that phone. Twenty minutes.
The tool
Opens in Excel, Google Sheets, Numbers or LibreOffice. Grab it on the phone now — it’ll be waiting on the computer at the shop.
The callback log is one worksheet, fifty lines. Up top you type three numbers: what a loaded hour costs you (Module 10, Play 4), what a trip out costs you, and what an average job makes you — that third one is the yardstick, and it turns the money into how many jobs' profit these callbacks ate. Then one line per callback; the sheet does days to the roof, what the fix cost, what it cost you after anything you billed back, and counts by bucket and cause. It's a record, not a schedule — the callback's day lives on the ten-day board.
The card is what the person answering says, asks and writes, in order.
THE CALLBACK CALL — what the person answering says, asks and writes
Who answers the callback phone: ______________ Backup: ___________
Every callback goes in the callback log the same day it comes in,
before that person goes home. One line.
SAY THIS FIRST, IN THIS ORDER
1. "I'm sorry that's happening. Thank you for calling us."
2. "Is water coming into the house right now?"
3. "My name is ______. I've got this until somebody is on your
roof."
ASK, AND WRITE DOWN EVERY ANSWER
[ ] Her name, the address, best number, best time to reach her
[ ] Water inside right now? What room, what corner, how big?
[ ] When did you first see it? Rain, wind, hail, or a dry day?
[ ] Is it spreading, or has it stopped?
[ ] Anybody on that roof since we finished - solar, satellite,
gutters, another trade?
[ ] Can you text pictures to this number right now?
[ ] Pull the file: day we finished, crew, foreman, what we laid
BEFORE SHE HANGS UP - a name and a day
Water inside now: "______ will be on your roof by ______."
No water inside: "______ will be there ______." Name the day.
You don't know: "I don't know yet. ______ will be there
______." Still a name. Still a day.
THE LINE IN THE LOG, TODAY
Date called - address - date finished - crew - what she says -
Whose? = Open
THREE THINGS NOBODY SAYS ON THIS CALL
1. "That's not ours," or "that's not covered." Nobody decides
whose fault it is over the phone.
2. "Don't worry, we'll take care of it." Not before somebody
has been on the roof.
3. "Somebody will call you." No name, no day, no call.
If your crew is 1099
When a sub company built that roof, the callback still lands on your phone and still gets its log line and its same-day call back. A man of yours still goes and looks (Play 2) — the homeowner called you, and the diagnosis is yours. The fix is the sub company's to make under its own agreement (Module 12, Play 2): you hand the company the photos, what's wrong and the day it has to be right, and you don't put his men to work yourself. If he won't or can't make that day, you fix it and settle the money afterward. How much you can direct his men before it changes what he is to you is set by that agreement and by your state — read yours.
One more thing: this play is how we run a shop — it's not legal advice. Rules change by state and by contract, so before you act on the legal-sounding parts, run them past your own attorney or accountant. It's your business, and what you do with any of this is your call and your responsibility.
M13-01 · When She Says It's Leaking, the Clock Starts — Roofer MBA, https://roofermba.com/plays/callbacks-warranty/when-the-phone-says-its-leaking
The sheet notesHow the sheet works — the columns and the formulas
The columns, the formulas behind them, and the judgment calls — so you can rebuild it by hand if you ever need to.
What it does
One line per callback, written the day the phone rings. There is no "date fixed" box on the row and none is coming: the row is closed when it carries the day somebody stood on that roof (H), the bucket (F), what failed (G) and what it cost (J, K, L and N). Three numbers of yours at the top turn hours, material and trips into a dollar figure per callback. The boxes underneath add those up, split them by whose it was, and set the total beside the profit on one average job — so the thing you have been calling the cost of doing business finally has a number on it. The last block sorts the season by what actually failed.
One worksheet, "Callback Log". The log holds fifty rows, 10 through 59. The yellow cells are where you type; the seven yellow rows already filled in are an example so you can watch it run before you type your own over them. Gray and green cells work themselves out — leave those alone.
How to use it
- Set your three numbers first — B5, B6 and B7. Loaded labor cost per hour is the wage plus everything you pay on top of it, not the number on a paycheck — your bookkeeper or your payroll service can hand you that figure; what a loaded hour is, and how to work yours out, is Module 10, Play 4. What a trip out costs you is the truck, the fuel and the drive. B7 is not a rate at all — it's the yardstick, the profit you make on an average closed job, off your own grading in the money meeting, and row 71 divides by it. Leave one of the three empty and the answer that needs it says so instead of printing a number: with B5 or B6 missing, rows 68, 70, 71 and the money column on rows 75 to 84 all stop; with B7 missing, row 71 stops on its own.
- Write the row the day she calls. Date called, address, when that roof was finished, whose crew built it, what she said in her own words in column E, and Open in column F. That's the whole intake, and it takes under a minute. Nothing else on the row can be honestly filled in yet.
- Leave "Whose?" on Open until somebody has been on that roof. Column F takes Ours, Material, Neither or Open, off a drop-down. Open is where every callback starts. The bucket gets decided on the roof, not on the phone — that's Play 2's job.
- Fill in the rest when the man comes down. The day he stood on it (H), what failed (G, off the ten-cause drop-down), his hours (J), material (K), trips (L), and anything the homeowner paid you (N). Columns I, M and O do themselves. Move F off Open in the same sitting: a row that cost money and still says Open gets counted as nobody-been-there-yet, and row 67 is watching for exactly that.
- Read row 70 out loud once a month. That's what these callbacks cost you. Row 71 says it again in the only unit that stings: how many jobs' worth of profit it ate. Rows 75 to 85 tell you which detail is doing it.
- Fix a row that doesn't line up before you believe anything. Row 67 counts seven kinds of bad row, and while it reads anything but 0 all four money boxes — rows 68, 69, 70 and 71 — print "Fix the rows that don't line up first" instead of a number. That message comes ahead of anything else those four cells could say, even on a form with nothing else on it.
The lines
| Row | What it is |
|---|---|
| 1–3 | Title, one line on what the sheet is for, and the yellow/gray key. |
| 4 | Block header: YOUR THREE NUMBERS. |
| 5 | Loaded labor cost per hour $. Yours, in B5. Example: 50. The note sits in column C. |
| 6 | What a trip out costs you $. Yours, in B6. Example: 40. |
| 7 | Average profit you make on a job $. Yours, in B7. Example: 2,500. Row 71 divides by it. |
| 9 | The log's header row, columns A through O. |
| 10–59 | Fifty callback rows. The example fills 10 through 16 — seven callbacks across two months, two crews, one of them still open. Every one of the fifty carries the yellow fill, the date formats, both drop-downs and the three gray formulas, so a row typed on 35 or on 59 counts exactly like a row typed on 10. Need more than fifty? Insert the new rows inside the block, above row 59, so every box below still reaches them — then drag the three gray columns I, M and O down into the row you made. A new row without those three formulas still gets counted on row 62, but its money never reaches rows 68, 70 or the cause it belongs to. |
| 60 | The first row past the block. Nothing lives here and nothing below can see it, so a callback typed on this row is counted by row 67 instead of disappearing. |
| 61 | Block header: WHAT THESE CALLBACKS COST YOU. Column D carries the where-it-comes-from notes. |
| 62 | Callbacks on this list. Auto: rows with an address. Example: 7. |
| 63 | Still open, nobody on the roof yet. Auto: the rows that say Open. Example: 1. |
| 64 | Ours — our workmanship. Auto. Example: 3. |
| 65 | The material's — the product itself failed. Auto; it counts the rows that say Material. Example: 1. |
| 66 | Neither — not our work and not the product. Auto. Example: 2. |
| 67 | Rows that don't line up. Auto, seven counts added together. Anything but 0 and rows 68, 69, 70 and 71 refuse to print a number. Example: 0. |
| 68 | What the fixes cost $. Auto: column M added up. Example: 1,155. It reads row 67 first, shows a dash while the list is empty, and asks for B5 and B6 before it adds anything up. |
| 69 | What you billed back $. Auto: column N added up. Example: 325 — the storm job, the one Neither row a homeowner paid for. It reads row 67 first and shows a dash while the list is empty. Money a homeowner handed you is money whatever your rates say, so this one never asks for B5 and B6. |
| 70 | WHAT IT COST YOU $. Auto: column O added up. Example: 830. Green, because it's the answer. It reads row 67 before it reads anything else. |
| 71 | That's how many jobs' profit. Auto: row 70 ÷ B7. Example: 0.33 — the underlying figure is 0.332, and the cell shows two decimals. Same tests as row 70, in the same order, and then B7's own. |
| 72 | Average days to the roof. Auto: the average of column I. Example: 1.33. A row nobody has been to yet isn't in it, and neither is a row whose date in H lands before the call in A — that one says "check the dates". |
| 74 | Block header: WHAT FAILED · How many · What it cost you $. |
| 75–84 | The ten causes, in the order they sit in the drop-down: Nails or cleanup, Pipe boot, Valley, Step, wall or chimney flashing, Ridge or vents, Shingles themselves, Gutters or downspouts, Ventilation or attic, Storm after we left, Something else. In the example: Pipe boot 2 rows, $345 — Nails or cleanup 1 row, $280 — Shingles themselves 1 row, $115 — Gutters or downspouts 1 row, $90 — Storm after we left 1 row, $0, because the homeowner paid for that one. The money column here waits on B5 and B6 too, and shows a dash until they are typed. |
| 85 | Cause not on this list. Auto. Anything but 0 means somebody typed over the drop-down and that row fell out of all ten lines above. A cause left blank on a row whose bucket is already decided shows up on row 67 instead. Example: 0. |
| 87–92 | The sheet's own last word, across the full width: where the three numbers come from, that every yellow figure is an example, what row 67 refuses to do arithmetic on and that its message comes first, how to add a fifty-first row without losing its money, the three things row 67 cannot see, and that this is a record and not a schedule. |
The columns of the log, left to right: A Date called · B Job / address · C Roof finished · D Crew / foreman · E What she says · F Whose? · G What failed · H On the roof · I Days to the roof (auto) · J Hours · K Material $ · L Trips · M What the fix cost $ (auto) · N Billed $ · O What it cost you $ (auto).
Formulas (so you can rebuild it by hand)
- Days to the roof (I10, copied down to I59):
=IF(OR($H10="",$A10=""),"",IF($H10<$A10,"check the dates",$H10-$A10)) - What the fix cost $ (M10, down to M59):
=IF(AND($J10="",$K10="",$L10=""),"",$J10*$B$5+$K10+$L10*$B$6) - What it cost you $ (O10, down to O59):
=IF($M10="","",$M10-$N10) - Callbacks on this list (B62):
=COUNTA($B$10:$B$59) - Still open (B63):
=COUNTIF($F$10:$F$59,"Open")— and B64, B65, B66 are the same count with "Ours", "Material" and "Neither" in place of "Open". - Rows that don't line up (B67), seven counts with a plus sign between them:
=COUNTIFS($B$10:$B$59,"<>",$F$10:$F$59,"<>Ours",$F$10:$F$59,"<>Material",$F$10:$F$59,"<>Neither",$F$10:$F$59,"<>Open")+COUNTIFS($B$10:$B$59,"",$M$10:$M$59,">0")+COUNTIFS($B$10:$B$59,"<>",$F$10:$F$59,"Ours",$G$10:$G$59,"")+COUNTIFS($B$10:$B$59,"<>",$F$10:$F$59,"Material",$G$10:$G$59,"")+COUNTIFS($B$10:$B$59,"<>",$F$10:$F$59,"Neither",$G$10:$G$59,"")+COUNTIFS($B$10:$B$59,"<>",$F$10:$F$59,"Open",$M$10:$M$59,">0")+IF(COUNTA($A$60:$O$60)>0,1,0)In order: an address with nothing in "Whose?" · hours or money on a row with no address · a row called Ours with nothing in "What failed" · the same for Material · the same for Neither · a row still marked Open that already cost money · anything at all typed on row 60, the first row under the block, where no box below can reach it. Seven terms, and each one is looking at a row the other six can't be looking at, so no row is counted twice. They are added and never subtracted — a number that can go down is a number that can cancel two mistakes into a clean 0 and hand you a confident wrong answer. - What the fixes cost (B68):
=IF($B$67<>0,"Fix the rows that don't line up first",IF($B$62=0,"-",IF(OR($B$5<=0,$B$6<=0),"Type your rates in B5 and B6",SUM($M$10:$M$59)))) - What you billed back (B69):
=IF($B$67<>0,"Fix the rows that don't line up first",IF($B$62=0,"-",SUM($N$10:$N$59))) - WHAT IT COST YOU (B70):
=IF($B$67<>0,"Fix the rows that don't line up first",IF($B$62=0,"-",IF(OR($B$5<=0,$B$6<=0),"Type your rates in B5 and B6",SUM($O$10:$O$59))))The tests run in that order on purpose: the bad row is worth saying even about a form with one line on it, so it goes ahead of the dash. - That's how many jobs' profit (B71): the same three tests in the same order, and then one more of its own:
=IF($B$67<>0,"Fix the rows that don't line up first",IF($B$62=0,"-",IF(OR($B$5<=0,$B$6<=0),"Type your rates in B5 and B6",IF($B$7<=0,"Type your average job profit",$B$70/$B$7)))) - Average days to the roof (B72):
=IF(COUNT($I$10:$I$59)=0,"-",AVERAGE($I$10:$I$59)) - By cause (B75 and C75, copied down to row 84):
=COUNTIF($G$10:$G$59,$A75)and=IF(OR($B$5<=0,$B$6<=0),"-",SUMIF($G$10:$G$59,$A75,$O$10:$O$59)) - Cause not on this list (B85):
=COUNTA($G$10:$G$59)-SUM($B$75:$B$84)
Only IF, OR, AND, SUM, SUMIF, COUNT, COUNTA, COUNTIF, COUNTIFS and AVERAGE are used. No helper columns, nothing hidden, so it opens and computes in Excel, Numbers and LibreOffice. The drop-down on F is the four words typed into the sheet; the drop-down on G points at cells A75 to A84, so the ten causes and the ten rows that total them can never drift apart. Numbers has no drop-downs, so there the spelling is on you — which is exactly what rows 67 and 85 are watching for.
Notes and judgment calls
- Why the block runs fifty rows. Every box under it reads rows 10 to 59, so the sheet holds a couple of years of callbacks before anybody has to think about it. That matters more than it sounds: a row typed under the block is the one way to get a confidently wrong headline number out of this sheet, and the cheapest fix for that is a block nobody fills up. Row 60 is the backstop — see the seventh count on row 67.
- Column M computes on a row with no address on purpose. That's how a nameless row gets caught. Type 2 hours on row 18, leave the address blank, and M18 reads 100 off the example rate in B5 — the second count in row 67 sees it, row 67 goes to 1, and all four money boxes stop printing. (Three hours would read 150; M18 is hours × B5 plus material plus trips × B6, so the number you get depends on what you typed.)
- Try the guard five ways before you trust it. An address with nothing in "Whose?" — 1. Hours on a row with no address — 1. A row that says Ours with "What failed" left empty — 1. The still- Open row given a date on the roof and some hours — 1. A callback typed on row 60, under the block — 1. Put all five in at once and row 67 reads 5, with rows 68, 69, 70 and 71 saying "Fix the rows that don't line up first" every time.
- Three things row 67 cannot see. It catches seven kinds of bad row and it is honest about the rest. One: a row you inserted without dragging I, M and O down into it — counted on row 62, its money nowhere. Two: a word typed over a drop-down. Rows 64, 65 and 66 only see the four words exactly, so a pasted "ours " with a space on the end vanishes out of all three, and a cause typed over the ten lands on row 85. Three: a row that has an address, a bucket and a cause, but nothing in "On the roof" and nothing in Hours, Material or Trips. That row counts as a callback and as one of the ten causes while putting $0 beside that cause, so a cause can look cheap only because nobody ever finished its rows. There is deliberately no eighth count for it: every test that catches that row also catches rows the seven already catch, and a guard that counts one row twice is worse than one that misses it — it makes you hunt for a mistake that isn't there. Finish the row instead: bucket, cause, the day somebody stood on it, and what it took.
- A blank "Whose?" is the mistake this sheet exists to catch. The counts on rows 64, 65 and 66 only see a cell that says one of the four words. A row nobody ever answered vanishes out of all three — and it always vanishes in the direction that makes your callbacks look cheaper than they are. A blank "What failed" does the same thing to the ten cause lines, which is why row 67 counts that too, once the bucket is decided.
- An empty form says "-", not $0. Rows 68, 69, 70, 71 and 72 all print a dash while there is nothing to add up. A fresh copy that answered "$0" would be a screenshot saying callbacks cost you nothing. The dash only shows while row 67 is at 0, though: type two hours on a row with no address on an otherwise empty sheet and those four money boxes say "Fix the rows that don't line up first" instead. That isn't an empty sheet, it's a sheet with a mistake on it, and the mistake gets said first.
- Days to the roof shows whole days, and 0 is a good number. Same day out is 0, not blank. A row with no date in column H stays empty and stays out of the average on row 72, which is right: a callback nobody has been to yet has no answer, and row 63 is where you go looking for it. A date in H that lands before the date in A is a typo — the cell says "check the dates" rather than a negative number, and because row 72 averages numbers and skips words, one fat-fingered date can't quietly pull your days-to-the-roof down.
- Nothing here is an industry figure. $50 an hour, $40 a trip, $2,500 of profit on a job, and every address, name and date in rows 10 through 16 are made up so the arithmetic has something to chew on. Type your own over all of them.
- The bucket is a decision, not a formula. No cell in here works out whose it was. That happens on the roof, in Play 2, with the install photos in hand.
- Costs, not price, and roof-side only. Column M is what the fix took out of your shop on the roof — hours at your loaded rate, material at what you paid, trips at what a trip costs. It is not what you would have charged somebody for that work, and putting a sell price in there would flatter the total. It is also not the damage inside the house: a stained ceiling, drywall, paint, carpet or anything a carrier gets into is a separate number and a separate decision, and no cell in this workbook measures it. Play 2 says how the man handles what's inside on the walk, and Play 5 says why that money is priced on its own.
- Read both columns of the last block, not one. How many is what keeps happening; What it cost you is what it is taking out of the shop, and the two do not have to name the same cause. In this example they happen to agree — Pipe boot, 2 rows and $345, tops both columns, while one nail in a tire cost $280 on a single row. On your own log they will come apart, and the money column is the one that decides where the fix goes. That's the callback read in Play 6, and rows 75 to 85 are what you read. Two of the same cause in a month, or three in a season, is worth a fix.
What it is not
- Not a schedule. Nothing in here puts a man anywhere. The callback gets a day on the ten-day board (Module 14, Play 1) like any other job, and the hand that owns the board decides which crew loses the hour.
- Not the clock. The hours and the days you owe a homeowner are the play's, not the sheet's. This is where you find out afterward whether you kept them.
- Not a warranty. It says nothing about what you promised or how long it runs. That's the warranty page in Play 3, and it comes off your own contract.
- Not a job-cost sheet. It knows the profit on an average job because you typed it in B7. It doesn't know what any one of these roofs actually made.
- Not proof of anything to a manufacturer. A row saying Material is your note to yourself. The claim runs on the packet in Play 4.
- Not a customer list. Fifty rows. Start a fresh copy every year and keep the old one — two years of these side by side is the most honest report card your crews will ever get.
The sheet ships with its numbers already saved in it, so a phone preview shows real figures; they recalculate the moment you type.
The one thing
Do this this week
Name the person who owns the callback phone, say it out loud to the shop today, and tape the card by that phone. Twenty minutes.
Take it with you
One email unlocks this and every other sheet and card on the site. The plays stay free.
Same fire
A roof you finished is leaking and the phone's ringing
- M13-01who goes, and how fast — you’re here
- M13-02sort it on the roof, not on the phone
Fixed this?
Every callback ends up at the same question, and it's usually asked in a driveway: what did you actually promise her, in writing?
The fire right behind it is usually Nobody can say what your warranty actually covers.