Log every lead in a master spreadsheet
Every lead form submission becomes a row on the Leads tab, with name, work email, company and source already filled in.
New submission on your contact or lead form
Append a row to the Leads tab with name, work email, company and message
One-directional. A submission triggers the action — nothing is written back into your form.
Sales teams work a list, not an inbox. This flow appends each submission to one Leads tab the moment it arrives, so the row exists before anyone has read the notification and nobody is retyping details out of an email at the end of the day.
It suits a small marketing team that has outgrown forwarding enquiries by hand but has no CRM yet. The sheet is already shared, already filterable by source, and already open on someone's second monitor.
Setting it up
- 1
Mark Work Email and Company Name as required on your lead form and publish it — a row with neither in it is not worth anyone's follow-up.
- 2
In Google Sheets, create the file with a tab named Leads and type the header row first: Received, Name, Work Email, Company, Size, Source, Problem. Google Sheets treats that first row as the column names Zapier will offer you.
- 3
In Zapier, choose formformform as the trigger app with the New Submission event, connect your account, select the lead form and pull in a real test submission so every question appears in the mapping list.
- 4
Add the Google Sheets Create Spreadsheet Row action, connect the Google account that owns the file, and select that spreadsheet and the Leads tab by name rather than the first worksheet Zapier suggests.
- 5
Map Full Name, Work Email and Company Name into their columns, then drop "What problem are you trying to solve?" into Problem so the first call starts with something to talk about.
- 6
Map "How did you hear about us?" into Source, and fill Received from a Zapier Formatter Date/Time step formatted as YYYY-MM-DD HH:mm so the column sorts as a date rather than as text.
- 7
Format Source and Size as plain text, freeze the header row, and build your filter views afterwards so they survive rows appearing underneath them.
- 8
Run a test submission, confirm the row lands directly under the last filled row with every column populated, then switch the Zap on.
What maps where
Using the Lead Generation Form as the starting point. These are its real fields — swap in your own and the mapping works the same way.
| Form field | Google Sheets |
|---|---|
| Full Name | Name column on the Leads tab |
| Work Email | Work Email column, and the key you de-duplicate on |
| Company Name | Company column |
| Company Size | Size column, so sales can filter by segment |
| How did you hear about us? | Source column |
| What problem are you trying to solve? | Problem column |
Variations worth knowing
Once Source is its own column, a summary tab with =COUNTIF(Leads!F:F,"Referral") per channel, or a pivot table over the same column, gives you a live count without exporting anything. Point the formula at the whole column rather than a range that stops at today's last row, or tomorrow's leads fall outside it.
"What are you most interested in? (check all that apply)" arrives as one comma-separated string. Map it into a single Interests column and search it with =COUNTIF(Leads!H:H,"*pricing*"). Splitting it across three columns in the Zap looks tidier until someone ticks a different number of boxes and the values shift.
If something isn't arriving
The action needs a named worksheet, and Zapier caches the tab list from when you connected the file. Re-select the spreadsheet, refresh the worksheet dropdown and pick Leads. Renaming that tab after the Zap is live has the same effect, so re-pick and re-test after any rename.
Create Spreadsheet Row writes underneath the last row Google Sheets counts as used, and a stray space or a border applied far down the sheet counts. Select everything below your data, use Edit then Delete rows, and re-test until the row lands where you expect.
Frequently asked questions
What happens if the same person submits the form twice?
You get two rows. The action always appends and never looks for an existing entry. Either add a Zapier Lookup Spreadsheet Row step before it, or keep a summary tab using UNIQUE on the Work Email column and clear the duplicates by hand once a week.
If I add a question to the form, does the sheet get a new column?
No. Add the header to the Leads tab yourself, then open the Zap, refresh the worksheet in the action step so the new column is offered, and map the question to it. Rows written before that change keep an empty cell in the new column.
How long after someone submits does the row appear?
The New Submission trigger is real time rather than a polling check, so the Zap starts as soon as the form is submitted. Rows normally show up within seconds. Any delay you notice is Zapier running the action, not the form waiting to report the submission.
Related automations
- Build an RSVP list with a live headcount
Every registration adds a row to the RSVPs worksheet, and a SUM keeps the headcount current for catering.
- Capture feedback for pivot table analysis
Every survey response lands on the Responses tab with score, category and comment, ready for a pivot table.
- Collect job applications in a hiring tracker
Each application becomes a row on the Candidates tab, with the scoring columns left empty for reviewers to fill in.
- Record orders in a packing list spreadsheet
Each order lands on the Orders tab with product, quantity, variant and customer, ready to pick and pack from.
- Track support requests in a Tickets tab
Each support request lands on the Tickets tab with issue type, priority and reporter email, ready to sort and mark resolved.
- Add every inbound enquiry to your Notion leads database
Every business enquiry lands in your Notion Leads database as a page tagged New, with the company and inquiry type already filled in.
Build the form first
The automation needs somewhere to fire from. Publish a form, connect it once, and every submission from then on runs this flow.
Start free