Filter spam from Netlify forms before it reaches your CRM

Every new form submission gets judged real or junk, sorted by intent, and only genuine sales leads land in HubSpot with an email brief waiting for your team.

Agentic Task
NetlifyHubSpotGmailSalesLead EnrichmentFeedback Triage
PromptCreate

Poll Netlify for the new_form_submission event on my marketing site. Each time a submission comes in, read every field that was filled out, including the sender's name, their email address, their company if it is present, and the full message body. You are the first filter on inbound form submissions, and your job is to make sure junk never reaches my CRM.

First, judge whether the submission is genuine or spam. Weigh three things together. One, the content of the message itself, and whether it reads like a real person describing a real need rather than a mass blast. Two, the sender's email domain, and whether it looks disposable, throwaway, or unrelated to any company they claim to represent. Three, whether the body is generic link bait, such as an SEO or backlink offer, a crypto or investment pitch, or boilerplate outreach with pasted URLs. Use your own judgement on the whole picture rather than matching a fixed keyword list.

If you judge a submission to be spam, discard it. Create no CRM record and send no email. Do not ask me to confirm.

For every submission you judge genuine, classify its intent as one of sales, support, careers, or partnership.

When the intent is sales, use the HubSpot Create Contact operation to open a record for that person. Fill in the email address, the first and last name, and the company from the submission. Set the lifecycle stage to lead. Write the original message text into the contact properties so that the rep who opens the record can see exactly what the person asked for in their own words, without having to go and find the form submission.

For every genuine submission, whatever the intent, use the Gmail Send a Message operation to email the owning team. The email should cover who submitted the form and what company they are from, what they are asking for, how urgent it looks based on the language they used, and a suggested first reply that the rep can edit and send. Make the suggested reply specific to what this person actually wrote, not a generic template, and keep it short enough that editing it is faster than starting from scratch. Put the intent classification in the subject line so the team can scan their inbox.

If a submission arrives without the complete set of fields, call the Netlify List Form Submissions operation to pull the full record for that form before you make your judgement.

What does this prompt do?

  • Watches your marketing site for new form submissions and reads every field the moment one arrives.
  • Judges each submission as genuine or spam by weighing the message itself, the sender's email domain, and whether the body is generic link bait.
  • Sorts genuine submissions into sales, support, careers, or partnership, and files sales enquiries in HubSpot as a new lead with the original message attached.
  • Emails your team a short brief on every genuine submission covering who got in touch, what they want, how urgent it looks, and a suggested first reply. Spam is dropped silently.

What do I need to use this?

  • A Netlify account with forms enabled on your marketing site
  • A HubSpot login that can create contacts
  • A Gmail account to send the team briefs from
  • The email address of the team that should receive those briefs

How can I customize it?

  • Tighten or loosen what counts as spam, for example always trusting submissions from company domains you already recognize.
  • Send each intent to a different inbox so sales, support, careers, and partnership briefs reach the right people.
  • Change which details get written onto the HubSpot record, or start filing partnership and support enquiries in the CRM too.

FAQs

Do I need a paid spam filtering service for this?
No. The judgement is made by actually reading the submission, so there is no separate spam scoring subscription to buy or tune. Netlify's own filtering already removes the obvious junk, and this adds a second layer that catches the plausible looking submissions that slip through.
What happens to a submission that gets judged wrong?
Anything judged genuine always emails your team, so a misread spam message costs you one email you can ignore. Anything judged spam is discarded with no CRM record and no email, so if you want to double check, the submissions are still sitting in your Netlify dashboard.
Will this work on a free HubSpot account?
Yes. Creating a contact, setting the lifecycle stage to lead, and saving the original message onto the record are all available on HubSpot's free tier.
Can I use a different CRM instead of HubSpot?
Yes. Salesforce and Pipedrive both work the same way for creating an inbound lead. Swap the CRM step and keep the rest of the workflow as it is.
Does every submission end up in the CRM?
No, and that is the point. Only genuine submissions with sales intent create a contact. Support, careers, and partnership enquiries still get an email brief so nothing is lost, but they do not clutter your pipeline.

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
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
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
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Provision customer entitlements in DynamoDB when a deal is won

When a HubSpot deal hits Closed Won, the customer's plan, seats and renewal dates land in your DynamoDB accounts table, with a Slack note showing what changed.

HubSpot
Amazon DynamoDB
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

Stop letting form spam clog your CRM.

Set this up once and only real enquiries reach your reps, each one with a summary and a draft reply already written.