The Status Column Is the Most Underrated Tool in Your Spreadsheet (Here's How to Build One That Actually Works)
Stop scanning rows to figure out what's done. Build a status column in Google Sheets that drives your whole workflow — with color coding, dropdowns, and formulas.
You open the spreadsheet. Forty-seven rows. Some are done, some are waiting on a client, some are half-finished, and one might be canceled but nobody flagged it. You scan the whole thing top to bottom, trying to reconstruct reality from a wall of text. It takes six minutes. You do this three times a day. That's 90 minutes a week spent just figuring out where things stand — not actually moving them forward.
I've run my own operations this way for years across different kinds of work — client projects, content calendars, vendor payments, even moving logistics. And the single change that saved me the most time wasn't a new app or a complicated automation. It was taking the status column seriously. Not just slapping "Done" or "In Progress" into a cell when I remembered, but designing it as the engine of the whole sheet. The thing everything else keys off of.
Here's how to build one that actually works, regardless of whether you're tracking roofing jobs, therapy client intake, invoices, or creative deliverables.
Why Free-Text Status Columns Always Break Down
The first instinct is to just type status updates into a column. "Waiting on Sarah," "Almost done," "Sent invoice 3/14," "???" — I've seen all of these in real sheets, sometimes in the same column. The problem isn't that people are lazy. The problem is that free-text status columns serve two masters: they try to be both a description and a category. Descriptions are useful in context; categories are useful at scale. When you mash them together, you get something that's neither.
You can't filter on "Almost done." You can't write a COUNTIF formula against "Waiting on Sarah" unless every row waiting on Sarah says exactly that. You can't conditionally format it because every cell is a unique snowflake. The sheet looks full of information but it's actually hostile to quick answers like "how many jobs are active right now?" or "what's overdue?"
The fix is simple: separate status (a fixed set of categories) from notes (the human context). Status goes in a dropdown. Notes go in the next column over. This one move makes everything downstream possible.
Step 1: Define Your Statuses (Fewer Than You Think)
Most workflows need 4–6 statuses. Not 12. Not "it depends." If you have more than six, you're probably encoding two dimensions into one column (like mixing project phase with approval state). Here's a universal starting set that I've adapted for dozens of use cases:
- **Not Started** — it's on the list but no one's touched it
- **In Progress** — someone is actively working on it
- **Waiting** — blocked, pending client response, or on hold for a reason
- **Review** — done but needs a second set of eyes or client approval
- **Complete** — finished, delivered, closed
- **Canceled** — killed, and you want the record to stay for reference
That's it. If you're a contractor, "Review" might mean "inspection scheduled." If you're a freelancer, it might mean "invoice sent, waiting on payment." The labels can flex, but the count shouldn't bloat. Every status you add is another thing someone has to choose between when they're updating a row at 5:45 PM on a Friday. Keep the decision cheap.
Step 2: Build the Dropdown with Data Validation
Select your status column (say, column D from D2 down to wherever your data ends). Go to Data → Data validation → Add rule. Under Criteria, choose "Dropdown (from a range)" or just "Dropdown" and type your statuses manually. I prefer putting statuses in a small reference list on a hidden sheet called "Config" — that way if you ever rename a status, you change it once and it updates the dropdown everywhere.
Here's the setup for the Config sheet approach:
- Create a new sheet tab, name it **Config**
- In A1:A6, list your statuses: Not Started, In Progress, Waiting, Review, Complete, Canceled
- Go back to your main sheet, select D2:D500 (or whatever range makes sense)
- Data → Data validation → Criteria: Dropdown (from a range) → enter **Config!A1:A6**
- Check "Show dropdown in cell" and set invalid data to "Reject input"
- Right-click the Config tab → Hide sheet (keeps things clean)
Now every cell in column D shows a neat dropdown. No typos. No "Completd" or "in progress" vs. "In Progress" inconsistencies. Your COUNTIF formulas will actually work.
Step 3: Add Conditional Formatting That Means Something
Color-coding is where the status column goes from useful to powerful. The goal isn't to make the sheet pretty — it's to let your eyes do the filtering before your brain has to. When you open the sheet and see a wall of yellow, you know instantly: lots of things are waiting. That's a different signal than a wall of green (you're crushing it) or a wall of red (something's on fire).
Here's my standard color mapping. Select the entire status column, then go to Format → Conditional formatting and create one rule per status:
- **Not Started** → Light gray background, dark gray text (it's there, but it's quiet)
- **In Progress** → Light blue background (#D0E4F5), dark blue text (active, neutral)
- **Waiting** → Light yellow background (#FFF2CC), dark amber text (needs attention soon)
- **Review** → Light purple background (#E1D5E7), dark purple text (almost done, distinct from active)
- **Complete** → Light green background (#D9EAD3), dark green text (done, recedes visually)
- **Canceled** → Light red background with strikethrough text (clearly dead, not confused with active)
One thing I learned the hard way: don't use red for "In Progress." Red means danger in every human brain. Reserve it for things that are actually wrong — canceled, overdue, or failed. If everything active is red, nothing is urgent.
Step 4: Make the Sheet Answer Questions with COUNTIF and Summaries
Now that your statuses are consistent dropdown values, you can build a tiny dashboard at the top of your sheet (or on a separate summary tab) that tells you the state of everything in one glance. This takes about 90 seconds to build and saves you from eyeball-counting for the rest of the year.
Put these in a row above your data or on a summary tab:
Want to get fancier? Combine status with a date column to surface what's overdue:
That second formula is the one that changed my workflow. I had jobs sitting in "Waiting" for three weeks because no one flagged that the client never responded. Now I check one cell and know exactly how many things are rotting in limbo. You can even add another conditional format rule: if the Waiting count exceeds 5, turn that summary cell orange. Instant early warning system.
Step 5: Pair Status with File Attachments (So "Complete" Actually Means Complete)
Here's where I see the status column lie to people. A row says "Complete" but there's no signed contract attached. Or "Review" but the deliverable file is in someone's email, not in the sheet. The status column tells you where something is in the process — but if the evidence isn't attached to the row, you end up re-opening "Complete" items to hunt for the document that proves they're done.
I started adding a file attachment column right next to the status column. When a job is marked Complete, the signed PDF or final photo or paid invoice is right there in the row. When something is in Review, the draft is attached so the reviewer doesn't have to go digging. It turns the spreadsheet from a tracking list into an actual record of work — which matters enormously when a client asks "can you send me that again?" six months later.
FileFox is how I handle this — drag files directly into cells in Google Sheets instead of pasting Drive links that break or go stale. But whatever method you use, the principle is the same: a status without its proof is just an opinion.
Step 6: Use Filters and Views to Work in One Status at a Time
The real payoff of a clean status column is that you can slice the sheet by mode of work. Monday morning, I filter to "Not Started" and do my weekly planning — decide what's actually getting picked up this week and move those to "In Progress." Mid-week, I filter to "Waiting" and do my follow-up batch — all client nudges and vendor check-ins in one pass. Friday afternoon, I filter to "Review" and close out everything that's been approved.
This is vastly more productive than scrolling through the full list and context-switching between planning, doing, and following up. Each filter view becomes a different work mode.
Pro move: use Google Sheets' Filter Views (Data → Filter views → Create new filter view) instead of regular filters. Filter views are saved, named, and don't affect what other people see if you're sharing the sheet. I have three saved: "My Active Work" (In Progress), "Follow-Up Needed" (Waiting + overdue), and "Ready to Close" (Review). One click and I'm in the right context.
Bonus: Timestamp Status Changes Automatically
Want to know how long things sit in each status? Add a "Last Updated" column and use this formula in a helper column, or use Apps Script if you want it automatic. The manual version is simple: next to your status column, add a column called "Status Changed" and just type Ctrl+; (inserts today's date) every time you update the status. It's not automated, but it's fast and it gives you data.
If you want it hands-free, here's a lightweight Apps Script that timestamps any status change:
After a month of this, you'll be able to answer questions like "our average job sits in Waiting for 11 days" — which is the kind of insight that actually changes how you run your operation, not just how you track it.
The One Thing to Do First
Don't try to retrofit all of this at once. Open your most-used spreadsheet right now, find whatever column is currently serving as your status (or should be), and convert it to a dropdown with 4–6 fixed values. That's it. That alone will make every formula, filter, and formatting rule you add later actually work. Everything in this post depends on that one column being consistent, and everything in your workflow gets easier once it is.
The status column isn't glamorous. Nobody's posting about it on LinkedIn. But it's the difference between a spreadsheet that's a dumping ground and one that actually runs your week.
Frequently Asked Questions
How many statuses should a Google Sheets status column have?
Most workflows work best with 4–6 statuses. Fewer than 4 and you lose useful granularity (you need to distinguish between 'not started' and 'blocked'). More than 6 and people start guessing which one to pick, which defeats the purpose of consistency. If you feel you need more, you're likely encoding two things in one column — split them.
How do I color code a status column in Google Sheets?
Select your status column, go to Format → Conditional formatting, and create one rule per status value. Use "Text is exactly" as the condition and assign a background color to each. For whole-row formatting, set the range to your entire data area and use a custom formula like =$D2="Complete" to trigger the color based on the status column.
Can I make Google Sheets automatically change status based on a date?
Not with built-in formulas alone — data validation dropdowns can't be auto-populated by a formula in the same cell. However, you can create a calculated "flag" column using =IF(AND(D2="In Progress", E2<TODAY()), "OVERDUE", "") to surface items that need a status change. For true automation, Google Apps Script can update status values on a timed trigger.
What's the difference between a filter and a filter view in Google Sheets?
A regular filter changes what everyone sees on the sheet — if you're sharing it with a team, your filter affects their view. A filter view (Data → Filter views) is saved, named, and personal. Other users see the unfiltered sheet while you work in your filtered view. For status-based workflows, filter views are far better because multiple people can work in different modes simultaneously.
How do I count rows by status in Google Sheets?
Use the COUNTIF function: =COUNTIF(D:D, "In Progress") where D is your status column. For more complex counts — like active items that are also overdue — use COUNTIFS with multiple criteria: =COUNTIFS(D:D, "In Progress", E:E, "<"&TODAY()). Place these in a summary row at the top of your sheet for an instant dashboard.