The Salon Spreadsheet That Stopped Me From Digging Through Filing Cabinets for Consent Forms
Build a Google Sheets system for salon & spa client records — track consent forms, allergy notes, service history, and before/after photos without the filing cabinet.
Last March, a client came in for a balayage touch-up and casually mentioned she'd had a reaction to a product "last time." I smiled, nodded, and spent the next eleven minutes flipping through a filing cabinet that hasn't been alphabetized since 2021, looking for her intake form. I didn't find it. What I found was a stack of consent forms from clients who no longer come in, a takeout menu from a Thai place that closed, and the realization that my system wasn't a system — it was a graveyard.
That afternoon, between a keratin treatment and a brow lamination, I started building the Google Sheets setup I should have built three years ago. Not a CRM. Not salon software with a $79/month price tag and features I'll never touch. Just a spreadsheet that actually tracks the stuff that matters: who's allergic to what, what they signed, what we did last time, and — crucially — where the photos and consent forms actually live.
The Real Problem Isn't Scheduling — It's Everything Around It
Most salon and spa owners I know have booking figured out. Whether it's Vagaro, Square Appointments, Fresha, or a paper book that works just fine — appointments get made. The chaos lives everywhere else. It's the consent forms for lash lifts that you printed from a PDF someone emailed you in 2019. It's the allergy notes scrawled on the back of a client card. It's the before-and-after photos trapped in three different stylists' camera rolls, never to be seen again.
And if you've ever had a new stylist start and watched them try to piece together a client's color history from cryptic shorthand on an index card — "6N+7A 20vol 35min" with no date — you know the pain isn't theoretical. It's costing you time, it's costing you trust, and eventually it's going to cost you a client who gets the wrong formulation because nobody could find the right notes.
Salon software technically handles some of this. But I've used three different platforms in eight years, and every single one made it weirdly hard to attach actual files to a client record. You can type notes, sure. But try uploading a signed consent PDF, a patch test photo, and an insurance document to one client's profile in Vagaro. You'll be clicking through modals until your next appointment walks in.
What Actually Needs to Live in Your Spreadsheet
Before I built anything, I sat down and listed the things I'd gone hunting for in the past six months. Not what I thought I should track — what I'd actually needed and couldn't find. The list was embarrassingly specific:
- Signed consent forms for chemical services (color, keratin, lash lifts, microblading)
- Allergy/sensitivity notes — not buried in a general notes field, but visible at a glance
- Color formulas with dates, so I can see what we mixed last time without guessing
- Before-and-after photos attached to the specific service, not floating in a Google Drive folder called "Client Pics"
- Patch test dates and photos (required for certain treatments, easy to lose)
- Insurance and liability docs — the ones the state asks for when you least expect it
- Gift card and prepaid package balances, because our booking software tracks these badly
The common thread? Half of these are files — PDFs, images, signed documents — not just text in a cell. And that's exactly where most spreadsheet setups fall apart for salons. You can build the most beautiful client tracker in Google Sheets, but if your consent forms are still in a filing cabinet and your photos are still on someone's phone, you've just moved the problem, not solved it.
The Client Record Tab: One Row, One Client, Everything Attached
Here's the core of what I built. Tab one is the Client Master — one row per client. Columns are deliberately simple, because the moment a spreadsheet gets too wide, nobody scrolls right and half the data dies in the dark.
- Client Name (Last, First — for sorting. Trust me, first-name sorting breaks down fast when you have four Jessicas)
- Phone / Email — one column each, no combined cell
- Primary Stylist — dropdown via data validation, so you don't get "Sarah" "sarah" "S. Miller" in three rows
- Allergies / Sensitivities — a dedicated column, not a notes field. Red conditional formatting if anything is filled in
- Last Service Date — auto-populated from the Service History tab using a formula (more on this below)
- Consent Form — this is where FileFox earned its keep. The actual signed PDF lives in this cell, not a Drive link that goes stale
- Patch Test Photo — same deal, drag the photo in
- Status — Active, Inactive, or Consultation Only
The allergies column is the single most important thing on this tab. I formatted it with a conditional formatting rule: if the cell isn't blank, the entire row gets a soft red background. When a stylist glances at a client's row before an appointment, that red band is impossible to miss. It's not sophisticated. It doesn't need to be.
I put that formula in a helper column that acts as a visual flag. Paired with the conditional formatting rule (Format > Conditional Formatting > Custom formula: =$E2<>"" → background: light red), it means nobody mixes a color without seeing the warning first.
The Service History Tab: Where Color Formulas Stop Getting Lost
Tab two is Service History, and it's where the real value lives over time. Every service gets its own row. Columns: Date, Client Name (matched to the master tab), Stylist, Service Type (dropdown: Color, Cut, Keratin, Lash Lift, Facial, Wax, etc.), Formula / Product Notes, Before Photo, After Photo, and a Notes field for anything that doesn't fit.
The formula/product notes column is free text on purpose. Color formulas are too varied and specific to force into structured fields — "Wella Koleston 6/07 + 7/0 (1:1) with 20vol, processed 35 min, toned with Shinefinity 09/13 for 20" is a real entry from my sheet. Trying to break that into separate columns for brand, shade, ratio, developer, and time would make the sheet unusable. Just let the stylist write what they'd write on an index card.
The before/after photos, though — those are the game changer. We used to text these between stylists or dump them in a shared Google Photos album with no labels. Now they're right in the row, attached to the specific service on the specific date. When a client comes back four months later and says "I want what we did last time," you pull up the row, see the photo, read the formula, and mix. No guessing. No scrolling through a camera roll.
I also added a COUNTIFS column on the master tab that shows total visits per client. It's one formula, and it immediately tells you who your regulars are — useful for loyalty programs, or just for knowing who deserves the extra five minutes of scalp massage.
Consent Forms and Liability Docs: The Part That Keeps You Out of Trouble
Let me be blunt: if you're doing chemical services, lash lifts, microblading, or any treatment that touches skin — and you don't have a signed consent form on file that you can find in under 30 seconds — you're exposed. Not theoretically. Practically. A client has a reaction, their insurance company calls, and you're digging through a filing cabinet. I've seen it happen to a friend who does permanent makeup. The form existed. She just couldn't produce it fast enough, and it made her look negligent even though she wasn't.
In my sheet, the consent form lives directly in the client's row on the master tab. We have the client sign a paper form (or sign on a tablet using a free app like Jotform), export it as a PDF, and drop it into the cell using FileFox. That's it. When someone calls — the state board, an insurance adjuster, the client themselves — I can pull it up in the time it takes to type their name into Ctrl+F.
For services that require patch tests (like PPD-based hair color), I keep the patch test photo and date in the Service History tab, attached to the specific row. Some salons do a new patch test every six months; some do it once. Either way, the documentation is there, timestamped, and findable.
Making It Work for a Team (Not Just You)
If you're a solo stylist, everything above works as-is. But if you have a team — even two or three stylists — you need guardrails. Because someone will inevitably type "Jennifer M" when the master tab says "Martindale, Jennifer," and then the formulas break and you've got a ghost client with no history.
Three things saved us from spreadsheet anarchy:
- Data validation dropdowns everywhere. Client names on the Service History tab pull from the Client Master list. Service types are a dropdown. Stylist names are a dropdown. If it can be standardized, lock it down. (Google Sheets > Data > Data Validation > List from a range.)
- Protected ranges on the Client Master tab. I gave my stylists edit access to the Service History tab and the notes/photo columns, but locked the core client info columns on the master tab to owner-only editing. This prevents accidental overwrites — especially the allergy column.
- A simple naming convention: last name, first name, always. I even put a header note in the client name column: "Last, First — no nicknames." It sounds patronizing. It works.
One more thing that made a real difference: I set up a "Dashboard" tab that pulls a few key numbers. Total active clients, clients not seen in 90+ days (a COUNTIFS formula checking the last service date), and services performed this month. It takes twenty minutes to build and it replaced the vague sense of "I think we're busier this month?" with actual numbers.
That formula counts active clients whose last service date is more than 90 days ago. Those are your re-engagement candidates. A quick text — "Hey, it's been a while, we'd love to see you" — costs nothing and brings people back.
What This System Actually Replaced (and What It Didn't)
To be honest about what this setup does and doesn't do: it replaced my filing cabinet, my "client notes" notebook, the shared Google Photos album we never organized, and about 40% of the frantic texts between stylists asking "what did we use on her last time?" It also replaced the $49/month tier of salon software I was paying for mostly because it had a "client notes" feature.
What it didn't replace: our booking system (Fresha, and it's fine), our POS (Square), or Instagram for marketing. This isn't an everything tool. It's specifically for the records-and-files problem — the stuff that falls between the cracks of your other tools and ends up in a filing cabinet, a camera roll, or nowhere.
The real test came last month when a client called about a possible allergic reaction to a toner we'd used. I pulled up her row, found the consent form (signed, dated), the patch test photo from her first visit, the specific product and formula from that appointment, and her allergy notes — all in under two minutes, while she was still on the phone. That's the whole point. Not a prettier spreadsheet. A findable answer when you need it.
Start Here: The One Thing to Build This Week
If you're staring at your own version of my old filing cabinet — whether it's physical or a chaotic Drive folder — don't try to build the whole system at once. Start with the Client Master tab. Just the basics: name, contact info, primary stylist, allergies, and one column for the consent form file. Get your current active clients in there. Forty-five minutes, tops.
Then, next week, add the Service History tab and start logging new appointments as they happen. Don't try to back-fill two years of history — you'll burn out and abandon the whole thing. Start fresh, let it build, and within two months you'll have a living record that's more useful than anything you had before. The photos and consent forms you attach to those rows today are the ones you'll be grateful for when someone calls six months from now asking what you used.
Frequently Asked Questions
What's the best way to track salon color formulas in Google Sheets?
Create a Service History tab with one row per appointment. Include a free-text column for the full color formula (brand, shade, ratio, developer, processing time) — don't try to break it into separate structured columns, because formulas are too varied. Link each row to the client's name using a data validation dropdown so formulas are searchable by client.
How do I store signed consent forms for salon services digitally?
Have clients sign a paper form or use a free e-signature app like Jotform, then export the signed form as a PDF. Using a tool like FileFox, you can drag and drop that PDF directly into the client's row in Google Sheets. This keeps the consent form attached to the client record — no separate folder to dig through.
Can Google Sheets replace salon management software like Vagaro or Fresha?
Not entirely. Booking, POS, and payment processing are better handled by dedicated salon software. But Google Sheets excels at the records-and-files layer that most salon software handles poorly — client allergy notes, color formula history, signed consent forms, and before/after photos all attached to a single client row.
How do I track client allergies and sensitivities in a spreadsheet?
Give allergies their own dedicated column on your Client Master tab — never bury them in a general notes field. Apply a conditional formatting rule (custom formula: =$E2<>"") that highlights the entire row in red when the allergy column has any content. This makes the alert visible at a glance before any service begins.
How should multiple stylists share a Google Sheets client tracker without messing it up?
Use data validation dropdowns for client names, service types, and stylist names to prevent inconsistent entries. Protect the core columns on the Client Master tab (especially allergy and contact info) so only the owner can edit them. Give stylists edit access to the Service History tab and photo columns. Establish a simple naming convention — last name, first name — and enforce it from day one.