Guide
Free Excel CRM Template (Works in Google Sheets Too)
A free Excel CRM template with clients, appointments, follow-ups and a totals tab. What each column means, how to adapt it, and when to move off the sheet.
By the Ifa team
Most owner-led businesses run their first year on a spreadsheet, and that is a reasonable choice. The trouble is that a blank sheet has no opinion: columns multiply, statuses live in someone’s head, and six months later nobody can say how many clients went quiet. This page gives you a free Excel CRM template that already has an opinion. It holds clients, appointments and follow-ups on separate tabs, uses dropdown statuses so the columns stay countable, and feeds a totals tab that updates itself. It opens in Excel and LibreOffice, imports cleanly into Google Sheets, and there is no email gate: the link below is the file.
We built it at Ifa because our import pipeline reads thousands of owner spreadsheets, and the same handful of layout mistakes causes almost every painful migration. The template avoids those mistakes from day one, so whether you later move to Ifa, to another CRM, or nowhere at all, your data stays usable.
1. Download the file and open it your way
The template is a single .xlsx file with five tabs: Start here, Clients, Appointments, Follow-ups and Dashboard.
- Excel or LibreOffice: open the file directly. Everything works as shipped.
- Google Sheets: upload the file to Drive and open it with Sheets, or use File, then Import inside an empty spreadsheet. As of September 2026, Sheets converts the dropdowns and the formulas without changes.
The grey italic rows are examples. Keep them while you learn how the tabs connect, then delete them; the Dashboard recalculates on its own.
2. Put every client on the Clients tab, once
The Clients tab has eight columns: Name, Phone, Email, Status, First visit, Last visit, Preferred service and Notes. Two of them do most of the work.
Status is a dropdown with three values: Lead, Active and Lapsed. Resist the urge to add more. A lead is someone who asked but never bought. Active means they have been in recently, whatever “recently” means for your trade (six weeks for a salon, a year for a chimney sweep). Lapsed means they used to come and stopped. Because the values come from a list instead of free typing, the Dashboard can count them; the moment someone types “actve” or “regular!!” into a free-text column, counting is over.
One row per client is the rule that saves you later. When Amelia books a second appointment, that goes on the Appointments tab, not on a second Amelia row. Duplicate client rows are the single most common defect we see in imported sheets, and they are miserable to untangle by hand.
The Notes column is for context a column cannot hold: allergies, the dog’s name, “always runs ten minutes late”. If you find yourself writing the same kind of note again and again, promote it to its own column instead.
3. Log appointments so the totals mean something
Each visit is one row on the Appointments tab: Date, Time, Client, Service, Price and Status, plus Notes. The Client column is a dropdown fed from the Clients tab, which keeps spellings identical between tabs; identical spellings are what let a future import (or a lookup formula) connect a visit to a person.
Status has four values, and the Dashboard reads all of them:
- Booked counts toward upcoming work.
- Done feeds the revenue total.
- Cancelled drops out of every count.
- No show gets its own counter, because a no-show is not a cancellation: it is a client you should contact.
Write prices as plain numbers in your own currency. The sheet never converts or formats them, so the revenue figure is exactly the sum of what you typed.
4. Run your week from the Follow-ups tab
The Follow-ups tab is deliberately small: Client, Due date, Reason, Done (Yes or No) and Notes. It exists because “I should call Priya back” is precisely the kind of thought a busy owner loses by Thursday.
The habit that makes it work: whenever an appointment ends with a loose thread (a no-show, a price question, a “call me in the spring”), add one follow-up row before you close the laptop. Once a week, filter the Done column to No and work through the list. The Dashboard shows the open count so you can see the backlog without opening the tab.
5. Read the Dashboard, then trust it
The Dashboard tab computes seven numbers with plain COUNTIF and SUMIF formulas: active clients, leads waiting for an answer, appointments booked and completed, revenue from completed appointments, missed appointments to rescue, and open follow-ups. There is nothing to configure; the numbers change as the other tabs change.
Two of them deserve a weekly glance. Leads to answer is money sitting in your inbox: these people already asked. Missed appointments to rescue is the cheapest marketing you will ever do, because a rebooked no-show costs one message.
6. Adapt the template without breaking it
Rename anything: tabs, columns, statuses. A dog groomer might turn Preferred service into Breed, an HVAC crew might rename Appointments to Jobs and add an Address column. Three changes are safe by design, and two are not.
Safe: adding columns to the right of the existing ones, renaming column headers, and changing the dropdown values (edit the data validation list so the Dashboard formulas and the dropdowns stay in step).
Not safe: merging cells (they break sorting, filtering and every import tool we have ever tested), and putting two facts in one cell (“Balayage + trim, paid cash, rebook March”). One fact per cell is the whole trick of a database, even one that lives in a spreadsheet.
7. Five minutes of polish that pay off every week
The template ships plain on purpose, but a few native spreadsheet features make it noticeably nicer to live in. All of them work in Excel, LibreOffice and Google Sheets as of September 2026.
Sort Appointments by date, newest first. Select the data rows and sort by the Date column descending, so today is always at the top. Redo it after a burst of typing, or use a filter view in Google Sheets that keeps the sort applied for you without changing the sheet for anyone else.
Color the overdue follow-ups. Add a conditional formatting rule on the Follow-ups tab: if Done is “No” and Due date is before today, fill the row red. The weekly review becomes a glance.
Keep a lapsed-clients view. Filter the Clients tab to Status equals Lapsed, sorted by Last visit. That list, worked top to bottom with one friendly message each, is the highest-yield hour in a quiet week.
Protect the header row. In Google Sheets, use Data, then Protect sheets and ranges, on row 1 of each tab. A renamed or deleted header is the fastest way to silently break the Dashboard.
Decide where the file lives. One copy, one location, one name. If it is an Excel file, keep it in a folder that gets backed up automatically; if it is a Google Sheet, the version history in File, then Version history, is your undo button for entire bad days. The “v2 FINAL (copy)” naming pattern is how client lists get lost.
What goes wrong and how to avoid it
These are the failure patterns we meet most often when reading owner spreadsheets during import, in rough order of pain:
- Duplicate clients. Two rows for the same person, slightly different spellings. Prevention: the one-row rule plus the Client dropdown on the Appointments tab.
- Dates stored as text. “3rd of May” sorts nowhere and computes nothing. Type dates the way your locale expects and let the cell format them; if a date suddenly left-aligns, the sheet is treating it as text.
- The Notes column becomes the real database. When prices, visit dates and phone numbers hide inside prose, no formula and no import can see them. Promote repeated facts to columns.
- Several people editing at once. Excel files on a shared drive overwrite each other quietly. If two or more people update records daily, move the file to Google Sheets for real simultaneous editing, and treat that as the first sign you are outgrowing spreadsheets altogether.
- Deleting instead of lapsing. Removing a quiet client destroys the history you would need to win them back. Set Status to Lapsed and keep the row.
When the spreadsheet stops being enough
A well-kept sheet like this one carries a solo operator surprisingly far. The ceiling shows up as symptoms: you scroll to find anything, the file has a “v2 FINAL” cousin, bookings clash because the sheet cannot check availability, and reminders depend on your memory.
That moment is what Ifa is for. You describe the business in plain words, Ifa proposes the records, views and workflow, and you review the plan before anything exists. Its import reads this exact template (and messier sheets: CSV, XLSX and friends) through a preview with duplicate, date and empty-value checks, and nothing is published until you approve it. The same workspace then adds what a spreadsheet cannot: conflict-checked bookings, a booking page Ifa creates for your customers, reminder workflows you define, and a client record behind every appointment. We are honest about the trade: Ifa is pre-launch with a waitlist, there is no free tier, and invoicing and payments are planned rather than shipped, so keep your invoicing tool for now. The spreadsheet-to-workspace page shows the whole path, template included.
Questions people ask
Is Excel actually good enough as a CRM?
For one person with under a few hundred clients, yes, provided the sheet has structure: separate tabs for clients and visits, dropdown statuses, one row per client. That structure is exactly what this template ships. What Excel never gives you is availability checking, automatic history per client, and safe simultaneous editing.
Does the template work in Google Sheets?
Yes. Upload the .xlsx to Drive and open it with Google Sheets, or import it into an empty spreadsheet. The dropdowns, the cross-tab client list and the Dashboard formulas all convert as of September 2026.
Is it really free? What is the catch?
The file is free and ungated: no email address, no account, no watermark. We publish it because well-structured spreadsheets import cleanly, and some of the people who outgrow the template become Ifa customers. That is the whole model.
How many clients can a spreadsheet handle?
Technically many thousands of rows. Practically, the limit arrives earlier and socially: the second daily editor, the first double booking, the first no-show nobody chased. Most owners feel the ceiling somewhere between two hundred clients and one busy season.
How do I move this data into a CRM later?
Keep the structure and any decent tool can read it. In Ifa specifically, you upload the file, the import proposes records and fields from your columns, flags duplicates and odd dates in a preview, and writes nothing until you approve it. The import guide explains each check.
Last updated September 2, 2026.