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.

Deterministic Code
NetlifyGoogle SheetsGmailOperationsMarketingData SyncNotifications & Alerts
PromptCreate

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?
No. Netlify filters submissions before they reach this workflow, so only the ones it has verified get written to your sheet and emailed to your team.
What happens if the same submission comes through twice?
Nothing gets duplicated. Before adding a row, the workflow checks whether that submission is already in your sheet and skips it if it is, so a retry never creates a second row.
Can I track more than two forms?
Yes. The form filter is a simple list you control, so you can add every form on your site, swap in different ones, or narrow it down to a single form.
Does this work if my forms collect different fields?
Yes. You map whichever fields you collect into the columns you want. If a submission is missing a field, that cell is left blank instead of stopping the run.
Do I need to be technical to set this up?
No. You connect your Netlify, Google Sheets, and Gmail accounts, choose your spreadsheet and the inbox to notify, and name the forms you care about.

Related templates

Trace phishing emails to the sending IP and report abuse

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.

AbuseIPDB
Gmail
Slack
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Turn procurement portal tenders into CRM deals each morning

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.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Draft polite follow-ups for emails that never got a reply

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.

Aurinko
Google Sheets
Slack Bot
Agentic Task
Weekly flight risk brief for trips your team already booked

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.

AeroDataBox
Airtable
Gmail
Agentic Task
Warn customers before their saved card expires and billing fails

Each month, spot the saved cards about to expire, email the customers still on recurring billing, and rank the revenue at risk in Slack.

Authorize.Net
Gmail
Slack Bot
Agentic Task

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.