Log Netlify form submissions to Sheets and email the team
Every contact and demo request from your Netlify site lands as a row in your tracking spreadsheet and as an email to your shared team inbox.
Watch my Netlify site for new form submissions and log each one. Use a poll trigger on Netlify with the new_form_submission event so the workflow runs whenever a visitor submits a form. Netlify returns verified submissions only by default, so anything it has already flagged as spam never reaches this workflow. If the trigger payload does not carry every field I need, fetch the full record with Netlify List Form Submissions for the form the submission belongs to.
Only process submissions from two forms: the contact form and the demo request form. Check the form name on each incoming submission and end the run for anything else, so every other form on the site is ignored. Keep the list of accepted form names in one place at the top of the workflow so it is easy to edit later.
Before writing anything, make the append safe against replays. Read the existing submission ID column from the tracking sheet with Google Sheets Get Values and compare it against the ID of the incoming submission. If that ID is already present, end the run without writing a row and without sending an email. This is what keeps a retried or redelivered submission from producing a duplicate row.
For a submission that is genuinely new, append exactly one row to my Google Sheets tracking sheet using Append Values, with these columns in order: submission timestamp, site name, form name, submitter name, submitter email, the full message body, and the Netlify submission ID used for deduplication. Use the submission's own created timestamp from Netlify rather than the time the workflow happened to run. If a field is missing on a submission, write an empty cell instead of failing the run.
Once the row is written, send a plain notification email through Gmail with Send a Message to a shared team inbox. Put the form name and the submitter name in the subject line. In the body, include the same fields as plain text: submission timestamp, site name, form name, submitter name, submitter email, and the full message body. Send the email only after the sheet append has succeeded, so the notification always corresponds to a logged row.
Every step in this workflow is a fixed node. Do not summarize, classify, score, rewrite, or draft anything anywhere in it. The field mapping, the destination spreadsheet, and the notification inbox are all constant, and the only branching is the form name filter and the duplicate check.
What does this prompt do?
- Watches your Netlify site and picks up every new form submission as it arrives.
- Adds a row to your tracking spreadsheet with the submission time, site, form, submitter name, email, and the full message.
- Emails your shared team inbox with those same details so nobody has to open the sheet to see what came in.
- Handles only your contact form and demo request form, and skips repeats so the same submission never lands twice.
What do I need to use this?
- A Netlify account with forms enabled on the site you want to track.
- A Google account and a spreadsheet to use as your tracking sheet.
- A Gmail account that can send to your shared team inbox.
- The names of the forms you want to track, exactly as they appear in Netlify.
How can I customize it?
- Change which forms are tracked. The contact form and demo request form are the defaults, but you can track any forms on your site or narrow it to one.
- Change where the notification goes. Point it at a shared inbox, a personal address, or several recipients at once.
- Change the columns. Add, remove, or reorder the spreadsheet fields to match how your team already tracks inbound requests.
FAQs
Will this log spam submissions?
What happens if the same submission comes through twice?
Can I track more than two forms?
Does this work if my forms collect different fields?
Do I need to be technical to set this up?
Related templates
Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
Every Thursday, rank your team's upcoming flights by how likely they are to run late, and email the fixes while changes are still cheap.
Each month, spot the saved cards about to expire, email the customers still on recurring billing, and rank the revenue at risk in Slack.
Stop checking your Netlify dashboard for new leads.
Every contact and demo request lands in your spreadsheet and your team inbox the moment someone hits submit.