Auto-research new HubSpot contacts with Perplexity

When a new contact lands in HubSpot, an agent pulls fresh company intel from Perplexity, writes it to the record with sources, and pings Slack for hot leads.

Agentic Task
HubSpotPerplexity AISlackSalesLead EnrichmentResearch & MonitoringNotifications & Alerts
PromptCreate

Build an agent workflow that triggers on HubSpot's webhook for new contact creation. Every time a contact is created in my HubSpot, run the steps below.

Step 1: free-email skip filter. Read the contact's email from the webhook payload and parse the domain. If the domain is a free-email provider, stop the workflow immediately and do not run research. Default skip list: gmail.com, yahoo.com, hotmail.com, outlook.com, live.com, msn.com, icloud.com, me.com, mac.com, aol.com, proton.me, protonmail.com, gmx.com, gmx.net, mail.com, yandex.com, zoho.com, fastmail.com, hey.com, pm.me, duck.com. Expose this list as a configurable workflow input so I can edit it later.

Step 2: research the company with Perplexity AI. Use Perplexity's Create Chat Completion operation with model sonar-pro. Determine the company from the contact's email domain (and the HubSpot company association if present). Prompt Perplexity to return: (a) recent funding rounds in the last 18 months with amount, stage, and date; (b) leadership changes (new CEO, CRO, CTO, VP Eng, VP Sales) in the last 12 months; (c) product launches or major announcements in the last 6 months; (d) hiring signals such as aggressive headcount growth or a surge in open roles in a specific function; (e) a one-line fit summary classified as Hot, Warm, or Cold for the buyer profile I provide as a workflow input. Ask Perplexity for structured output (each section as its own field), and preserve Perplexity's citations as full clickable URLs alongside each finding.

Step 3: write structured fields back to the HubSpot contact. Use HubSpot's Update Contact operation. Write to these contact properties: company_research_summary (text), fit_score (enumeration: Hot / Warm / Cold), recent_funding (text), leadership_changes (text), product_launches (text), hiring_signals (text), research_updated_at (datetime). If any of these custom properties don't exist on the contact object yet, create them first.

Step 4: pin a full research note to the contact. Use HubSpot's Create Note operation and associate it with the contact ID. The note body should contain the long-form research findings with the Perplexity source URLs preserved as clickable HTML links (anchor tags), grouped by section (Funding, Leadership, Product, Hiring, Fit). Include the research timestamp at the top.

Step 5: alert Slack only on hot leads. If the fit_score is Hot, use Slack's Send a Message operation to post into a configurable sales channel (workflow input, default #sales-alerts). The message should include: contact name, company name, fit summary, top 2 reasons it's a fit, and a deep link back to the HubSpot contact record. If the fit_score is Warm or Cold, do not send a Slack message.

Configurable workflow inputs: buyer_profile (free-text description of our ICP, fed into the Perplexity prompt), slack_channel (defaults to #sales-alerts), free_email_domains (the skip list above), hot_lead_only (boolean, defaults to true so only Hot fires Slack). Use sonar-pro as the Perplexity model. Handle Perplexity 429 rate limits with exponential backoff. If the company can't be determined from the email domain (for example a contact with only a personal-sounding work domain), still run the research using whatever company info HubSpot has, and if there's none, write a short note saying research was skipped due to missing company info.

What does this prompt do?

  • Triggers the second a new contact is created in HubSpot, no polling delay.
  • Skips personal Gmail, Yahoo, and Outlook signups so research only runs on real companies.
  • Pulls live web research on the company: recent funding, leadership changes, product launches, hiring signals, and a one-line Hot or Warm or Cold fit score, with clickable sources.
  • Writes the structured intel back onto the HubSpot contact and pins a full research note so reps see it without leaving the CRM.
  • Pings your sales channel in Slack only when the fit is strong, so reps don't drown in alerts.

What do I need to use this?

  • A HubSpot account where new contacts get created (Free, Starter, or higher all work).
  • A Perplexity AI account with API credits loaded.
  • A Slack workspace and the channel you want hot-lead alerts to post into.

How can I customize it?

  • Swap the research questions to match your sales motion (pricing model, tech stack, recent press coverage, hiring in a specific function).
  • Adjust the hot-lead threshold so Slack only fires on a tighter or looser fit.
  • Change which Slack channel gets the alert, or have it DM the contact's owner instead of posting publicly.
  • Add or remove free-email domains in the skip list (some teams want to skip .edu addresses too).

FAQs

Will this run on personal Gmail or Yahoo signups?
No. Free-email providers like gmail.com, yahoo.com, hotmail.com, and outlook.com are skipped automatically so you don't burn research credits on personal inboxes. You can add or remove domains in the skip list.
Where does the research actually land in HubSpot?
Two places. Structured fields (fit score, funding, leadership, product launches, hiring signals) are written directly to the contact record, and a full long-form note with clickable source links is pinned to the contact so reps can audit every claim.
How fast does it run after a contact is created?
Within seconds. We listen for HubSpot's webhook the moment a contact is added, so reps see the research before they ever open the record.
What if the research is wrong or out of date?
Every claim Perplexity makes comes with a clickable source link in the pinned note. Reps can verify in one click, and the structured fields include a timestamp so you know when the research was pulled.
Can I change which Slack channel gets the alert?
Yes. You pick the channel during setup, and you can swap it later. You can also flip it from a public channel post to a DM to the contact's HubSpot owner.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App
Chat quality review board for LiveChat support leads

Score last week's finished live chats against one rubric, let an AI grader draft the notes with quotes, and send coaching straight to the agent.

LiveChat
Slack
General Input Database
App
A searchable RFP answer library your bid team drafts from

Every proposal you have ever submitted in one searchable archive, with the closest past answers lined up against each question in a new RFP.

General Input Storage
General Input Database
Mistral AI
+2
App

Stop manually Googling every new lead.

Connect HubSpot, Perplexity, and Slack once, and Geni researches every new contact for you with clickable sources.