Change order log template for small contractors
The final invoice goes out and the client says "I thought the tile upgrade was included." A change order log is the one page that ends that conversation: every extra on the job, what it cost, who signed it and when, and what the job adds up to now. Here's a free one built for remodelers and small crews, not for a commercial project office.
Download the free log
Download the change order log (CSV)
It opens in Excel, Numbers or Google Sheets. In Google Sheets, use File → Import and upload the file (Google's import steps). In Excel or Numbers, just open it, then save it as a spreadsheet file so your entries and formulas are kept.
The columns:
| Column | What goes in it |
|---|---|
| Change order # | CO #1, #2, ... matching the number on the signed form |
| Date sent | The day you gave the client the change order |
| What changed and why | One plain sentence; the full scope is on the signed form |
| Amount ($) | The price of this change (negative for a credit) |
| Schedule impact | "+2 days" or "none" |
| Status | sent, signed or declined |
| Signed by | The client's name as signed |
| Date signed | The day they signed |
| Running total of change orders ($) | Adds itself up as you enter amounts |
A Google Sheets "Make a copy" version and an Excel (.xlsx) file are planned; for now the CSV works in both.
A filled-in example
Here's what a log looks like partway through a kitchen remodel with an original contract of $42,000:
| CO # | Date sent | What changed and why | Amount | Schedule | Status | Signed by | Date signed | Running total |
|---|---|---|---|---|---|---|---|---|
| 1 | Mar 4 | Rot under sink base: replace 4×6 ft of subfloor, sister one joist | $860 | +1 day | signed | J. Rivera | Mar 4 | $860 |
| 2 | Mar 9 | Client upgrade: tile backsplash to full height behind range | $1,240 | +1 day | signed | J. Rivera | Mar 10 | $2,100 |
| 3 | Mar 15 | Add 2 GFCI outlets on island, new circuit from panel | $640 | none | sent | $2,740 |
Example figures for illustration only; not a real job.
Original contract $42,000 + signed change orders $2,100 = current contract total $44,100. CO #3 isn't signed yet, so it isn't part of the total, and the work doesn't start until it is. (The running-total column shows $2,740 because it adds every amount typed; more on that below.)
Keep the original contract at the top
The template's running total adds up the change orders. What the client actually cares about is the new job total, so put two lines above the table (insert two rows at the top of the sheet):
- Original contract: the signed contract price.
- Current contract total: the original contract plus every signed change order.
In a spreadsheet, that's a cell like =B1+SUMIF(F:F,"signed",D:D), where B1 holds the original price, column F the status and column D the amounts (adjust the letters if you move things). This is the number to show the client on every new change order, and it's the line that prevents invoice shock.
One thing to know about the downloaded file: its running-total column adds every amount you type, whatever the status. Use the current-contract-total line for the number you show the client, or leave the Amount blank for a change order that's declined or not yet signed and fill it in once it's signed. A version with a built-in original-contract line and a total that counts only signed rows is planned.
How to use the log on a real job
- One log per job. Name the file after the job address. A single log for all jobs gets unreadable by the third client.
- A row for every change, before the work. Write the row when you send the change order, not when you invoice. If a row says "sent" and the work has started, that's the risk to fix today.
- Number change orders in order and never reuse a number. If a change order is declined, keep its row with status "declined", so there's no gap in the numbering to explain later.
- Record credits too. If the client drops something from the original scope, log it as a negative amount so the total stays honest.
- Keep the signed document with the row. The log is the index; the signed change order is the proof. Save the PDF in the job folder and name it after the CO number (e.g. "CO-03 island outlets.pdf").
- Send the client the log with the final invoice. When every extra is listed with a signature and date, there's little left to argue about.
The log is not the signature
A log tells you what was agreed. It isn't the client's agreement. Each row needs a signed change order behind it that states the scope, the price, the new contract total and the schedule impact.
In some places that's the law, not just good practice. California's home improvement rules, for example, say a change order becomes part of the contract only if it is "in writing and signed by the parties prior to the commencement of any work covered by a change order" (Business and Professions Code § 7159(c)(5), checked October 18, 2026). Other states and countries have their own rules.
For the signed document, use our free change order form: fill in the scope and line items, it works out the new contract total, and you print it or save it as a PDF for the client to sign. Nothing you type is uploaded. If the client isn't on site, see how to get a change order signed by text.
This page is general information, not legal advice. Rules for home improvement contracts and change orders differ by state and country. Check the rules where you work, or ask a local construction attorney or your licensing board.
What a log spreadsheet can't do
A spreadsheet is fine for a few jobs. It gets harder when:
- the log lives on the office computer and the change order happens on site,
- a crew member sends a change order and forgets to add the row,
- you have to match each row to its signed PDF by hand.
Skip the spreadsheet: the log keeps itself
We're building Change Order Pad: write the change order on site, text the client a signing link, and both of you get a signed PDF with a timestamp, with each job's change orders and running total kept together. A flat $19/month for your whole crew, with a 14-day free trial. It isn't launched yet; join the waitlist for 50% off for life.