Sales Operations
Free CRM Template (Excel & Google Sheets) for B2B Teams
Build a no-nonsense CRM in Excel or Google Sheets. Get the exact columns, formulas, and a simple dashboard - plus a clean path to migrate when you outgrow it.
You don’t need a heavyweight CRM to get disciplined about pipeline. If you’re founder-led, pre–full-stack RevOps, or running a small team, a well-structured spreadsheet can handle 80% of the job - if you set it up like a system, not a static list. Here’s a free CRM template blueprint for Excel and Google Sheets: fields, formulas, dashboard, and a clean migration path when it’s time to graduate.
Who this spreadsheet CRM is for (and who should skip it)
This template is for teams that need pipeline clarity today without adding another subscription, login, or integration rabbit hole. If you’re a founder juggling calls, demos, and follow-ups, or a VP Growth validating a new segment before you standardize tooling, a spreadsheet is a tactical win. You can capture leads, run a rolling forecast, and enforce next steps with zero training overhead.
It also works for outbound-heavy sprints where you want to track replies, meetings, and deals coming off a campaign. You can mirror the pipeline stages from your sales playbook, calculate weighted revenue, and surface red flags (aging, missing next step, no activity) in one view. Because it’s just a sheet, you control the columns, validation lists, and filters.
Who should skip it? If you manage multiple reps, complex handoffs across SDR/AE/CSM, strict compliance logs, or deep automation, go straight to a real CRM. Once you cross ~150 open deals or coordinate 3+ sellers, the risk of human error, collisions, and missed follow-ups outweighs the simplicity. Use this template as a stepping stone - then move your process into a system that enforces it.
What you’ll get from this template (in practice)
The template follows a light but durable data model: Deals, Contacts, Companies, Activities, and Settings. Deals drives your forecast (amount, stage, probability, close date). Activities keeps your follow-ups honest (call, email, meeting, note with outcomes). Contacts and Companies prevent duplicate spaghetti. Settings holds dropdowns so the pipeline stays clean when multiple people touch it.
It’s built for scanning. You’ll get conditional formatting for overdue tasks and aging stages. A Weighted Pipeline column that updates as you change probability. A Days in Stage counter that brightens when deals stall. A Last Activity date pulled automatically from Activities so you see which opportunities are cold.
On top, you’ll get a quick dashboard: revenue by stage, by owner, and by source; 30/60/90-day close windows; and conversion from initial contact to won. It’s not a BI tool, but it’s enough to answer, “Are we on track this month?” without exporting anything.
The data model: sheets and fields that keep your pipeline sane
Minimalist doesn’t mean messy. The template uses five sheets to mirror core CRM objects while keeping formulas fast. You can rename columns, but resist the urge to cram everything into one tab - separation reduces duplicates and unlocks cleaner reporting.
Before you build, open a new workbook with these sheet names: Deals, Activities, Contacts, Companies, Settings. Freeze the header row in each sheet. Turn ranges into a Table (Excel) or use filter views (Sheets). Then add data validation tied to the Settings sheet so stages, owners, and sources stay consistent.
Below is the recommended schema with must-have fields. If you sell subscriptions, keep Amount as Monthly (MRR) and derive ARR on the dashboard. If you sell one-off projects, keep Amount as Total and set realistic Probabilities by stage.
Deals sheet (your forecast driver)
Core columns: Deal ID, Company, Primary Contact, Email, Owner, Source, Stage, Stage Entered Date, Created Date, Amount, Currency, Probability %, Weighted Amount, Close Date, Status (Open/Won/Lost), Loss Reason, Next Step, Next Step Due, Last Activity Date, Days in Stage, Total Age, Notes.
Why these fields: Stage plus Stage Entered Date unlocks aging; Probability enables weighted pipeline; Next Step + Due Date keeps motion; Last Activity Date gives a real “deal health” signal. Owner and Source support accountability and channel ROI snapshots without building attribution software.
Data tips: Use dropdowns for Owner, Stage, and Source from the Settings sheet. Make Company a dropdown pulling from the Companies sheet to avoid duplicates. Same for Primary Contact if you want a tighter link to Contacts. If multiple currencies exist, add a Normalized Amount in your reporting currency with an FX rate from Settings.
Activities sheet (your follow-up ledger)
Core columns: Activity ID, Associated Deal ID, Contact, Type (Call/Email/Meeting/Note), Date, Owner, Outcome (Connected/No Answer/Positive/Negative), Notes, Next Step, Next Step Due. The Associated Deal ID links the activity to the pipeline.
Why track activities: Deals don’t stall arbitrarily - they stall when no one touches them. Logging even minimal outcomes lets you see if deals are truly cold or just waiting on the buyer. It also proves where effort converts: some teams find “Meeting Held” to “Proposal Sent” is the biggest leak; others see “Demo” isn’t the problem - it’s getting the second meeting.
Data tips: Keep the Type list short. If you need inbox syncing, you’ve probably outgrown spreadsheets; for now, track sales-critical touches only. Enforce Owner via dropdown to keep filters clean by rep.
Contacts sheet (people, not just inboxes)
Core columns: Contact ID, First Name, Last Name, Email, Phone, Title, Department, LinkedIn URL, Company (dropdown from Companies), Lifecycle (Lead/MQL/SQL/Customer), Opt-in (Yes/No). Keep it lean so sellers actually maintain it.
Why this matters: Matching Contacts to Companies and Deals helps deduplicate fast and gives context to outreach. Even a basic Lifecycle field lets you count conversion steps before you adopt marketing automation.
Data tips: Make Email unique. Add data validation to reduce typos. Use LinkedIn URL for quick context before a call.
Companies sheet (the account view)
Core columns: Company ID, Company Name, Website, Industry, Employee Range, HQ Country, ICP Tier, Account Owner. ICP Tier (A/B/C) helps prioritize. Account Owner simplifies account-based views if multiple reps touch an org.
Why this matters: Company-level attributes unlock better filters and forecasting, especially if multiple deals exist per account. It also forms the base for a smooth migration to a full CRM later.
Data tips: Use Website as a near-unique key. Consider adding Tech Profile or Segment if you already know your ideal stack or verticals.
Settings sheet (your guardrails)
Create named lists: Owners, Stages (e.g., New, Qualified, Discovery, Proposal, Negotiation, Contract, Won, Lost), Sources (Outbound, Inbound, Referral, Partner, Event), Currencies, Loss Reasons. These named ranges will feed data validation in the other sheets.
Why this matters: Consistency beats sophistication. If half your team types “negotiations” and half “Negotiation,” reporting fractures. Dropdowns eliminate that noise.
Data tips: Put Probabilities by Stage here (e.g., Discovery 30%, Proposal 50%, Negotiation 70%). You can then VLOOKUP/INDEX-MATCH the probability into Deals instead of manual entry.
Build it: step-by-step setup in Google Sheets and Excel
Start with Settings. In column A, create your headings (Owners, Stages, Sources, Loss Reasons, Currencies). In columns B onward, list values under each heading. Select each list and define a named range (Sheets: Data > Named ranges; Excel: Formulas > Define Name). You’ll reference these in data validation.
Move to Deals. Add the recommended columns. For Stage, Owner, Source, Status, and Loss Reason, apply data validation to the named ranges so entries are consistent. Freeze the header row. In Sheets, add Filter Views for “My Deals,” “Closing This Month,” and “Stalled 14+ Days.” In Excel, turn the range into a Table (Ctrl/Cmd + T) so formulas auto-fill down and use Slicers for Stage and Owner.
Build Activities next. Add validation for Type (Call/Email/Meeting/Note) and Owner. Make Associated Deal ID a dropdown from Deals[Deal ID] if you want to force a link; otherwise, allow text but train the team to paste the actual ID. Create similar structure for Contacts and Companies and use data validation on reference fields so typos don’t splinter your dataset.
Formulas that make a spreadsheet behave like a CRM
Not all formulas are equal. A few calculated fields unlock real “CRM-like” behavior without scripts. Add them once and they’ll quietly police the pipeline for you.
Weighted Amount (Deals): If Amount is in N and Probability % in P, set Weighted in Q to =IFERROR(N2*(P2/100),0). If you store Probability by Stage on Settings, use =IFERROR(N2*(VLOOKUP(G2,Settings!A:B,2,FALSE)/100),0) where G is Stage.
Stage aging and total age: Days in Stage =IFERROR(TODAY()-O2,"") where O is Stage Entered Date. Total Age =IFERROR(TODAY()-H2,"") where H is Created Date. Add conditional formatting to light up cells when Days in Stage >= 14 or Total Age >= 45 for Open deals.
Last Activity, Next Step health, and overdue flags
Last Activity Date: In Sheets, use =IFERROR(MAXIFS(Activities!D:D,Activities!B:B,A2),"") where Activities!D is Activity Date and Activities!B is Associated Deal ID; A is Deal ID. In modern Excel (with MAXIFS), the same formula works; in older Excel, wrap MAX(IF()) as an array formula.
Overdue Next Step flag: =IF(AND([@[Status]]="Open",[@[Next Step Due]]<>"",[@[Next Step Due]] Win rate and conversion helpers: Add helper columns in Deals like IsWon =IF([@[Status]]="Won",1,0) and IsOpen =IF([@[Status]]="Open",1,0). These simplify pivot tables for win rate by owner, by stage entry month, or by source.
Dashboard: pipeline, forecast, and conversion without BI tools
Keep the dashboard on a separate sheet. Build three simple blocks: Pipeline by Stage, Forecast by Close Date bucket, and Performance by Owner. Each block is a pivot table so anyone can refresh without touching formulas.
Pipeline by Stage: Rows = Stage; Values = SUM of Weighted Amount; Filters = Status = Open. Add a stacked bar chart. This tells you where money sits and which stages bloat.
Forecast by Close Date: Create a calculated column Close Bucket =IF([@[Close Date]]
Outreach and automation add-ons with Sheets/Excel
You can bolt light automation onto a spreadsheet stack without standing up a full CRM. For email sequences, use a mail merge add-on (Sheets: YAMM, Mailmeteor; Excel: Word Mail Merge) pulling from Contacts with filters (ICP Tier A, job title contains “Operations,” etc.). Log key replies into Activities so your Last Activity stays truthful.
For task nudges, connect your sheet to Make or n8n to send a Slack/Teams ping when a Next Step is overdue or a deal moves to a critical stage. Zapier works too, but Make/n8n offers more control for branching logic. Guardrails: only automate notifications and lead assignment - if you try to automate your entire sales process in a spreadsheet, you’ll spend more time debugging than selling.
When you’re ready to orchestrate more than reminders - e.g., auto-create deals from form fills, score leads by behavior, or sync outbound replies - consider moving the process into a proper system. If you want help building automation that won’t crumble at scale, see our marketing automation approach designed for founders and lean teams.
A quick note on the operator model (and why it matters here)
Most “free CRM template” posts stop at columns and charts. Useful, but the gaps show up when you try to connect pipeline to outbound, paid, and content. Anton Chisliuk · AI Marketing Ops works as an operator - not a traditional agency - which means one senior person builds the CRM, the playbook, and the automations end to end. Proof beats pitch: on Cleverence (B2B SaaS), the systemized stack went from 0 to 80K organic visits/month and 2K inbound leads/month with a clean CRM at the core.
That matters because your spreadsheet shouldn’t live on an island. The same person who defines your stages should shape your lead capture, scoring, and follow-up logic, so migration later is painless. If you want the backstory and model details, skim the about page - it explains the operator approach without the agency gloss.
Whether you DIY this template or ask for help, keep the goal tight: ship a usable system in a day, not a fragile prototype you’ll be afraid to touch.
When to graduate to a real CRM (HubSpot, etc.)
Spreadsheets bend; they also break. Move when reality demands permissions, audit trails, and automation you can’t fake. Triggers for graduating: 3+ sellers touching the same accounts, 150+ open deals, >20 activities/day per rep, or you need native email/calendar sync for reliable activity logs. Another sign: leadership needs cohort views and SLA enforcement that a sheet can’t police.
Graduating isn’t a sunk cost if you set this template up right. You already have clean fields, standard stages, and IDs to map. Your owners, sources, and loss reasons are normalized in Settings. You can bulk import to a real CRM with minimal translation and keep the team’s muscle memory intact.
If you prefer someone to own the setup, data migration, and sales process mapping - without an agency manager middle layer - this is exactly the workstream inside our CRM implementation service. The objective is simple: day-one usability and adoption, not a museum of custom fields.
Migrate this template to HubSpot (or your CRM) in under 60 minutes
Preparation: Lock your dropdown values in Settings; make sure each Deal links to a valid Company/Contact where possible. Close or delete junk deals. Fill missing Stage Entered Dates (use Created Date as fallback). Export each sheet as CSV: Companies, Contacts, Deals, Activities.
Import order: 1) Companies, 2) Contacts (with Company association via domain or Company Name), 3) Deals (with Company association), 4) Activities (associate via Deal ID where supported, otherwise by Contact/Company). In the new CRM, recreate your Stages and set default Probabilities to match Settings so your weighted views align.
Post-import checks: Spot check 10 random records across each object. Validate stage counts, won totals, and owner assignments. Rebuild key saved views (My Open Deals, This Month Close, Stalled 14+ Days). Only then turn on automation (owner assignment, task creation, and notifications).
Common mistakes that wreck spreadsheet CRMs
Too many columns. If sellers don’t fill it, it didn’t happen. Keep the input set small and use formulas for derived metrics. Anything not used for routing, forecasting, or coaching is likely bloat.
Free text everywhere. Without validation lists, you’ll end up with five versions of the same stage and six variants of a source. Use the Settings sheet and lock down inputs. In shared files, protect the header row and Settings ranges.
No activity tracking. “We’ll remember” is not a system. If you won’t log emails, at least log meetings and calls with an outcome. Tie Activities to Deals so Last Activity and Overdue Next Step flags tell the truth.
How to run pipeline reviews with this template
Weekly cadence: Filter Deals by Owner = rep, Status = Open. Sort by Close Date ascending. For each deal: Is there a clear Next Step and Due Date? Is Last Activity within 7 days? Has Days in Stage exceeded your SLA? If two of three are red, push for either a step forward or a close out.
Stage-by-stage inspection: Go to the Pipeline by Stage chart. Identify bloated stages (e.g., Proposal). Drill into those deals and check Loss Reasons and Next Steps. Often, your biggest “fix” is clarifying exit criteria - what must be true to move a deal forward.
Forecast hygiene: Look at the Close Bucket pivot. Pull any deal in “This Month” with Probability below 50% unless there’s a real date and external driver. Weighted pipeline is a guide, not a wish list. Commit only what has next steps that buyers agreed to.
Connect to outbound so pipeline isn’t wishful thinking
Most pipelines bloat because you’re logging interest, not intent. Tie this sheet to your outreach so only qualified responses graduate to Deals. If you’re running cold email or LinkedIn, push “Positive Reply” and “Meeting Held” into Activities, then create a Deal only when you hit your Qualification checklist.
For teams standing up outbound from scratch, set Owner from the start (SDR → AE handoff), keep Source = Outbound, and stamp Stage Entered Date when the stage changes. This gives you a real outbound funnel from touch → connect → meeting → qualified → win without inflating your forecast.
If you want an outbound system that fills this sheet with qualified conversations (not just opens and vanity replies), see how we build them inside our email outbound service - infrastructure for volume plus message testing you can actually attribute to revenue.
Security and access hygiene for shared spreadsheets
Spreadsheets aren’t permissioned CRMs, so set boundaries. In Sheets, restrict sharing to specific emails and remove link sharing. Use Protected ranges on header rows and Settings. In Excel, store on OneDrive/SharePoint with edit permissions limited to sellers and RevOps.
Avoid storing sensitive PII or payment data. Keep it to business contact info and deal context. If you’re collecting consent, track Opt-in at the Contact level and don’t bulk-email without it. Backups matter: set a weekly versioned export so one bad paste doesn’t nuke your quarter.
Finally, set a change log habit. At minimum, add a “Last Edited By” and “Last Edited At” field you update during pipeline reviews. It’s manual, but it surfaces ownership and keeps everyone a little sharper.
Conclusion
A spreadsheet CRM is a bridge: fast to ship, easy to adopt, and good enough to run disciplined pipeline reviews. Use the model here - Deals, Activities, Contacts, Companies, Settings - plus a handful of formulas to turn a static grid into a working system. Keep inputs tight, enforce dropdowns, and coach to the fields that predict wins: next steps, activity recency, and stage exit criteria.
When this starts to creak - multiple reps, rising activity volume, or automation needs - don’t cling to the sheet. Migrate the exact fields and stages into a proper CRM and keep your team’s habits intact. If you want an outside operator to audit your pipeline and give you a step-by-step plan (tools optional), book a free Growth Audit - clear next steps, not a PDF deck.
Written by Anton Chisliuk - Leads, sales, content, and systems - one senior operator.
FAQs
- Can I copy this template directly into Google Sheets?
Yes. Create the five tabs (Deals, Activities, Contacts, Companies, Settings), paste the column sets above, define named ranges on Settings, and apply data validation. Then add the formulas for Weighted Amount, Days in Stage, and Last Activity. Save filter views per rep.
- What’s the difference between Excel and Google Sheets here?
Structure is identical. Sheets has handy ARRAYFORMULA options and easy sharing; Excel has stronger pivot charts and Slicers. Both support MAXIFS and modern functions in current versions. Pick the one your team opens fastest.
- How do I prevent duplicates in Companies and Contacts?
Use Website (Companies) and Email (Contacts) as unique keys. In Sheets, add conditional formatting duplicates on those columns. In Excel, use a Data Validation custom rule or a helper column =COUNTIF(range,cell)=1 and filter for violations weekly.
- How should I set stage probabilities?
Start conservative: Qualified 20–30%, Discovery 30–40%, Proposal 50–60%, Negotiation 70–80%. Then calibrate monthly using actual win rates by stage entry. If Proposal at 60% consistently over-forecasts, drop it to 45% and watch forecast accuracy improve immediately.
- Can I track subscriptions (MRR/ARR) with this template?
Yes. Store Amount as MRR. Add ARR = Amount*12 either on Deals or the Dashboard. For renewals, use a separate pipeline or a Status like “Renewal” with a Renewal Date column so you can build a 90-day renewal forecast.
- What’s the fastest way to add activities without burning time?
Log only sales-critical interactions: meetings, connected calls, meaningful replies. Create a short list of Outcomes and default Notes to quick codes (e.g., “OB-VM” for outbound voicemail). Consistency beats detail.
- When should I stop using a spreadsheet CRM?
When you exceed 150 open deals, add the third seller, need email/calendar sync for reliable activity logs, or want automation beyond reminders. At that point, a real CRM will save time and prevent misses.
- How do I link Activities to Deals cleanly?
Give every Deal an ID (e.g., D-202409-0001). In Activities, make Associated Deal ID a dropdown pulling that list. Then Last Activity Date on Deals can use MAXIFS against Activities, keeping health signals accurate.
- Can I connect this to outbound email tools?
Yes. Use mail merge tools for small runs or export CSVs to your sender. Push meaningful responses back into Activities manually or via a light automation layer (Make/n8n). Only create Deals when the reply meets your qualify criteria.
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.