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.
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?
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?
Related templates
Pick a client and a date range to see sent, replies, meetings booked and the real deal value your cold email produced, campaign by campaign.
Work every partner tier decision from one board, with the revenue and commission numbers, clear promotion thresholds, and AI review briefs.
Open one board at month end to find every closed deal missing a commission, every commission with no deal behind it, and every amount that does not add up.
See warmup status, daily send volume, and bounce risk for every sending account in one grid, with the riskiest mailboxes floating to the top.
Open one board each morning to see which of your accounts are hiring, what they are building, and where your product fits the roles they just opened.
Review Introw partner payouts line by line, approve them from one board, raise the matching bill in Xero, and post every approval to Slack.
Stop manually Googling every new lead.
Connect HubSpot, Perplexity, and Slack once, and Geni researches every new contact for you with clickable sources.