Running cabinet orders on a spreadsheet: where it breaks, and how to keep it alive until you switch
On this page
- Is a spreadsheet good enough to run cabinet orders?
- What columns should a cabinet order spreadsheet have?
- How do you keep a shared order sheet from falling apart?
- Where does a cabinet order spreadsheet break?
- Can Google Sheets show who changed an order?
- When should a kitchen showroom switch from a spreadsheet to a CRM?
It takes one click. Somebody sorts the Install Date column on a Tuesday, just that column, and by Thursday the installer is at the Hartman house with the Ruiz job on his list, because every install date slid down one row.
That's the spreadsheet failure most showrooms recognize. Not a crash. A quiet scramble that nobody notices until a truck is in the wrong driveway.
And still, a spreadsheet is the right tool for a lot of showrooms for a long time. It's free, everyone already knows it, and it bends to whatever your process is this month. The goal here is to set one up so it holds together, and to be honest about the point where it stops holding.
Is a spreadsheet good enough to run cabinet orders?
Yes, for a while. If one or two people own the sheet, you run fewer than a few dozen open jobs, and each job is mostly one cabinet line from one supplier, a well-built spreadsheet does the job. It fails on shared editing, history and attachments, not on the number of rows.
A two-person showroom with one designer who also places every order can run for years on a good sheet. The designer knows every row because they typed every row.
What changes things is people. A second designer, an office manager who chases acks, an installer who wants to check dates from the truck. Each new person who edits the sheet is another way for it to drift. If you want the full picture of what an order has to carry from contract to install, we wrote that up in tracking cabinet orders from signed contract to install day.
What columns should a cabinet order spreadsheet have?
One column per fact you'd otherwise have to go find: an order ID, client, designer, status, supplier and line, door style and finish, supplier PO, the ack date, ship and install dates, the money (contract, change orders, paid, balance, supplier cost), the next action, and who updated the row last.
Here's the layout we'd start from. Rename anything, but resist adding a column for every one-off.
| Column | What goes in it | Why it's there |
|---|---|---|
| Order ID | S-26-041, never reused | Something to put in email subjects and on the job folder |
| Client | Last name, first name | Sorts cleanly, and two Davids stop colliding |
| Phone | One number, the one they answer | So nobody digs through texts |
| Designer | Initials from a fixed list | Who to ask, and who owns the next step |
| Status | Picked from a dropdown (list below) | The only column you filter on every morning |
| Supplier / line | Supplier name and cabinet line, one per row | Lead times and reps differ by line |
| Door style / finish | "Shaker / Frost White" | The first thing you compare against the ack |
| Supplier PO | The PO or confirmation number | Every call to the supplier starts with it |
| Ordered | A real date | Starts the lead time clock |
| Ack received | A real date, blank until it arrives | A blank cell here after 5 business days is a phone call |
| Est. ship | Date from the ack | Not the date the rep guessed on the phone |
| Install | A real date | Feeds the installer's schedule |
| Contract | Sell price at signing | The number the client agreed to |
| Change orders | Sum of signed change orders | Keeps the original contract readable |
| Paid | Total received from the client | One number, details in your books |
| Balance | A formula, never typed | Typed balances are how money gets lost |
| Supplier cost | What you owe the supplier for this order | Margin, and what to pay before it ships |
| Next action | "Call Dana re: missing crown, RB" | One line, with initials |
| Updated | Date and initials | Who touched it last |
| Folder | Link to the job folder | Drawings and acks, one click away |
A note on the Balance column, because it's where typed numbers do the most damage. Say the job is $42,600 at signing, the client signs a $1,850 change order for crown and an extra filler, and they've paid a $21,300 deposit. The balance is 42,600 + 1,850 - 21,300 = $23,150. In the sheet that's a formula like =M2+N2-O2 (adjust to your column letters), copied down the whole column. If someone types 23,150 over the formula, the next payment won't move it. For how to structure the deposit and the payments themselves, see deposits and payment schedules for kitchen jobs.
How do you keep a shared order sheet from falling apart?
Set a few rules and enforce them: one row per order, no merged cells, a status column limited to fixed values, real dates in date columns, and an "updated by" column. Most spreadsheet rot comes from people formatting the sheet to look nice instead of keeping it sortable.
The rules, and why each one matters:
- One row per order. Not one row per client, not one row per cabinet. If a job has cabinets from one supplier and vanities from another, that's two rows: S-26-041a and S-26-041b. Notes like "see row 88" are the beginning of the end.
- No merged cells. Ever. They look tidy and they break sorting, filtering and copying. If you want a visual group, use a filter.
- Status comes from a dropdown. In Google Sheets that's Data, then Data validation, then a Dropdown rule, and by default an entry that isn't on the list gets rejected (Google's help page). Excel has the same idea under Data Validation. A status column where one person writes "ordered", another writes "PO sent" and a third writes "placed w/ Tim" can't be filtered.
- Dates are dates. "Next Tues", "3/4?" and "TBD per rep" all sort as text, which means they sort wrong. Put the date in the date column and the doubt in the Next action column.
- Every edit gets initials. The Updated column is low-tech and it works. When the install date changes, you'll want to know who changed it before you call the client.
- Sort the whole sheet or nothing. Better still, use filter views in Google Sheets, which let each person filter without changing what everyone else sees.
- Move finished jobs off the main tab. Once an order is complete and paid, cut the row to an archive tab. A sheet with 600 closed rows on top of 30 live ones is how live ones get missed.
For the status dropdown, here's a set that fits most showrooms. Keep it short enough that nobody has to think.
- Signed
- Ordered
- Ack received
- Shipped
- Delivered
- Installed
- Punch list
- Complete
- On hold
- Cancelled
Where does a cabinet order spreadsheet break?
It breaks in five places: two people editing at once, supplier payments tracked on a second tab, no record of what changed, phones, and attachments that live in email. None of these is about size. A sheet with 40 rows can hit all five.
Two people editing. Google Sheets handles simultaneous editing better than an Excel file on a shared drive, but neither stops the single-column sort from the opening of this page, or someone pasting a row over the wrong row. The more people with edit access, the more often it happens, and the longer before anyone notices.
Supplier payments on a second tab. A lot of showrooms pay the supplier a deposit at order and the rest before it ships. That doesn't fit in one row, so it goes on a "Supplier payments" tab, looked up by client name. Then someone types "Hartmann" on one tab and "Hartman" on the other, the lookup returns nothing, and the sheet says you owe the supplier zero.
No history. A row shows the current state. It doesn't show that the ship date moved twice, or when the ack came in. Google Sheets does keep version history, and you can right-click a cell to see its edit history, but Google's own help page says that view can miss added or deleted rows, formatting changes and changes made by formulas (Google Docs Editors Help). Useful for forensics. Not a job log.
Phones. A 20-column sheet on a phone in a client's driveway is a lot of sideways scrolling, and one wrong tap edits a cell. Installers usually end up asking the office instead, which is fine until the office is closed.
Attachments in email. The sheet says "Ack received 3/12". The ack itself is a PDF in the designer's inbox, the signed drawings are in a different folder, and the damage photos from delivery are on somebody's camera roll. When that designer is on vacation, the information exists but nobody can reach it. A Folder column helps only if every file actually makes it into the folder. When cabinets do arrive with problems, what to check when cabinets are delivered covers what to photograph and log.
Can Google Sheets show who changed an order?
Partly. Version history (File, then Version history) shows who edited the file and when, and right-clicking a cell shows its edit history. But cell history can skip some changes, and restoring an old version clears the cell-by-cell history from before the restore. Add an Updated column with initials anyway.
Two details from Google's version history page are worth knowing before you rely on it. You need edit access to see earlier versions at all. And if you restore an old version to undo a bad sort, you lose the cell-level history for everything before the restore, so Google suggests making a copy of the old version instead. That's the safer move when you're cleaning up after a scramble.
When should a kitchen showroom switch from a spreadsheet to a CRM?
When the sheet stops being the place you update and becomes the place you go to find out something is wrong. Concretely: more than one person edits it every day, you keep a second tab that has to agree with the first, and you can't say what you owe suppliers without an hour of work.
Signals we'd take seriously:
- You've had a bad sort or a pasted-over row, and it took more than a day to notice.
- The Notes column has paragraphs in it.
- "What do we owe suppliers right now?" takes an afternoon.
- An installer or designer has called the office from a job to ask what a cell says.
- An ack, a drawing or a damage photo was stuck in the inbox of someone who was out.
- You've started a second sheet to track something the first one couldn't hold (change orders, add-on jobs, remakes).
One or two of these, tighten the rules above. Three or more, the sheet is costing you more than it saves. What to look for in the replacement is in what a kitchen showroom CRM actually has to do.
If you do move, don't throw the sheet away. Your columns are a good map of how your showroom actually works, and they should become the fields in whatever you use next. Salone lets each showroom set its own order fields, and the team will import your existing spreadsheet for you at no charge, so the rows you've kept carefully carry over.
Questions people ask
Is there a free cabinet order spreadsheet template for kitchen showrooms?
Generic order templates are usually built for retail shipping and miss what cabinet jobs need: the ack date, door style and finish, supplier PO, change orders and install date. It's faster to start a blank sheet with the columns in the table on this page, add a status dropdown, and make Balance a formula.
Excel or Google Sheets for tracking cabinet orders?
Google Sheets, if more than one person edits it. Everyone works in the same live copy, it opens on a phone, and it keeps version history. Excel can do live co-editing too, but only when the file lives in OneDrive or SharePoint. A copy on a shared drive or emailed around splits into versions. For one person on one computer, either works.
Should each cabinet in an order get its own row?
No. The order spreadsheet tracks orders, one row per supplier order. The cabinet list belongs in your design software output and the supplier's ack. Put the line, door style and finish on the row so you can check the ack against it, and link the drawings in the Folder column.
How do I track supplier payments in a spreadsheet?
Add Supplier cost, Supplier paid and Supplier owed columns on the same row as the order, with Supplier owed as a formula. A separate payments tab is more detailed, but lookups by client name break the moment a name is spelled two ways. If you need the detail, look up by Order ID instead.