Small Business CRM

Google Sheets CRM Template: How to Build One (and Where It Breaks)

A Google Sheets CRM works when someone builds it on purpose: a dropdown-validated stage column, a form that turns new leads into rows, and a trigger that fires before a follow-up is missed. Here is that build, tab by tab, and the one point it can't grow past.

9 min read

Key takeaways

  • A Google Sheets CRM template works when it’s built deliberately: one row per deal, a dropdown-validated stage column, and a Log tab nobody types over.
  • Data validation (Data > Data validation) turns typed-in stage names into a fixed list, so “Proposal” and “proposal sent” stop being two different values in a report.
  • A Google Form linked to the sheet turns lead intake into new rows instead of typed-in entries or a lead stuck in an inbox.
  • Native notification rules cover basic alerts; a reminder tied to a date needs a short Apps Script time-driven trigger someone on the team owns and maintains.
  • The template hits its ceiling once a second person needs to edit the same deal at the same time; our guide to the ten signs a team has outgrown a spreadsheet covers what to check next.

A Google Sheets CRM template works when it is built on purpose, not typed in as you go: one row per deal, a dropdown that locks stage names to a short list, a form that turns a new lead straight into a row, and a trigger that fires before a follow-up is missed. This guide builds one, tab by tab and setting by setting, then covers the one point where even a careful build runs out of room.

Everything below has a rough Excel equivalent (Power Automate standing in for Apps Script, Microsoft Forms for Google Forms), but the steps here use Google Sheets, because that is where most small teams already keep their list.

Can Google Sheets actually run a CRM?

For one or two people tracking one list, yes, and Google’s own features cover more of the job than people expect before they look:

  • Dropdowns (data validation) keep stage and lead-source values consistent instead of five spellings of the same stage.
  • Cell edit history shows who changed a cell and when: right-click the cell and choose Show edit history.
  • Notification rules email you when the sheet changes, right away or as a daily digest.

Size is rarely the problem. A spreadsheet created in Google Sheets holds up to 10 million cells, far more than a small team will log. What the template has to make up for is structure: a fixed list of stages, a place new leads land without being typed, a reminder that actually fires, and some control over who can change what.

What goes on each tab?

Most Google Sheets CRM templates give each contact a row. Give each deal a row instead, because the deal is what moves, carries a value and needs a next step. A contact who buys twice appears on two deals; their own details live on a separate tab.

  • Deals tab: deal name, company, main contact, owner, stage, amount, expected close date, next step, next step date, last contact date and source.
  • Contacts tab: name, company, title, email, phone and owner, one row per person.
  • Log tab: date, deal name, who and what happened. Add a row for every call, meeting or email that matters, and never type over an old entry.

Build the Deals and Contacts tabs first, with headers in row one and nothing else. The dropdowns, the form and the reminders below all attach to columns on this tab, so get the columns right before you connect anything to them.

How do you set up data validation so stage names stay locked?

Select the Stage column on the Deals tab, then Data > Data validation, and choose a list of items instead of free text: Qualified, Meeting Scheduled, Proposal Sent, Negotiation, Closed Won, Closed Lost, or whatever five or six stages your team actually uses. Reject the entry rather than showing a warning, so a mistyped stage cannot slip through. Keep the list of allowed values on a separate, hidden tab and point the rule at that range, so adding a stage later means editing one list once, not the rule on every column that uses it.

Do the same for Owner, pointing the dropdown at a named range of your team’s names on the Contacts tab, and for Source. A dropdown stops a typo from becoming a broken filter: “Proposal Sent” and “proposal sent” are the same stage to a person and two different values to a report.

How do you add new leads without typing them in by hand?

Build a short form at forms.google.com (or Drive > New > Google Forms), with fields that match your Deals or Contacts tab headers exactly, so nothing needs re-mapping later. In the form’s Responses tab, click the Sheets icon and choose Link to Sheets; Google adds a Form Responses tab to your CRM file and appends one row per submission automatically.

That tab is an intake queue, not your Deals tab, so a new lead still needs one more step:

  • No script: check the Form Responses tab each morning and copy each new row’s details into Deals and Contacts by hand. This is enough for a handful of leads a week.
  • A short script: in Extensions > Apps Script, an installable form submit trigger can run a function that appends a matching row to Deals the moment a response arrives, so nobody has to remember to check the queue.

Either way, a Google Form gives the template a real intake point: a lead is a row the moment someone submits it, not a note in an inbox waiting to be typed in.

How do you get reminded before a follow-up is missed?

Notification rules only cover “any change is made,” not “a date has arrived,” so a next-step date sitting in a cell does nothing on its own. For an actual reminder, write a short function in Extensions > Apps Script that reads the next-step-date column, compares each value to today, and emails the deal’s owner for anything due; then add an installable time-driven trigger under Triggers so the function runs every morning without anyone opening the sheet.

This is the one part of the template that is code, not configuration, and it needs an owner the same way the CRM data does. Write down who set it up and where the script lives, because the day that person leaves is the day the reminders quietly stop, with no error message to notice.

How do you set sharing and access controls?

Select the columns that should not be casually overwritten, such as Amount and Owner, and go to Data > Protect sheets and ranges to limit who can edit them; leave the Log tab open so anyone can still add a row. Protection is not privacy, though: Google is direct about it, “people can print, copy, paste, and import and export copies of a protected spreadsheet.” Anyone with edit access to the file can still read every tab, including margins, commission notes or a colleague’s open deals, because sharing in Sheets is set per file, not per tab.

Where does even a well-built template stop being enough?

A locked dropdown, a form intake and a working reminder script fix most of what makes a spreadsheet CRM feel improvised. Three things they do not fix:

  • A protected range stops most edits, but the last save still wins if two people open the same deal at once.
  • The reminder script is a small piece of software someone on the team now owns, not a feature that keeps working on its own.
  • Quote history, email threads and per-person record access still have nowhere to live except a separate tool, a separate inbox or a separate promise to be careful.

None of that means the template is built wrong; it means the job has grown past what one file, however well set up, is designed to hold. For the fuller list of what to check on your own sheet (what happens once a second or third person starts selling from the same list), see our guide to the ten signs a team has outgrown a spreadsheet; this page is the build, that one is the decision.

How do you move from this template to a CRM?

In order: clean the sheet, download each tab as a CSV or Excel file (File, then Download), import companies, contacts and open deals, and try a small batch before the rest. Our guide to importing contacts into a CRM from a spreadsheet covers field mapping and the checks to run afterward. Keep the old file view-only for a month so nobody updates it out of habit.

Our guide to free CRM plans explains what they usually include and where they stop, and what a CRM is covers the wider picture.

What does Senitix CRM’s free plan cover when you leave the template?

Senitix CRM’s Free plan covers the shared workflow the template was standing in for: leads, contacts, accounts, deals, activities and reports, for up to 2 users, with no time limit and no credit card. Contacts, companies and deals come in through import jobs from CSV or Excel files, the same files you just downloaded from Sheets. Against what the template had to build by hand:

  • Locked stages and fields: every deal is a record with a fixed set of fields, not a column a dropdown has to keep honest. Included on Free.
  • Lead intake: an import job creates leads as records directly, with no Form Responses tab to clear out. Included on Free. Web forms that turn a website inquiry into a lead are coming soon.
  • Reminders: tasks, calls and meetings carry a due date and a reminder, with no script for anyone to own. Included on Free.
  • Per-person access: access follows role, department and record ownership, with field permissions for sensitive values. Included on every plan.
  • Email history and quote versions: threads from a connected mailbox, numbered quote versions and their approval steps land on the records they belong to instead of in a separate inbox or file; plan availability is on the pricing page.

Check the Free plan’s limits against your sheet too: 1,000 contacts, 250 deals and 1 pipeline. See how deals, activities and reports fit together on the Senitix CRM overview, then start free or compare plans.

Frequently asked questions

Is there a free CRM template for Google Sheets?

Many CRM vendors publish one, and any of them is a fine starting point. The layout matters less than three habits: a locked stage dropdown, one row per deal with contacts on a separate tab, and a next-step date on every open deal. Whichever template you start from, the steps in this guide (validation, a form for intake, a reminder trigger) are what make it hold up past the first few weeks.

Do you need to know Apps Script to build this?

Only for the reminder step. Data validation, protected ranges and linking a form to the sheet are all built into the menus, no code involved. The one piece that needs a short script is a reminder tied to a date, because Sheets has nothing native that checks a date and acts on it; everything else in this guide is configuration, not code.

What happens to a Google Sheets CRM template when a rep leaves?

That depends on who owns the file, the reminder script and the form. Keep the spreadsheet, the Apps Script project and the form all owned by a company account from day one, not a personal one, so none of the three leaves with the person who built it. Even then, a deal’s email threads stay in the departing rep’s mailbox, and any copies they downloaded stay on their laptop.

Can I keep using Google Sheets alongside a CRM?

Yes, for analysis, but not as a second place to update deals: export records as CSV or Excel files and work with them in Sheets. In Senitix CRM, every plan can export records as CSV or Excel files, and a full data export can be scheduled. Keep the CRM as the only place where a deal’s stage, amount and next step change.

Keep reading

All articles

Ready to grow with Senitix?

Connect with customers, win more deals and grow repeat business, all on one platform.

No credit card required.