Turn Gmail sales inquiries into HubSpot contacts with Slack alerts

When a sales inquiry hits your Gmail, Geni creates the HubSpot contact, files a note with the email, and pings the sales team in Slack.

Agentic Task
GmailHubSpotSlackSalesOperationsLead EnrichmentNotifications & AlertsData Sync
PromptCreate

Build me an agent workflow that turns inbound sales inquiries in my Gmail into HubSpot contacts and Slack alerts so nothing slips through.

Trigger: poll Gmail for new emails (gmail / new_email) on the connected mailbox. Skip any message that already has the Inbound Lead label so reruns do not double-process.

For each new message, call Gmail Get a Message to read the full body and headers. Then classify the email. It counts as an inbound sales inquiry if the sender is asking about pricing, requesting a demo, asking how the product works, or proposing a partnership. Internal threads, replies in existing conversations I started, automated notifications, newsletters, and cold outbound pitches sent to me do not count. If the email is not an inquiry, stop and do nothing.

If it is an inquiry, extract the sender's full name (split into first and last), email address, company name (use the email domain if no company is stated), and a one-sentence summary of what they want.

Then call HubSpot Create Contact with email, firstname, lastname, company, and lifecyclestage set to lead. Capture the new contact id from the response.

Next, call HubSpot Create Note associated with that contact id. The note body should contain: the one-sentence summary, the original email subject, and the first 500 characters of the email body as a snippet.

Then call Slack Send a Message to the #inbound-leads channel. The message should include the contact's name, company, the one-line summary, a link to the Gmail thread, and a link to the new HubSpot contact record. Format it as a clean card so the sales team can grab it on the go.

Finally, call Gmail Modify Message Labels to add the Inbound Lead label to the original message so it does not get processed again and the inbox stays tidy.

If any step fails (HubSpot rejects the contact, Slack post fails, etc.), log a clear error and do not apply the Inbound Lead label, so the message will be retried on the next run.

What does this prompt do?

  • Watches your Gmail inbox for new emails and reads each one to decide if it is a real inbound sales inquiry (pricing, demo, partnership, etc.) versus normal correspondence.
  • For inquiries, extracts the sender's name, email, company, and a one-line summary, then creates a HubSpot contact with lifecycle stage set to lead.
  • Files a HubSpot note on that contact with the email summary and the original snippet so reps have the full context.
  • Posts a card to your #inbound-leads Slack channel with the contact name, company, summary, Gmail thread link, and HubSpot contact link.
  • Applies a Gmail Inbound Lead label to the message so the inbox stays tidy and the same email never gets processed twice.

What do I need to use this?

  • A Gmail account connected to General Input with permission to read messages and modify labels.
  • A HubSpot account with permission to create contacts and notes.
  • A Slack workspace and a channel like #inbound-leads where the sales team can be pinged.
  • A Gmail label called Inbound Lead (or any label name you prefer to use as the marker).

How can I customize it?

  • Tighten or loosen the inquiry classifier (for example, only flag emails that explicitly ask for pricing or a demo, or include partnership and recruiter outreach as separate buckets).
  • Change the Slack destination from a channel ping to a DM to the on-call AE, or route by territory using the sender's company domain.
  • Adjust the HubSpot fields you populate (lifecycle stage, lead source, owner) and add a follow-up task assigned to the rotating rep.

FAQs

How does the agent know an email is actually a sales inquiry and not regular correspondence?
The agent reads the full message body and classifies intent. It looks for buyer signals like asking about pricing, requesting a demo, asking how the product works, or proposing a partnership. Newsletters, cold pitches to you, internal threads, and replies to existing conversations are skipped.
What stops the same email from being processed twice?
Once an email is handled, the agent applies a Gmail Inbound Lead label to it. The trigger filters out anything that already has the label, so reruns and overlapping polls do not create duplicate HubSpot contacts.
What if the sender already exists as a HubSpot contact?
You can tell the agent to look up the contact by email first and, if found, just add the note and Slack alert instead of creating a duplicate. The default prompt creates the contact, but the workflow author will let you switch to upsert behavior.
Can I send the Slack alert to a private channel or a DM instead?
Yes. Swap the channel name in the prompt for any channel the connected Slack user can post to, or use a user ID to DM a specific AE. The Send a Message operation handles all three.
Does this work with Google Workspace shared inboxes like sales@?
Yes, as long as the connected Gmail account has access to that mailbox. Point the trigger at the inbox you actually want monitored. Most teams connect the dedicated sales address.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
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

Stop letting inbound leads sit in someone's inbox.

Connect Gmail, HubSpot, and Slack once, and Geni captures every real sales inquiry within minutes of it landing.