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.
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.
Additional information
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).
Frequently asked questions
Will this run on personal Gmail or Yahoo signups?
Where does the research actually land in HubSpot?
How fast does it run after a contact is created?
What if the research is wrong or out of date?
Can I change which Slack channel gets the alert?
Stop manually Googling every new lead.
Connect HubSpot, Perplexity, and Slack once, and Geni researches every new contact for you with clickable sources.