Validate every new HubSpot contact email before outreach

Every new contact's email is checked the moment it lands, tagged with a clear verdict in your CRM, and flagged in Slack when it will bounce.

Agentic Task
MailgunHubSpotSlack BotSalesOperationsLead EnrichmentNotifications & Alerts
PromptCreate

Whenever a new contact is created in HubSpot, check their email address with Mailgun before anyone wastes outreach on it. Use a webhook trigger fed by HubSpot's contact creation event, so this runs the moment the record appears rather than on a schedule.

Take the email address from the incoming contact and run Mailgun's Validate Single Address operation on it. That returns a result of deliverable, undeliverable, do_not_send, catch_all, or unknown, plus a risk level of low, medium, high, or unknown, boolean flags called is_disposable_address and is_role_address, an array of reasons, and a did_you_mean value holding the closest suggestion when the domain looks like a typo.

Interpret those signals into one short verdict a salesperson can act on. Deliverable with low risk is a pass. Undeliverable means the address will bounce. A true is_disposable_address flag means a throwaway inbox. A true is_role_address flag means a generic inbox such as info@, sales@, or support@ that reaches a shared mailbox rather than a named buyer. A catch_all result, or do_not_send, or medium and high risk, all mean risky: the mail server accepts anything, so nobody can confirm the person actually exists. Use judgement when the signals conflict, for example a role address that is also undeliverable should be reported as undeliverable because that is the more actionable problem. Alongside the verdict, write one short human-readable reason drawn from the reason array, and mention the did_you_mean suggestion when Mailgun offers one, since a typo is usually fixable on the spot.

Use HubSpot's Search Contacts operation to locate the contact record by email address, then use Update Contact to write the verdict into one custom contact property and the short reason into another. Keep the verdict values to a small consistent set such as Deliverable, Undeliverable, Disposable, Role-based, Risky, and Unknown, so reps can filter lists and build segments on that property rather than reading free text. Always write the property, including for deliverable addresses, so that every contact carries a known state instead of a blank.

When the verdict is undeliverable or disposable, post a short note to the #sales-ops Slack channel using Slack Bot's Send a Message operation. Name the contact, give the email address, and say in one line why it failed, including the suggested spelling if Mailgun provided one. Keep it to a few lines so someone can glance at it and go find a better address while the lead is still warm.

Deliverable addresses pass silently with no Slack message at all. Role-based and risky catch-all addresses are recorded on the contact record but do not warrant a ping either, since they are a segmentation concern rather than something to chase. Only genuinely dead or throwaway addresses should interrupt anyone.

What does this prompt do?

  • Checks the email address on every new contact the moment the record is created, before a rep or a campaign touches it
  • Sorts each address into a plain verdict: good to send, will bounce, throwaway address, generic inbox like info@ or sales@, or a risky domain that accepts anything
  • Writes the verdict and a short reason onto the contact record, so reps can filter lists and build segments around email quality
  • Posts a short note to your sales ops channel only when an address will bounce or is a throwaway, so someone can chase a better one while the lead is still warm

What do I need to use this?

  • A Mailgun account with email validation enabled
  • A HubSpot login with permission to edit contact records
  • Two custom contact properties in HubSpot, one for the verdict and one for the reason. You can name them whatever you like and point the workflow at them
  • A Slack workspace and a channel for the alerts, such as #sales-ops

How can I customize it?

  • Change which verdicts are worth an alert. Some teams also want generic inboxes like info@ and sales@ surfaced, others only care about hard bounces
  • Point the workflow at different contact properties, or add a third one to capture the suggested spelling when someone mistypes their email domain
  • Swap the Slack channel, or send the alert as a direct message to the contact owner instead of posting it publicly

FAQs

Will this work on HubSpot Free?
Yes. It reads and updates ordinary contact records. You do need to be able to add custom contact properties to store the verdict, which HubSpot supports on paid tiers and on Free within its property limits.
Does this send a test email to the contact?
No. The address is checked without delivering anything, so the person never receives a message and has no idea they were verified.
What happens to addresses that are fine?
They get tagged as deliverable on the contact record and nothing else happens. Good addresses pass silently so your Slack channel only ever shows problems worth acting on.
Why would I want info@ or sales@ addresses flagged?
Generic inboxes usually land in a shared mailbox rather than with a named buyer, so they get answered less often and can drag down your sender reputation. Flagging them lets a rep decide whether to go find a real person instead.
What is a catch-all domain and why is it treated as risky?
Some company mail servers accept every address sent to them, even ones that do not exist, so there is no way to confirm the person is real. Rather than call that clean, the workflow marks it as risky so you can weigh the gamble.

Related templates

Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
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
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
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

Stop burning outreach on addresses that were never going to land.

Catch bad emails the moment a contact is created, not after your campaign comes back full of bounces.