Starter · Level 1 of 3
You do not need a CRM to start tracking requests, leads, or feedback in one place. A form connected to a spreadsheet through a no-code automation gets you most of the value of a CRM with none of the setup overhead: one intake point, one source of truth, and a paper trail you can search. This guide uses Google Forms as the intake point, Zapier as the connector, and Google Sheets as the spreadsheet, and walks through the exact setup, the duplicate and validation traps that break simple intake systems, and the signals that tell you it is time to graduate to a real CRM. The whole build takes under an hour, most of it spent testing edge cases rather than wiring the automation itself. None of the tools below require a developer or a paid plan to get started, and every step is something you can undo or rebuild in a few minutes if you get a setting wrong the first time.
Why skip a CRM for simple intake tracking?
A CRM earns its complexity when you have a sales team working a pipeline, multiple people touching the same lead, or automated follow-up sequences tied to deal stages. Simple intake does not need any of that. If you are collecting freelance inquiries, event RSVPs, product feedback, or early customer leads for a side project, what you actually need is one place where every submission lands automatically, in a format you can sort, filter, and search.
A spreadsheet does that already. The gap is getting data into it without copying and pasting from your inbox every morning. That is the entire job of this automation: catch the submission, drop it into a row, and get out of the way. No pipeline stages, no lead scoring, no monthly subscription for a tool you would be using at ten percent of its capacity.
Which form tool should you use?
Google Forms is the default choice for this build. It is free with no submission cap, connects natively to Google Sheets for a basic version of this automation, and most people you are asking to fill it out already have a Google account or do not need one at all. The interface is plain, which is a feature here: intake forms exist to collect data cleanly, not to impress anyone.
Typeform and similar tools trade that plainness for a more polished, conversational form experience, which is useful if the form itself is customer-facing and doubles as a brand touchpoint. They add paid tiers once you need custom logic or higher response volume, so check current pricing on the vendor’s site before committing if that matters to you. For internal intake, lead capture, or anything where function matters more than form design, Google Forms is the simpler and cheaper starting point, and it is what the rest of this guide uses.
How do you connect the form to a spreadsheet, step by step?
Google Forms already writes responses to a linked spreadsheet automatically, through the green Sheets icon on the Responses tab. That native link is fine for basic collection, but it will not filter out duplicates, validate fields, or route certain submissions differently. For that you need an automation layer in between. Here is the exact build in Zapier.
- Open Zapier and click “Create Zap.”
- Set the trigger app to Google Forms and the trigger event to “New Response in Spreadsheet.” Zapier reads Forms responses through the connected sheet, so confirm the form’s Responses tab already points to a spreadsheet before you start.
- Connect your Google account and select the spreadsheet Google Forms is writing to.
- Test the trigger. Zapier pulls in your most recent form response so you can see the exact field names you will map in the next step.
- Set the action app to Google Sheets and the action event to “Create Spreadsheet Row.” Use a second, clean sheet for this step, and do not write the automation’s output back into the same sheet Forms is already populating.
- Map each form field to a column in the new sheet. A simple intake sheet needs five columns at minimum, shown below.
- Add a Status column with a static value of “New” on every row, rather than mapping it to a form field. This is what lets you filter the sheet down to unprocessed intake later without scanning every timestamp.
- Turn the Zap on, then submit a real test entry through the live form, not the Zapier test button, to confirm the row appears with everything mapped correctly.
Column A: Timestamp -> {{Trigger: Timestamp}}
Column B: Name -> {{Trigger: Name}}
Column C: Email -> {{Trigger: Email}}
Column D: Request -> {{Trigger: Message}}
Column E: Status -> "New" (static value, not mapped)
That is the whole automation. Everything after this point is what keeps it from quietly breaking once real submissions start arriving.
Zapier’s free-forever plan currently includes 100 tasks a month along with native Forms and Tables, plenty for a simple intake automation running at low volume. Check Zapier’s own pricing page before you commit, since task limits and plan pricing change over time.
How do you catch duplicates and bad data before they pile up?
Two problems show up almost immediately once real people start submitting the form: duplicate entries from people who submit twice, and incomplete or malformed data that slips through because a field was not required.
Handle validation at the form first. In Google Forms, mark every field you actually need as required, and use response validation on the ones that need a specific shape. Email fields can require a valid email pattern, and short-answer fields can require a minimum character count so someone cannot submit a single letter to satisfy a required field. This stops most bad data before it ever reaches the spreadsheet.
Google Forms has one native option worth trying first: under Settings, then Responses, turn on “Limit to 1 response.” This requires the respondent to sign in with a Google account, and Forms then blocks a second submission from that same account automatically, before it ever reaches the sheet. It is the cleanest fix available, and the trade-off is real: anyone unwilling to sign in cannot submit at all, which rules it out for a public-facing form aimed at strangers. For an internal team form or anything where you already know your respondents, turn it on and skip the rest of this section.
Duplicates are harder to stop at the source, since nothing prevents the same person from submitting the form twice. Handle it in Zapier instead. Add a “Find Row” lookup step in Google Sheets before your Create Row action, searching for the submitted email in the existing sheet. Follow it with a Filter step: if the lookup finds a match, route that submission to a separate “Possible Duplicate” sheet instead of the main one, so you review it manually rather than losing it or double-counting it.
A lighter option, if you want to skip the extra Zap steps, is conditional formatting on the spreadsheet itself that highlights any row where the email column matches another row. It will not stop the duplicate from being created, but it makes duplicates visible at a glance when you are triaging the sheet.
What breaks, and how do you find out?
Three failure modes account for most silent breakage in a setup like this, and all three fail quietly, which is what makes them worth knowing in advance.
Zapier’s connection to your Google account can be revoked by Google’s own periodic security checks, which stops the Zap without any obvious warning on your end. Turn on Zapier’s built-in “notify me by email” option in the Zap’s settings so a failed run reaches your inbox instead of going unnoticed for a week.
Reordering or renaming columns in the destination sheet after the Zap is built does not break anything by itself, but it can silently misalign the mapping, since the action step maps to column position at setup time rather than to header text. Add a column, remove one, or reorder the sheet, and go back into the Zap’s action step to remap it before you trust the next row that lands.
Adding a new question to the Google Form does not automatically appear in the Zap. New fields need to be added to the action step’s mapping by hand, or every new submission will drop that field silently, with no error and no obvious gap until you notice the column is empty. Check Zapier’s Zap History dashboard every so often, especially in the first week, so a quiet failure does not turn into a month of missing intake.
When is a full CRM the better move?
This setup holds up well until a few specific things change. Watch for:
- More than one person needs to work the same intake list and update status without overwriting each other’s edits.
- You need automated follow-up sequences tied to how long a submission has sat untouched.
- You are tracking a multi-stage process, such as new, contacted, qualified, and closed, rather than a single intake-and-respond flow.
- Submission volume is high enough that a Filter-based duplicate check in Zapier starts missing near-duplicates, such as a typo in an email address or the same person submitting from a work and a personal address.
None of those are urgent problems to solve in advance. Build the spreadsheet version first, actually use it, and let the friction you hit tell you which CRM features you need. That is a far better shopping list than picking a CRM cold and configuring it around a checklist of intake and status logic you have not tested yet.
What to build next
Once this pipeline is running and the sheet is your actual system of record instead of an idea you meant to set up, the same trigger-action pattern extends to almost any repetitive intake task. 15 Workflow Automations That Save Solopreneurs 5 Hours a Week is a good next stop if you want more small builds like this one. And if Zapier’s task-based pricing starts to pinch as your submission volume grows, Zapier vs Make vs n8n in 2026: The Honest Comparison walks through when Make or a self-hosted n8n instance is the better fit for the same kind of automation.