Automation Solutions

Using Google Sheets as a Database? Here's Why It Breaks

Aaron · · 8 min read

Every business I’ve worked with has at least one Google Sheet that’s quietly become the most important system in the company. It started as a quick tracker — a list of leads, a job schedule, an inventory count. Someone added a few formulas. Then some conditional formatting. Then a VLOOKUP to another sheet. Then an IMPORTRANGE to another spreadsheet entirely.

Now it has 47 tabs, 15,000 rows, takes 30 seconds to load, and the person who built it left the company eight months ago. Sound familiar?

Google Sheets is not a database. It looks like one, it can act like one, and for a while it works like one. But the moment your business depends on it for real operational data, the cracks are already forming. Here’s exactly where it breaks, and what to do about it.

The 10 Million Cell Limit (And Why You’ll Hit It Before You Think)

Google Sheets has a hard cap of 10 million cells per spreadsheet. That sounds enormous until you consider how businesses actually use spreadsheets. A sheet with 50 columns and 5,000 rows uses 250,000 cells — per tab. Add 20 tabs (jobs, clients, invoices, inventory, quotes, line items, suppliers, contacts…) and you’re at 5 million cells. You’ve used half your allocation and your business isn’t even that large yet.

But the real limit isn’t cells — it’s performance. Long before you hit 10 million cells, Sheets becomes unusably slow. Most users report significant lag at around 50,000-100,000 cells of active data with formulas. Complex sheets with VLOOKUP, INDEX/MATCH, QUERY functions, and cross-sheet references start struggling at even lower thresholds.

Concurrent Editing Is a Myth

Google Sheets markets real-time collaboration as a headline feature. Multiple people can edit the same spreadsheet at the same time. In theory, this is wonderful. In practice, it’s where data goes to die.

Here’s what actually happens:

  • Two people edit the same row — one person changes the status to “Completed” while another updates the notes field. Depending on timing, one change can overwrite the other. There’s no merge conflict resolution. The last save wins.
  • Someone sorts the sheet while others are working — another user is looking at row 47, which was “Smith Electrical.” After the sort, row 47 is now “Anderson Plumbing.” They update the wrong record without realising it.
  • Filters cause confusion — one person applies a filter to see only their jobs. Another person, unfiltered, adds a new row. The filtered user doesn’t see it. Now two people are working on incomplete views of the same data, making decisions based on different information.
  • Copy/paste errors compound — someone selects a range, pastes over it, and accidentally overwrites formulas in adjacent cells. In a database, this is impossible because formulas don’t live in the data layer. In Sheets, data and logic are intermingled, and one bad paste can corrupt both.

API Limits Will Break Your Automations

If you’re connecting Google Sheets to other tools via Zapier, Make, or Apps Script, you’re subject to Google’s API rate limits. These are strict and non-negotiable:

  • 300 read requests per minute per project
  • 60 write requests per minute per project
  • Quota of 500 requests per 100 seconds per user

For a simple automation that adds a row when a form is submitted, these limits won’t matter. But for anything at scale — syncing hundreds of records from a CRM, bulk-updating inventory levels, or running a reporting dashboard that pulls from multiple sheets — you’ll hit these limits regularly.

When you hit a rate limit, your automation doesn’t slow down gracefully. It fails. And depending on which automation platform you’re using, that failure might be silent. Records stop syncing, but nobody notices until someone manually checks and finds a gap in the data.

No Real Relationships Between Data

This is the fundamental problem. A database lets you define relationships: a customer has many orders, an order has many line items, a line item references a product. These relationships are enforced — you can’t create an order for a customer that doesn’t exist.

In Google Sheets, “relationships” are VLOOKUPs. They’re fragile, slow, and have no integrity checks:

  • Delete a customer row and every VLOOKUP referencing that customer returns #N/A or, worse, returns the wrong customer’s data because the row numbers shifted
  • Duplicate a customer name and VLOOKUP returns whichever one it finds first — you won’t know you’re looking at the wrong record
  • Rename a category and every formula matching on the old name breaks silently
  • Move columns around and any VLOOKUP using column numbers (instead of INDEX/MATCH) breaks instantly

There’s no referential integrity, no foreign keys, no constraints. Your data model exists entirely in your head and in your formulas. If either fails, the data goes bad without anyone noticing.

Version History Isn’t a Backup Strategy

Google Sheets keeps version history, which gives people a false sense of security. But version history isn’t a backup — it’s a log of every keystroke, and restoring from it is painful:

  • You can’t restore a single cell or range — you restore the entire spreadsheet to a point in time, which overwrites every change made since then
  • You can’t see who changed what at a granular level — version history shows “someone changed this sheet at 3:47 PM” but not “cell D47 was changed from $5,200 to $520”
  • Accidental deletions of rows or tabs are often not noticed for days, by which point the version history is a jumble of changes and restoring means losing all the legitimate work done since
  • No audit trail — for businesses that need to know who approved what, changed a price, or updated a customer’s details, Sheets provides nothing usable

A proper database has transaction logs, field-level audit trails, role-based access controls, and automated backups with point-in-time recovery. Google Sheets has “undo.”

When Google Sheets Is Still Fine

Let’s be fair. Google Sheets is genuinely excellent for:

  • One-off analysis — pulling data, running some calculations, making a chart for a meeting. This is what spreadsheets were designed for.
  • Personal tracking — your own to-do list, budget tracker, reading log. If you’re the only user, the concurrency and integrity issues don’t apply.
  • Small team collaboration on simple data — under 5 people, under 1,000 rows, no formulas referencing other sheets. The collaboration features genuinely work at this scale.
  • Prototyping a process — figuring out what data you need to track and how it connects before investing in a proper system. Sheets is the fastest way to test an idea.

Google Sheets as Database

  • 10M cell limit, lag well before that
  • Concurrent edits cause data conflicts
  • API rate limits break automations
  • VLOOKUPs instead of real relationships
  • Version history, not real backups
  • No audit trail or access controls

Purpose-Built System

  • No practical storage limits
  • Concurrent access with conflict resolution
  • No rate limits on your own system
  • Enforced relationships and data integrity
  • Automated backups with point-in-time recovery
  • Full audit trail with field-level tracking

The Migration Path

If you’re reading this and recognising your own business, here’s how to think about moving forward.

First, identify which sheets are actually databases. If a spreadsheet has more than 10 columns, is updated daily, is used by more than 2 people, or has other systems pulling data from it — it’s functioning as a database, and it should be treated as one.

Second, document the relationships. Draw out which sheets reference which, what the VLOOKUPs connect, and what the formulas calculate. This is your data model, even if nobody’s ever written it down.

Third, prioritise by pain. Which sheets cause the most errors? Which ones are slowest? Which ones break most often? Start your migration with the most painful one. A single, well-built system replacing your worst spreadsheet will give your team immediate relief and build confidence for the next migration.

Fourth, keep some sheets. Not every spreadsheet needs to become a database. That quick analysis you did for last month’s board meeting? Leave it in Sheets. The annual budget model? Sheets is fine. The operational data your team relies on every day — customer records, job tracking, inventory, orders — that’s what needs to move.

The businesses that make this transition successfully are the ones that stop thinking of Sheets as “good enough for now” and start seeing it for what it is: a prototype of the system they actually need. Every column is a field specification. Every formula is a business rule. Every tab is a table in the database you haven’t built yet. The requirements are right there — you just need to build the real thing.

A

Aaron

Founder, Automation Solutions

Building custom software for businesses that have outgrown their spreadsheets and off-the-shelf tools.

Keep Reading

Ready to stop duct-taping your systems together?

We build custom software for growing businesses. Tell us what's slowing you down — we'll show you what's possible.