Google Sheets as a CRM: Setup, Formulas, and When It Stops Working
A Google Sheet is often the right CRM for your first year of selling. Here is a layout that lasts, three formulas that extend its life, the three points where it breaks, and how to move out in about 20 minutes.

If your CRM is a Google Sheet, you are not doing anything wrong. For a solo founder, a freelancer or a team of two to five, a spreadsheet is often the right tool for the first year of selling. It is free, everyone knows how to use it, and there is no vendor to break up with.
The problem is that nobody tells you when it has quietly stopped working, so you find out through a missed follow-up. Here is how to set a sheet up so it lasts, the formulas that extend its life, the three points where it breaks, and the honest options at each one, including staying put.
If you want a ready-made file rather than building your own, start from our free Google Sheets and Excel CRM template.
A minimal sheet layout that lasts
Most spreadsheet CRMs fail early because they try to be a database. Keep it to one tab and eight columns:
| Column | Example |
|---|---|
| A: Name | Dana Ortiz |
| B: Company | Ortiz Landscaping |
| C: Email | dana@ortizlandscaping.com |
| D: Stage | Lead / Contacted / Proposal / Won / Lost |
| E: Value | 4500 |
| F: Last contact | 2026-10-14 |
| G: Next action | 2026-10-21 |
| H: Notes | Wants pricing before her board meets |
Make Stage a dropdown (Data → Data validation) so nobody types "proposal sent" in one row and "Proposal" in another. Keep Value a plain number and both date columns real dates, because the formulas below depend on them. If more than one person touches the sheet, add a ninth column, Owner, as a dropdown too.
Three formulas that extend its life
1. Highlight overdue next actions. Select the data range, open Format → Conditional formatting, choose "Custom formula is" and enter:
=AND($G2<>"", $G2<TODAY(), $D2<>"Won", $D2<>"Lost")
Fill the row light red. Every morning, the coloured rows are the ones that need you. This one rule replaces most of what people think they need a CRM for in the first months.
2. Count deals and value per stage. On a second tab:
=QUERY(Contacts!A:H, "select D, count(A), sum(E) where D <> '' group by D", 1)
You get one row per stage with deal count and total value. Replace "Contacts" with your tab's name. Add =DAYS(TODAY(), F2) on the main tab for "days since last contact".
3. One filter view per person. Instead of each person sorting the shared sheet and wrecking everyone else's view, use Data → Filter views, filter Owner to one name and save it under that name. Each person opens their own view; the rows stay untouched.
With those in place, a sheet carries a solo seller comfortably for a long time. Then one of three things happens.
Breaking point one: around 50 contacts
The symptom: the Last contact column is lying to you.
At around 50 active contacts, updating the sheet becomes a separate chore. You reply to Dana in Gmail, mean to switch tabs and update her row, and do not. Three weeks later her row still says the 14th, and the overdue highlighting is colouring rows based on fiction. This is not a discipline problem. Conversations live in one tab and records in another, and discipline runs out at exactly the volume where it matters.
What to do. Stay on the sheet if you talk to fewer than ten people a day, and set a ten-minute end-of-day ritual: scan the inbox, update Last contact and Next action.
Move to a Gmail CRM if the ritual keeps slipping. The point of a tool like Teamopipe, NetHunt, Copper or Streak is that the stage, next task and notes attach to the email thread itself, so when you reply to Dana you move her deal from the same screen. See how a one-person pipeline looks on our solo page.
Breaking point two: around 150 contacts, or a second editor
The symptom: rows go stale or duplicate, and follow-ups fall between two people.
A sheet with one owner degrades slowly. A sheet with two owners degrades fast. Someone adds a contact who already exists under a different spelling. Someone assumes the other person followed up, because the row did not say otherwise. Overdue highlighting, useful at five rows, stops helping at forty, when you need overdue by owner and by value.
What to do. Stay on the sheet only if you lock it down: one person owns data entry, everyone else is view-only, and the sheet becomes a record rather than a working tool.
For most two-to-five-person teams, this is the point to move. A shared pipeline with deals and tasks assigned to an owner fixes the "I thought you followed up" problem. Teamopipe has shared and private pipelines, so client work that should stay with one person can. Copper Basic is fine here too, as long as its 2,500-contact limit does not worry you. Our Copper and NetHunt comparison pages walk through the differences.
HubSpot's free CRM is reasonable at this stage if your process already lives outside Gmail, for example if most deals arrive through a web form.
Breaking point three: around 500 contacts
The symptom: you need history, not a notes cell, and people ask reporting questions you cannot answer.
At 500 contacts the Notes column is a scroll of dated fragments: "Oct 3 call, wants Q1. Sep 12 sent deck." A contact's history needs to be a timeline of emails, notes and tasks, which a cell is not. Reporting breaks at the same time: "how many proposals did we send last month and how many closed?" needs a record of when each deal changed stage, and a sheet forgets the previous stage the moment you overwrite it.
What to do. The sheet is finished as a CRM at this scale; the question is which direction to go.
If your team sells from the inbox, a Gmail CRM still covers it. Teamopipe's reporting dashboard (on the Growth plan) shows pipeline value by stage, stage conversion, won and lost deals with reasons, and stale deals, and each contact carries its linked emails and tasks. NetHunt's reports need its $60 Business plan; Streak Pro includes standard reports at $49.
If you are building a dedicated sales team with a manager who lives in dashboards, a full CRM such as HubSpot or Pipedrive may be the better tool. The trade-off is that reps work in the CRM tab and the inbox separately again, which is the problem you started with. See Teamopipe vs HubSpot.
What it costs to move
Per user per month, as listed on each vendor's pricing page in October 2026:
| Option | Annual billing | Monthly billing | Lives in Gmail? | Best for |
|---|---|---|---|---|
| Google Sheet with the formulas above | $0 | $0 | No | Solo, under about 50 active contacts |
| Teamopipe Starter | $19 | $24 | Yes, plus a web app | Solo and 2–5 person teams selling from the inbox |
| Copper Basic | $23 | $29 | Sidebar plus web app | Teams fine with a 2,500-contact cap |
| NetHunt Basic | $24 | $30 | Yes | Small teams; reports and automation from $60 |
| Streak Pro | $49 | $59 | Yes | Teams already on Streak; free plan has no pipelines |
| HubSpot free CRM | $0 | $0 | No, separate web app | A sales process that lives outside the inbox |
Teamopipe Starter covers pipelines, contacts, organisations, tasks, templates, CSV import and Zapier, which is what a sheet refugee needs first. Growth at $29 adds the reporting dashboard and email sequences.
How to migrate a sheet in about 20 minutes
People stay on a sheet past its breaking point because they fear the move. It is shorter than most expect.
- Clean the columns. Every row needs an email address, one spelling per stage and a numeric Value. Delete test rows and anything marked Lost more than a year ago.
- Split contacts from deals. A CRM treats a person and the thing you are selling them as separate records. Duplicate the sheet into a Contacts tab (name, company, email, owner) and a Deals tab (contact email, deal name, stage, value, next action, notes).
- Download each tab as CSV. File → Download → Comma Separated Values.
- Import contacts first, then deals, so each deal attaches to an existing person. In Teamopipe that is Settings → Import / Export, with a downloadable template for each record type; the CSV import guide covers the details.
- Map stages. Rename the pipeline's stages to match your sheet, and keep the same number for the first month so nobody relearns anything on day one.
Then freeze the sheet: rename it "Pipeline archive, Oct 2026" and set it to view-only. If you leave it editable, someone will keep using it.
What to keep in the sheet after you move
Not everything belongs in a CRM. Keep invoicing and finance in the spreadsheet: invoice numbers, payment dates, tax and cash flow. A CRM records that a deal was won; your sheet records when the money arrived. Keep pricing calculators there too. Once a month, export won deals from the CRM into the finance sheet instead of entering them twice.
The short version
Under 50 contacts and solo: keep the sheet and set up the three formulas today. Past 50, or as soon as a second person edits: move to a CRM that lives where your conversations live. Past 500 with a sales manager: consider a full CRM and accept the separate tab.
If you want to test the middle option, Teamopipe's 14-day trial includes Growth features and needs no card. Import your sheet and see whether updating a deal from inside the thread fixes the problem the spreadsheet created. If it does not, your archive sheet is one click away.
Start your free 14-day trial
An affordable alternative to Streak and other complex CRMs.
FAQ
Can you use Google Sheets as a CRM?
Yes. A sheet with columns for name, company, email, stage, value, last contact, next action and notes works well for a solo seller with fewer than about 50 active contacts. It breaks when updating it becomes a separate chore from emailing, when a second person starts editing, or when you need per-contact history and conversion reporting.
Is there a free Google Sheets CRM template?
Yes. Teamopipe offers a free CRM template for Google Sheets and Excel with no email required. Add the conditional formatting and QUERY formulas from this guide to extend it.
When should a small business switch from a spreadsheet to a CRM?
Watch for three symptoms: the last-contact column is out of date because updating it means leaving Gmail, two people edit the sheet and rows go stale or duplicate, or you are asked reporting questions such as stage conversion that a sheet cannot answer. They typically appear around 50, 150 and 500 contacts.
What is the cheapest way to move from Google Sheets to a CRM?
As of October 2026, Teamopipe Starter is $19 per user per month on annual billing, Copper Basic is $23 with a 2,500-contact cap and NetHunt Basic is $24. HubSpot's free CRM costs nothing but runs as a separate app rather than inside Gmail.
How do I import a spreadsheet into a CRM?
Clean the columns so every row has an email and a consistently spelled stage, split the sheet into Contacts and Deals tabs, download each as CSV, import contacts first and then deals, and map your stage names to the CRM's pipeline.
Should I delete the Google Sheet after moving to a CRM?
No. Set it to view-only as an archive, and keep using a spreadsheet for finance, invoicing and pricing calculators, which a CRM handles poorly.





