Make + Google Sheets as a free small-business database: the modules, the limits and the pitfalls
How to run leads, invoices and tasks on a Google Sheet with Make: which modules to use (Watch New Rows, Add a Row, Search Rows, Update a Row), what each costs in credits, the limits that bite, and the mistakes that break a sheet quietly — with free blueprints.
Most small businesses already run on a spreadsheet. The leads are in one tab, the invoices in another, and someone updates both by hand. Put Make next to that sheet and it becomes a small database with automations around it: rows arrive on their own, reminders go out on schedule, and nobody copies anything. It costs nothing to start, and everyone on the team can open it.
It also has limits, and most of them are not obvious until something silently goes wrong. This guide covers the handful of Google Sheets modules that do the work in Make, what each one costs, the limits that matter at small-business scale, and the mistakes we see most often. Limits and quotas come from Make's and Google's documentation, checked on 28 September 2026 and linked at the bottom.
- 1operation per check for Watch New Rows — whether or not it finds a new rowMake Help Center
- 15 minfastest schedule on Make's Free plan (1 minute on Core)make.com/pricing
- 20Mcells per spreadsheet created in or converted to Google SheetsGoogle Drive Help
- 60/minSheets API read requests, and 60 write requests, per user per project; above that, error 429Google Sheets API
The modules that do the work
| Module | What it does | Credits | Watch out for |
|---|---|---|---|
| Watch New Rows | Trigger: returns rows added since the last check | 1 per check, even when nothing is new | A blank row stops it from processing the rows below |
| Add a Row | Appends a row at the bottom of the table | 1 per row written | Mapping by position breaks when columns move |
| Search Rows | Returns rows matching a filter, with sort and limit | 1 per search; every module after it runs once per row found | The multiplication on the next modules |
| Search Rows (advanced) | Searches with Google's query language | 1 per search | Returns no row numbers, so you cannot update what it finds |
| Update a Row | Changes a row by its row number | 1 per row updated | Needs the row number from Search Rows |
| Watch Changes | Instant trigger on a cell edit, via an add-on or script | 1 per change received | Only edits made by a person in Sheets; not new rows, scripts or API writes |
Watch New Rows: the trigger to avoid when you can
Watch New Rows is the obvious way to start a scenario from a sheet, and often the wrong one. It is a scheduled check: Make asks the sheet for new rows, and each check is one operation whether it finds ten rows or none. On the Free plan the fastest schedule is every 15 minutes — 96 checks a day, about 2,880 in a 30-day month, almost three times the Free plan's 1,000 credits. And if the sheet contains a blank row, Make does not process the rows after it.
The better pattern is to never watch the sheet for new data. Let the thing that creates the row — a form, a payment, a booking — call a Make webhook, and have that scenario write the row and do the rest. The sheet becomes the log, not the trigger.
Add a Row: map by header, not by position
Add a Row has an option to use the column headers as the column IDs. With it on, mappings keep working when someone adds, removes or reorders columns, as long as the headers are not renamed. With it off, Make maps by position, and inserting one column shifts every value one place to the right. Turn it on, and treat the header row as part of the system.
Search Rows then Update a Row: the read-modify-write pair
Almost every useful sheet automation reads before it writes: find the invoice by number, then mark it paid; find the phone number, then decide whether the lead is new. Search Rows returns the matching rows including their row numbers, and Update a Row uses that number to change the right one. Search Rows (advanced) is more powerful but returns no row numbers, so it cannot feed an update.
Three patterns, with blueprints
1. Webhook in, sheet as the log
A form or another app sends data to a Make webhook; Make appends a row and sends an alert. No polling, credits only when something happens.
Lead comes in → logged → alert. No hands.
A form on the client site sends a lead; it is logged and an alert reaches Telegram in seconds. The first automation every consultant sets up.
Blueprint, steps and caveats → · Watch the tutorial on YouTube
Tally form → lead log → Telegram alert. The free version of the lead alert
A free Tally form with a hidden source field posts straight to Make; the lead is logged in Google Sheets and Telegram pings sales in seconds. No website form plugin, no CRM, no paid tool anywhere in the chain.
2. One scheduled search a day
For anything that depends on dates — overdue invoices, stale leads, today's tasks — a scenario runs once a day, searches the sheet with a filter, and acts on what it finds. One search a day is about 30 searches a month, a fraction of what a 15-minute watch costs. Remember the multiplication: if the search finds six overdue invoices, the email and update modules each run six times.
Invoice past due → an automatic, polite reminder
Once a day it finds open invoices past their date and sends a reminder. The client no longer has to remember to chase.
A lead untouched for 7 days → an alert to the salesperson, not the client
Every morning, each open lead not updated for a week surfaces in one list: name, source, owner, days quiet. The lead gets nothing — the owner does.
Every morning: what is due today → one message
At seven in the morning one Telegram message arrives with every task due today, by client. One screen to open the day, instead of five.
Every Sunday: leads by source → one message with the change from last week
Website, Facebook, referral: how many leads each source brought this week, beside last week's number. One Telegram message that says where the money is working.
3. Search, then decide, then write
When an event must match an existing row — a payment to its invoice, a returning lead to the first contact — the scenario searches first and branches on the result.
Returning lead → recognised → "second contact", not "new lead"
Before a lead is logged, the automation checks whether the phone is already in the log. If it is — the alert says "came back", and sales knows this is a second conversation.
Payment received → invoice marked "paid" → a thank-you to the client
The payment provider sends a webhook on payment; the invoice in the sheet is marked "paid" with the date, and the client gets a short confirmation. Payment reminders stop by themselves.
The limits that matter at small-business scale
- Credits. Every module run is at least one credit. Our blueprint pages list the operations per run, so you can multiply by your monthly volume before importing. Remember that searches multiply the modules after them.
- Active scenarios. Make's Free plan allows two active scenarios. A lead alert plus an invoice reminder is the whole allowance; a third needs Core.
- Scheduling. Free scenarios run at most every 15 minutes; Core goes down to every minute.
- Run time. A scenario on the Free plan can run for at most 5 minutes; on Core, 40. A search that returns thousands of rows and loops over them can hit it.
- Execution history. Free keeps 7 days of logs, Core 30. If a client asks what happened to last month's lead, the answer needs to be in the sheet, not in Make's history.
- Sheet size. Google Sheets allows up to 20 million cells per spreadsheet. A lead log will not hit that, but a sheet that also holds formulas and imports gets slow long before it does.
- API quota. Google allows 60 read and 60 write requests a minute per user per project; above that the request fails with error 429. A scenario that updates hundreds of rows one by one can hit it — use the Bulk Add Rows or Bulk Update Rows modules for batches.
Six mistakes that break a sheet quietly
- A blank row in the middle of the data. Make's documentation says Watch New Rows does not process the rows after it. Keep the data contiguous and do not leave spacer rows.
- Phone numbers losing their leading zero. With the "User entered" value input option, Sheets parses text as if typed — 0501234567 becomes a number. Format the column as plain text or send the value as "Raw".
- Renaming a tab or a header. The modules point at a sheet by name, and header-based mapping follows the header text. Rename either and check every module that uses it.
- Deleting rows from the top down. Row numbers shift after each delete, so the next delete hits the wrong row. Make's own tip: search, sort by row number descending, then delete.
- Dates that depend on the locale. Formatted values follow the spreadsheet's locale, not yours. For date comparisons, ask for unformatted values or serial numbers and format them in Make.
- Two sources of truth. If people also edit the rows the automation writes, agree which columns belong to the automation and protect them. Otherwise a hand edit breaks the next search without an error.
Estimate your Make credits (free calculator)Pick the automations you need and your monthly volume; see the credits and the Make plan that fits
When to move off Google Sheets
A sheet is a good database for a small team up to a few thousand rows per tab. Signs it is time to move: searches get slow, you are building workarounds for the API quota, several scenarios write to the same rows, or you need permissions per record. Make's Data Store or a real database is the next step; the automations stay the same shape, only the modules change.
Every blueprint on this page runs on Make; the free plan is enough to import one and test it on your own sheet: Sign up (one month of Core free) →affiliate linkAffiliate link. If you sign up through it we earn a commission from Make; your price is the same, and the link gives you one month of Core free.
Is Google Sheets a good free database for a small business?
For a small team, yes: it is free, everyone can open it, and Make has modules for adding, searching and updating rows. Its limits are speed and structure, not size — a spreadsheet can hold up to 20 million cells, but searches slow down and hand edits break automations long before that.
How many Make credits does a Google Sheets automation use?
Each module run uses a credit. A three-module lead alert uses three per lead. A daily scheduled search uses one per search, plus one per module for each row it finds. A Watch New Rows trigger uses one on every check, even when there is nothing new.
Why is my Watch New Rows trigger missing rows?
The most common reason is a blank row: Make does not process rows after one. Also check the Limit setting, which caps how many rows are taken per run, and that the rows were added at the bottom of the table.
Can Make react instantly when a Google Sheet changes?
Only to edits a person makes in the Sheets app, through the Watch Changes module and a Make add-on or script in the sheet. Rows added by scripts or the API do not trigger it. For new data, send it to a Make webhook and let that scenario write the row.
Why do phone numbers lose their leading zero?
With the "User entered" input option, Google Sheets parses the value as if it were typed, and turns 0501234567 into a number. Format the column as plain text, or choose "Raw" as the value input option in the module.
- Make Apps Documentation — Google Sheets modules (Watch New Rows, Add a Row, Search Rows, Update a Row, Watch Changes)
- Make Apps Documentation — Google Sheets tips and examples (deleting multiple rows)
- Make Help Center — Operations (one operation per trigger check; bundles multiply modules)
- Make Help Center — Credits
- Make — Pricing (Free and Core: credits, active scenarios, interval, run time, log storage)
- Google Drive Help — Files you can store in Google Drive (Sheets: up to 20 million cells)
- Google for Developers — Google Sheets API usage limits
Related guides
The problem, the steps and a free blueprint — one post a day in the channel. No spam, no sign-up.