Sales Operations
Free CRM Spreadsheet Template (Excel & Google Sheets)
Build a clean CRM in Sheets or Excel: four tabs, required fields, formulas, and light automations. Get the structure, reporting tips, and a plan to upgrade to HubSpot when you outgrow the sheet.
You don’t need a $50K stack to get control of your pipeline. If you’re under 10 reps or validating a motion, a clean CRM spreadsheet in Google Sheets or Excel will keep deals visible, owners accountable, and forecasts honest. This guide gives you a free, operator-grade template structure, step-by-step build instructions, reporting formulas, light automations, and a blunt take on when to ditch the sheet and move to HubSpot.
What a spreadsheet CRM can and cannot do
A well-structured spreadsheet can centralize leads, deals, activities, and pipeline in one place. It’s fast to stand up, easy to customize, and cheap. You get clarity: what’s in the pipe, who owns what, what’s stuck, and what’s likely to close this month. For many founder-led teams, that’s 90% of the battle.
Spreadsheets also force discipline. If a rep can’t update a few fields and move a deal stage, the issue isn’t tooling - it’s process. A sheet keeps the process bare-bones and visible, which is exactly what an early-stage motion needs.
But a spreadsheet is not a long-term CRM if you need automated sequences, role-based permissions at scale, email/calendar sync, multi-object reporting, SLAs, or a large team editing the same data. When you start tripping over version control, manual logging, or pipeline forecasting misses, you’re past the sheet stage.
The free CRM spreadsheet structure you’ll build
Use four tabs: Leads, Companies, Deals, and Activities. Keep a fifth tab for Dashboards. Each tab is a simple table with consistent IDs and lookups. Don’t over-engineer it; you want reps to update it daily without friction.
We’ll map out the columns, data types, and the formula scaffolding so you can copy it into Google Sheets or Excel in minutes. Then we’ll add validation, conditional formatting, and a few helper formulas for velocity and weighted pipeline.
Once this is live, run a 15-minute daily pipeline stand-up using the Deals and Activities tabs. Status, blockers, next step - done.
Core tables: Leads, Companies, Deals, Activities
Here’s the minimal data model that lets you do contact management, account-level rollups, deal forecasting, and activity tracking without clutter. You can add more columns later, but start lean and consistent.
| Tab | Purpose | Primary ID | Key Relationships |
|---|---|---|---|
| Leads | Raw inbound/outbound contacts before qualification | Lead_ID | Company_ID (optional), converted Deal_ID |
| Companies | Accounts/organizations you sell to | Company_ID | Multiple Lead_IDs and Deal_IDs |
| Deals | Qualified opportunities you forecast | Deal_ID | Company_ID, Primary_Contact (Lead_ID), Activities |
| Activities | Calls, emails, demos, notes tied to a Deal or Lead | Activity_ID | Deal_ID (preferred), Lead_ID (fallback), Owner |
Required columns and data types
Use these columns to enable forecasting, accountability, and basic analytics. Data validation (dropdowns, dates, numbers) reduces errors and keeps reports clean.
- Deals tab (core): Deal_ID (text), Deal_Name (text), Company_ID (text, dropdown from Companies), Primary_Contact (Lead_ID, dropdown from Leads), Owner (dropdown of reps), Stage (dropdown), Stage_Probability (number, %), Amount (currency), Close_Date (date), Source (dropdown), Next_Step (text), Last_Activity_Date (date), Created_Date (date), Days_In_Stage (number), Status (Open/Won/Lost), Win_Loss_Reason (text), Notes (text).
- Companies tab: Company_ID (text), Company_Name (text), Domain (text), Segment (dropdown: SMB/Mid/ENT), Region (dropdown), Industry (text), ARR_or_Potential (currency), Website (text), Owner (dropdown), Notes.
- Leads tab: Lead_ID (text), First_Name, Last_Name, Email, Phone, Title, Company_ID (dropdown), Source (dropdown), Status (New/Working/Qualified/Disqualified), Owner, Created_Date, Last_Activity_Date, Notes.
- Activities tab: Activity_ID (text), Activity_Date (date), Type (Call/Email/Meeting/Note), Outcome (Connected/No Show/Reply/etc.), Owner, Deal_ID (dropdown), Lead_ID (dropdown), Next_Action (text), Notes.
Key formulas to add on the Deals tab: Weighted_Amount = Amount * Stage_Probability; Days_In_Stage = TODAY() - Stage_Entered_Date; Last_Activity_Age = TODAY() - Last_Activity_Date. In Excel, replace TODAY() with TODAY() as well - same function name works in both.
Use VLOOKUP/XLOOKUP to bring in Company fields (Segment, Region) onto Deals for segmented reporting. Example in Google Sheets: =XLOOKUP([@Company_ID],Companies!A:A,Companies!B:B,""). In Excel 365: same function.
Pipeline stages and probabilities
Keep 5–7 stages. Fewer than five hides risk; more than seven creates admin work. Assign a rational probability to each so your weighted pipeline isn’t fantasy math.
- New (10%)
- Qualified (25%)
- Discovery/Demo (40%)
- Evaluation/Trial (60%)
- Proposal (75%)
- Verbal Commit (90%)
- Closed Won/Lost (0% or 100% at moment of outcome)
When you move a deal to a new stage, set Stage_Entered_Date. That enables Days_In_Stage and highlights stuck deals. If your cycle runs two weeks on average but lots of deals sit 21+ days in Discovery, clean the block - not the spreadsheet.
Step-by-step: Build it in Google Sheets and Excel
You can build this from scratch in 30–45 minutes. If you’re rebuilding a messy sheet, timebox a two-hour clean-up and archive anything you won’t act on in the next 60 days.
First, create a new file with five tabs: Deals, Companies, Leads, Activities, Dashboard. Format each tab as a table. Freeze the header row. Turn on filter views to save common filters (e.g., My Deals, This Month Closing, Stalled 14+ days).
Second, add dropdowns for Stage, Source, Owner, Status using Data validation. Third, add conditional formatting for red flags: Last_Activity_Age > 7 (amber), > 14 (red); Close_Date in past and Status=Open (red); Amount blank (red).
Google Sheets build steps
In Google Sheets, create named ranges for Owners, Stages, and Sources on a hidden “Lists” tab. Use Data validation with “List from a range” to keep options consistent across tabs. Use XLOOKUP to join Company or Lead info onto Deals for quick context.
Create helper columns on Activities: Activity_Week = WEEKNUM(Activity_Date); that supports weekly activity charts. For speed, use ARRAYFORMULA on columns like Days_In_Stage: =ARRAYFORMULA(IF(ROW(A:A)=1,"Days_In_Stage",IF([@Stage]="Closed Won",0,TODAY()-[@Stage_Entered_Date]))) - or fill down manually if you prefer control.
On Dashboard, use SUMIF/SUMIFS to create tiles: Total Pipeline (sum of Amount for open deals), Weighted Pipeline (sum of Weighted_Amount), This Month Forecast (sum of Weighted_Amount where MONTH(Close_Date)=MONTH(TODAY()) and Status=Open). Chart Activities per week by Owner (bar) and Pipeline by Stage (stacked bar).
Excel build steps
In Excel, format each tab as a Table (Ctrl+T). That gives you structured references like [@Amount] and auto-expands formulas. Use Data Validation with lists stored on a hidden “Lists” sheet for Stages, Owners, Sources.
Use XLOOKUP (Excel 365/2021) to pull related values. Example: =XLOOKUP([@Company_ID],Companies[Company_ID],Companies[Company_Name],""). If you’re on older Excel, VLOOKUP works but is less robust; consider upgrading for XLOOKUP - it saves time and errors.
For more advanced users, add a PivotTable on the Dashboard sheet to report by Stage, Owner, Segment, and Close Date buckets. Create simple slicers for Stage and Owner to filter quickly during pipeline reviews.
Reporting inside a spreadsheet CRM
Good reporting in a sheet is about three things: accuracy, recency, and focus. If the sheet is updated daily, your Dashboard becomes a single source of truth for the week’s calls, this month’s forecast, and stuck deals needing attention.
Start with five tiles: Total Pipeline (Open), Weighted Pipeline, New Deals This Month, Forecast This Month, Win Rate (last 90 days). Add a chart for Activities per rep per week and a stacked bar for pipeline by stage. That’s it. Fancy can wait.
Keep a “Stalled Deals” view: filter Open deals where Last_Activity_Age > 14 or Days_In_Stage > 14. Review it in your stand-up and assign crisp next steps. You’ll recover deals just by removing friction.
Pipeline value and weighted pipeline
Weighted_Amount = Amount * Stage_Probability. If a $10,000 deal is in Proposal (75%), weighted is $7,500. Summed across deals, you get a more grounded forecast than raw totals.
Create a Dashboard cell for each: Total_Pipeline = SUMIFS(Deals[Amount],Deals[Status],"Open"); Weighted_Pipeline = SUMIFS(Deals[Weighted_Amount],Deals[Status],"Open"). Add per-owner versions with another SUMIFS criterion on Owner.
To avoid false confidence, cap Stage_Probability at 90% until the deal is actually Closed Won. “Verbal commit” can still ghost. Your spreadsheet should protect you from hope as a strategy.
Conversion rates, velocity, and aging
Conversion rates: calculate Won deals / total deals created in a period. In Sheets/Excel, consider a PivotTable by Created_Date month with Status filter to compute win rate and average Amount.
Sales velocity: (Number of deals x Win rate x Average deal size) / Sales cycle length (days). You can derive this with a few helper metrics in Dashboard. If it trends up month over month, you’re doing more of the right work, not just more work.
Aging: highlight Open deals where Close_Date is in the past or Days_In_Stage exceeds your median. Aging is where deals go to die; fix the handoffs or adjust stages to reflect reality.
Light automations you can bolt onto a spreadsheet
Spreadsheets aren’t automation platforms, but you can attach a few time-savers without blowing up maintenance. The goal is to nudge reps and reduce missed follow-ups - not to recreate a full CRM.
Start with notifications. In Google Sheets, use Apps Script to send a daily email of “Stalled Deals” to each Owner. In Excel, pair your workbook with Power Automate to trigger reminders when Last_Activity_Age exceeds 7 days or when a Close_Date is due within 3 days.
If you need to sync leads from forms or enrich companies, wire a simple Make or n8n scenario: push form submissions to the Leads tab, auto-assign Owner based on territory, and log an initial Activity. If that sounds useful and you want it set up properly (idempotent, with retries and logging), our marketing automation playbooks cover Make/n8n builds with guardrails.
Data quality, access, and governance in spreadsheets
Bad data makes good reports lie. Lock down structure early: use dropdowns, restrict date and number formats, and color-code required fields. Create a “Data Hygiene” view for deals missing Amount, Close_Date, or Stage. Review it weekly.
Access: limit edit permissions to the Deals and Activities tabs for reps; keep Lists and formulas protected. In Google Sheets, Protect range; in Excel, protect sheets with a password (and share it with your ops lead, not the whole team).
Audit trail: spreadsheets don’t log history well. Mitigate with a “Changelog” tab: use simple entry macros or Apps Script to append user, timestamp, tab, and change summary on edits to critical columns (Stage, Amount, Close_Date). It’s basic but catches accidental overwrites.
When to outgrow a spreadsheet CRM and graduate to HubSpot
Upgrade when manual updates slow you down or deals are slipping through the cracks. Signals: 5+ active sellers, multi-product quoting, marketing-to-sales handoffs at scale, need for email/calendar sync, and pipeline forecasts that miss by 30%+ because status isn’t real-time.
If your average deal size (ACV) is over $5–10K and you run 50+ open deals at any time, HubSpot (or similar) repays itself through fewer dropped balls and cleaner attribution. Bonus: granular reporting across contacts, companies, deals, and activities becomes trivial.
Agency or internal headcount isn’t your only path. A senior operator can implement HubSpot quickly, keep process tight, and avoid the “pretty but empty” dashboards agencies love. You get outcomes over optics.
Anton Chisliuk · AI Marketing Ops runs an operator model - one senior builder who ships CRM, SEO, outbound, and automation end-to-end. No account manager layer, no fluff. Proof-first: for Cleverence (B2B SaaS), the program scaled from 0 to ~80K organic visits/month and ~2K inbound leads/month with a 16% lead-to-purchase rate. If you want a blunt assessment of your pipeline and what to automate first, book a short Growth Audit. Leads, sales, content, and systems - one senior operator.
Migration playbook: Sheet to HubSpot without breaking pipeline
Don’t “just import.” Map, test, then migrate. The mistake teams make is shoving messy CSVs into a CRM and spending six months cleaning. Do the opposite: clean in the sheet, then lift-and-shift deliberately.
Step 1 - Field mapping: list every column from Leads, Companies, Deals, and Activities. Create a mapping doc to HubSpot objects and properties. Example: Deals.Amount → Deal Amount (currency), Deals.Stage → Deal Stage (pipeline: New/Qualified/...). Create custom fields for anything unique (e.g., Region, Segment, Win/Loss Reason).
Step 2 - Normalize values: make sure Stage, Source, Owner, and Status values match the CRM picklists exactly. Fix emails, domains, and phone formats. De-duplicate by email for leads/contacts and by domain/name for companies.
Step 3 - Import order: Companies → Contacts (Leads) → Deals → Activities. Use your Company_ID, Lead_ID, and Deal_ID as external keys during import so activities attach correctly. Validate on a 50-record test import first.
Step 4 - Ownership and automations: assign owners on import; then switch on basics only: lifecycle updates, task creation for Next_Step, and inactivity nudges. Save sequences and lead scoring for week two after your team is live.
Step 5 - Go-live and freeze: freeze edits in the spreadsheet post-migration and redirect reps to the CRM with a 1-hour enablement session and a laminated (or digital) 1-pager: stages, required fields, and weekly pipeline ritual.
Cost math: spreadsheet vs CRM vs agency retainers
Spreadsheet: close to $0 in software, but it costs you discipline. You spend a few hours setting it up and 10–15 minutes daily keeping it clean. For small teams, that’s a smart trade.
HubSpot Starter/Pro: you pay for email sync, sequences, permissions, and reporting. The payoff is rep time saved and fewer missed follow-ups. If each rep closes one more deal per quarter from fewer dropped balls, you’ve covered your seat cost.
Agencies and bloated consulting retainers? You’ll often pay for decks and stand-ups. If you want transparent economics, compare a flat-fee operator who builds and runs with you. Our pricing is public and simple - month-to-month after a 90-day build. See the numbers on the pricing page.
Real-world proof: Why structured CRM ops creates pipeline
Good ops compounds. At Cleverence (B2B SaaS), we aligned content, inbound routing, and CRM hygiene. Results: scaled from effectively zero to ~80K organic visits/month, ~2K inbound leads/month, and a 16% lead-to-purchase rate. That’s not magic - it’s consistent process and clarity on what to do next.
A CRM spreadsheet won’t get you to that scale, but it’s the right first step: codify your stages, make ownership visible, measure activity, and run weekly pipeline reviews. When you need deeper automation and attribution, you’ll have clean data to migrate.
If you’re already at the tipping point - reps are juggling too many deals, follow-ups slip, and forecasting is guesswork - you’re ready for a system, not just a sheet.
How to use this free CRM spreadsheet today
You don’t need a download button to start. Open Google Sheets or Excel and create the five tabs (Deals, Companies, Leads, Activities, Dashboard). Add the columns listed above, set dropdowns for Stage/Owner/Source/Status, and paste in these starter stage probabilities: New (10%), Qualified (25%), Discovery (40%), Evaluation (60%), Proposal (75%), Commit (90%).
Add formulas on Deals: Weighted_Amount = Amount * Stage_Probability; Days_In_Stage = TODAY() - Stage_Entered_Date; Last_Activity_Age = TODAY() - Last_Activity_Date. On Dashboard, build tiles for Total Pipeline, Weighted Pipeline, and This Month Forecast via SUMIFS.
Run your next pipeline meeting from the sheet. Sort by Close_Date (this month), filter Owner = you, and clean every deal: add a Next_Step, schedule an Activity, move the Stage if reality changed. It will feel lighter immediately.
Soft CTA: Get a real CRM when the sheet starts creaking
When you’re ready to implement HubSpot properly - objects, fields, automations, reports, and a 1-hour rep enablement that sticks - skip the agency overhead. See how we set up pipeline, RevOps, and handoffs end to end on the CRM implementation page.
Conclusion
A spreadsheet CRM is the right tool when you need speed, clarity, and zero fluff. Build the four-object model (Leads, Companies, Deals, Activities), add basic validations and formulas, and run the sheet as a daily operating ritual. You’ll get better forecasts and fewer dropped balls long before you pay for seats.
Then, when your team and volume grow, graduate to HubSpot with a deliberate migration: field mapping, normalized values, staged imports, and a short enablement. If you want an operator to audit your pipeline, clean your current sheet, or stand up HubSpot with guardrails, book a short intro - or start here with a CRM implementation.
Author: Anton Chisliuk - operator, not agency. Month-to-month honesty, outcomes over optics.
FAQs
- Is a CRM spreadsheet enough for a 3–5 person sales team?
Usually yes, if you keep it tight: firm stages, required fields, daily updates, and a weekly pipeline review. Add light automations (reminders) and you’ll avoid most dropped balls. Upgrade when version control, email/calendar sync, or reporting limits slow you down.
- Google Sheets or Excel - which is better for a CRM?
Pick what your team will actually use. Sheets is great for real-time collaboration and quick Apps Script nudges. Excel is better for heavy analysis and offline work. Both support the same structure and formulas outlined here.
- What columns are non-negotiable for forecasting?
Owner, Stage, Stage_Probability, Amount, Close_Date, Status, and Last_Activity_Date. Without these, weighted pipeline and forecast accuracy will be fiction. Everything else is a helpful bonus.
- How do I prevent reps from breaking formulas or dropdowns?
Protect ranges/sheets (Sheets and Excel both support this), use data validation, and keep a hidden Lists tab for dropdown sources. Add conditional formatting to flag missing required fields and a weekly hygiene review.
- Can I connect form submissions to the Leads tab automatically?
Yes. Use Make or n8n to push new form entries into the Leads tab, standardize Source values, and auto-assign Owner. Add an initial Activity entry and a task reminder. Keep it simple - log the sync date and a unique form ID to avoid duplicates.
- When should I move from spreadsheet to HubSpot?
When you have 5+ active sellers, 50+ open deals, multi-touch handoffs, or you’re missing forecast targets because updates are stale. If ACV is $5–10K+, a proper CRM quickly repays itself via fewer dropped balls and better coordination.
- What’s the safest way to migrate my sheet to HubSpot?
Clean first, then import in order: Companies → Contacts → Deals → Activities. Map fields, normalize values to picklists, test with 50 records, and assign owners on import. Freeze the sheet post-cutover and run a 1-hour enablement with a simple stage/field playbook.
Written by
Anton Chisliuk
Founder & Lead Operator · AI Marketing Operator
Anton Chisliuk is a GTM Engineer and Marketing Systems Architect. He built Cleverence's AI-native revenue OS (88 Make blueprints, MCP hub, 0→200K organic, 2.2K leads/mo) and now delivers outsourced GTM Engineering — CRM, automation, SEO, outbound — for growth-stage businesses via aimrktops.com.
About Anton →Ready to fix this — for real?
Book a free Growth Audit. No sales deck — a 30-minute conversation about your pipeline, stack, and what to ship first.