2sync
Software12 min read

How to build a Google Sheets CRM and keep it from cracking

Build a CRM in Google Sheets with contacts and deals tabs, dropdown stages, overdue follow-ups and filter views, and know what to do when it cracks.

Google Sheets logo on a deep blue gradient, joined by a dotted arrow to a three-column pipeline board whose blue, yellow and green columns hold three, two and one contact cards
Written by
Simo Elalj
Published on
Oct 19, 2026

You can run a CRM in Google Sheets, and for a freelancer or a team of a few people it works well.

The sheet costs nothing extra, everyone already knows how to use it, and Google has added real structure over the last few years: dropdown chips, tables with typed columns and saved views.

What breaks it is rarely the first hundred contacts. It's the week two people sort the same tab, a follow-up date slips by unnoticed, or nobody can say which email belonged to which deal.

"We're a tiny team right now, and for a while, Google Sheets honestly did everything we needed," begins a Reddit thread titled "Our Google Sheets setup is starting to crack."

This guide builds the sheet properly first, then covers what to do when it cracks.

Quick answer

To build a CRM in Google Sheets:

  1. Make three tabs, Contacts, Deals and Activity, linked by an ID column.
  2. Turn each tab into a table with Format > Convert to table and set the column types.
  3. Make the deal stage a dropdown and give every open deal a follow-up date.
  4. Highlight overdue follow-ups with conditional formatting and TODAY().
  5. Give each person a filter view, so nobody's sorting changes anyone else's screen.

When the sheet starts to crack, keep it and run the pipeline in a synced Notion database, or move to a dedicated CRM.

Can you use Google Sheets as a CRM?

Yes, as long as the job is a list of people, a pipeline and a reminder to follow up. That covers most freelancers, consultants and small sales teams.

"Anyone with a Google Account can create in Sheets," as Google puts it. Tables, dropdown chips and the current cell limit all work on personal accounts, not only on paid Workspace plans.

What a sheet won't do on its own is attach your emails to a contact, remind you on the day a follow-up is due, or stop two people from tripping over each other's filters. Those gaps decide when it's time to add something, covered further down.

What tabs and columns a Google Sheets CRM needs

Three tabs, each with one job, keep the sheet readable as it grows:

  • Contacts: one row per person.
  • Deals: one row per opportunity, with its stage and next step.
  • Activity: one row per call, email or meeting.

A short ID in the first column of Contacts, repeated in the other two tabs, ties them together. It's how a deal knows whom it belongs to without anyone retyping a name.

Contacts, Deals and Activity share one ID column, so each deal and each call points back to a person.

These headers are a working starting point. Copy them into row 1 of each tab:

TabColumns, in order
ContactsContact ID, Name, Company, Email, Phone, Source, Owner, Tags
DealsDeal ID, Contact ID, Contact name, Deal, Stage, Value, Owner, Next step, Follow-up date, Last contact
ActivityDate, Contact ID, Deal ID, Type, Notes

Six stages are enough for most pipelines: Lead, Contacted, Qualified, Proposal, Won and Lost. Every extra stage is one more place for a deal to stall without anyone noticing.

How to build a CRM in Google Sheets, step by step

The formulas below assume the column order in the table above, so Stage sits in column E of Deals and Follow-up date in column I.

1. Create the tabs and freeze the header row

Name three tabs Contacts, Deals and Activity, and type the headers into row 1 of each. Then go to View > Freeze and freeze one row, so the headers stay on screen however long the list gets.

2. Convert each tab into a table

Select the headers and the rows below them, then choose Format > Convert to table (Ctrl+Alt+T on Windows, Cmd+Opt+T on Mac). Pick a type for each column:

  • Dropdown for Stage, Owner and Source.
  • Date for Follow-up date, Last contact and the Activity date.
  • Number with currency formatting for Value.
  • People chip for Owner, if your team uses Google accounts.

A typed column flags values that don't belong. Set a column to Date, for instance, and "it shows a warning for cells within the column that don't follow this type," per Google's tables help.

3. Make the stage a dropdown

If the Stage column is already a Dropdown table column, edit its options there. Outside a table, select the column and choose Insert > Dropdown, enter the first stage, then use Add another item for the rest.

Anything typed that isn't on the list is rejected by default. To allow it with a warning instead, open Advanced options and select Show a warning. Keep Allow multiple selections for Tags, never for Stage: a deal sits in one stage at a time.

4. Highlight follow-ups that are overdue

On the Deals tab, select the data rows, then choose Format > Conditional formatting. Under "Format cells if," pick Custom formula is and enter:

=AND($I2<>"", $I2<TODAY(), $E2<>"Won", $E2<>"Lost")

Choose a red fill. Every open deal whose follow-up date has passed now turns red.

The flag shows when someone opens the sheet. TODAY() holds the date of the last recalculation, so the sheet won't email anyone the morning a follow-up comes due.

The same tool catches duplicate contacts. On the Contacts tab, a second rule with =COUNTIF($D:$D, $D2)>1 marks every email address that appears twice. To clean them up, use Data > Data cleanup > Remove duplicates.

In the Contact name column of Deals (column C), pull the name from Contacts by its ID:

=XLOOKUP(B2, Contacts!A:A, Contacts!B:B, "")

Fix a name once in Contacts and every deal shows the corrected version. The same pattern pulls in Company or Email.

6. Add a pipeline summary

Add a fourth tab named Dashboard, list the six stages in column A from row 2 down, and count deals and value per stage next to them:

  • Deals in a stage: =COUNTIF(Deals!E:E, A2)
  • Value in a stage: =SUMIF(Deals!E:E, A2, Deals!F:F)

Copy both formulas down the column. You now see where the money sits and which stage is filling up.

7. Give everyone their own filter view

Plain filters are shared: "When you add a filter, anyone with access to your spreadsheet will find the filter too," Google warns. That's how one person's sort ends up rearranging everyone's screen.

Filter views fix it. Choose Data > Create filter view, filter Owner to yourself, then click Save View. A filter view "only applies to your view of the spreadsheet," so each person keeps a "my deals" view without touching anyone else's.

Tables offer the same through their Views menu, including a group by view that stacks deals under each stage.

8. Capture leads with Google Forms

If leads come in through a form, connect it: in Google Forms, open Responses, click Link to Sheets and choose Select existing spreadsheet to pick the CRM file. Each submission lands as a new row in a responses table, ready to copy into Contacts or look up from it.

9. Turn on notifications and protect the formulas

Choose Tools > Notification settings > Edit notifications to get an email when Any changes are made or A user submits a form, either Email - daily digest or Email - right away. These are for you alone: "You can only set up notifications for yourself."

Then protect the columns that hold formulas. Choose Data > Protect sheets and ranges, add the range and select Show a warning when editing this range, or restrict who can edit it.

Google is clear that protection "shouldn't be used as a security measure," so share the file only with people you trust.

Is there a Google Sheets CRM template?

Google Sheets has pre-built tables under Insert > Pre-built table, built "for everyday tasks like project management, inventory management, event planning and more." Google doesn't name a CRM among them.

The header table above works as your template. Paste it into a blank spreadsheet, then follow steps 2 to 9.

Where a Google Sheets CRM starts to crack

Size is rarely the problem. A spreadsheet now holds "up to 20 million cells," after Google doubled the limit in September 2026. The cracks come from how people work with it. "When I had 30-40 contacts it was fine. Now it's grown and I'm genuinely dropping the ball," a solo consultant with about 150 leads wrote on Reddit.

The usual signs:

  • Follow-ups slip. Red rows only help someone who opens the sheet. Built-in notifications report edits, not due dates, and an emailed reminder takes an Apps Script trigger you write and maintain yourself.
  • Two people, one view. Sorting and plain filters change the sheet for everyone. Filter views help only if everyone actually uses them.
  • Emails stay in Gmail. The Activity tab is only as complete as the last person who bothered to log a call.
  • A contact is spread over three tabs. Seeing one person's deals and history means lookups and filters, not one page.
  • Duplicates creep in from forms and pasted lists faster than anyone removes them.
  • The phone is awkward. Typing into a grid on a small screen is slow, and "on mobile, you currently can't select multiple dropdown options even when multiple selection is enabled."

If three or more of these sound familiar, the sheet has stopped being enough on its own.

What to do when the sheet cracks

There are three ways forward, and which one fits depends on who still needs the sheet:

  • Keep the sheet and add Notion. The sheet still matters to someone (your accountant, a client who checks a tab, teammates who will never leave Sheets), but you want a board, a page per deal for notes and links to the people involved. A two-way sync keeps both sides matched, so nobody types anything twice, which is what usually sinks a second system.
  • Move to a dedicated CRM. You need email tracking, automated sequences and call logging built in. The best CRMs for freelancers compares the main options with their real prices.
  • Move everything into Notion. Nobody needs the sheet anymore. Import it once as a CSV, as described in the Google Sheets and Notion guide, and build from a Notion CRM, one of the best Notion CRM templates or our free Circles of Trust contacts template.

How to keep the sheet and run the pipeline in Notion

Notion turns the Deals tab into a board you drag cards across, with a page per deal for call notes and relations to the company and the person behind it.

The sheet doesn't have to go anywhere: with 2sync's Google Sheets integration, the tab and the database stay matched in both directions, so whoever prefers the sheet keeps editing it.

The Stage dropdown becomes the columns of a Notion board, and moving a card updates the cell.

Setting it up takes a few minutes:

  1. Open the Google Sheets onboarding, click Choose a spreadsheet and pick your CRM file in the Google Drive window. 2sync can only open the spreadsheets you pick there.
  2. Choose the Deals tab. Each automation syncs one tab, so add a second automation if you want Contacts in Notion too.
  3. Connect a Notion database. Name its properties after your column headers and the columns map themselves.
  4. Map Stage to a Notion Status or Select property, then add a board view grouped by it.
  5. Choose a direction for each column: two-way for Stage, Next step and Follow-up date, while formula columns such as Contact name only ever go to Notion.
2sync opens only the spreadsheet you pick in Google Drive, then lists its tabs.

A few details matter once it runs:

  • A hidden, protected 2sync ID column links each row to its page, so you can sort, insert rows and rename headers freely. Leave that column alone.
  • When the same column changes on both sides between two syncs, the Notion value wins.
  • Relations, people and files can't come from a sheet column, so they stay as Notion-only properties. That's where the link from a deal to its company page belongs.
  • One automation syncs up to 10,000 rows. The Solo plan covers 3,000 synced items; Premium and Pro have no item limit.
  • Changes sync every 2 to 5 minutes, depending on your plan, and deleting a row never deletes its Notion page unless you turn that on.

Give the deals a contacts database to point at

Deals belong to people, and in Notion those people can have pages of their own. Our free Circles of Trust template is a ready-made contacts database: a page per person with company, job title, email, phone and birthday, plus views by relationship tier, by network and by upcoming birthday.

Circles of Trust, our free contacts template for Notion.

It's organized around relationship tiers rather than deal stages, so it sits beside the Deals database instead of replacing it. Add a relation from Deals to it, and each contact page lists every deal linked to that person.

A contact page in Circles of Trust, with the details a deal can point to.

The template is built for 2sync's contact sync, so Google Contacts stays matched with it in both directions, and the numbers on your phone stay the same as the ones in Notion. Gmail can file emails into Notion too, each one related to the sender's contact page.

Build the sheet well before you replace it

A Google Sheets CRM is worth building properly before it's worth abandoning. Set up the three tabs, the stage dropdown and the overdue rule this week, and give everyone a filter view of their own.

When follow-ups start slipping or the team asks for a board, you don't have to start over. Keep the sheet everyone knows and put Notion beside it.

Keep your sheet, add a Notion pipeline

Sync your CRM tab with a Notion database in both directions, column by column. Every plan starts with a 14-day free trial.

Sync your Google Sheets CRM

FAQ

Can I use Google Sheets as a CRM?

Yes, for a freelancer or a small team. Use three tabs (Contacts, Deals, Activity) linked by an ID, a dropdown for the deal stage, a follow-up date with a conditional formatting rule for overdue deals, and a filter view per person. It won't log emails or send reminders on its own.

Does Google have a CRM?

Google Workspace doesn't include a CRM app. The Google Workspace Marketplace has a Sales & CRM category of third-party apps that connect to Gmail and Sheets, and Google's own Salesforce connector brings Salesforce data into Sheets.

Is there a free Google Sheets CRM template?

Google's pre-built tables cover project management, inventory management and event planning, and Google doesn't name a CRM among them. The tab and column list in this guide works as a template: paste the headers into a blank spreadsheet and convert each tab to a table.

How much does Google Sheets cost?

Nothing extra: anyone with a Google account can create spreadsheets. Google Workspace business plans start at $7 per user per month with a one-year commitment, or $8.40 on the flexible plan (Business Starter, US prices in October 2026).

How do I get follow-up reminders in Google Sheets?

A conditional formatting rule with TODAY() turns overdue deals red when you open the sheet, but it sends nothing. Edit notifications report changes, not due dates, so an emailed reminder needs an Apps Script time-driven trigger, which can email 100 recipients a day on a personal account and 1,500 on Google Workspace.

When should I move from a spreadsheet to a CRM?

When follow-ups slip, two people keep undoing each other's sorting, or you can't see a contact's history in one place. If others still rely on the sheet, keep it and sync it with a Notion database; if you need email tracking and sequences, move to a dedicated CRM.

How many contacts can a Google Sheets CRM hold?

Far more than a small business needs. A spreadsheet can hold up to 20 million cells since Google doubled the limit in September 2026. If you sync the sheet with 2sync, one automation handles up to 10,000 rows per tab.

Can Notion be used as a CRM?

Yes. A Notion database with a status property, relations and a board view covers a solo or small-team pipeline, as our Notion CRM guide shows. You can also keep a Google Sheets CRM and sync it with Notion both ways.

About the author

Simo Elalj
Simo Elalj

Founder of 2sync and software engineer (INSA Lyon). Builds sync tools that connect Notion with calendars, tasks, and contacts. Previously founded RefurbMe.


Latest

From the blog

Guides on Notion sync, the calendar and task tools we test, and the productivity stack that holds it all together.