Enrich new HubSpot contacts with Crunchbase and Slack alerts

The moment a contact lands in HubSpot, pull Crunchbase data onto the company, score ICP fit, and route a priority alert to your sales channel in Slack.

Agentic Task
HubSpotCrunchbaseSlackSalesLead EnrichmentNotifications & AlertsData Sync

Build an agent that enriches every new HubSpot contact with Crunchbase data and posts a routed, ICP-scored alert to my sales team in Slack.

Trigger: a HubSpot webhook subscription on the contact.creation event. When it fires, the agent should fetch the new contact (HubSpot Get Contact) along with the associated company (HubSpot Get Company), pulling at minimum email, first/last name, job title, and the company's name, domain, and currently populated enrichment fields.

Enrichment step: use the contact's email domain (fallback to the associated company name) to query Crunchbase Search Organizations and pick the best match. Then call Crunchbase Lookup Organization on that match to retrieve the latest funding round (type, amount, announced date), total funding raised, employee headcount range, industry categories, HQ city and country, founded year, website, and a short business description.

If Crunchbase has no confident match for the domain, skip enrichment cleanly: do not call Update Company, leave a short Create Note saying 'No Crunchbase match found for <domain>', and still post the Slack alert below with a 'no enrichment data' tag so the lead is still routed.

Write-back step: call HubSpot Update Company on the associated company to populate the enrichment fields (industry, total raised, last funding round type and date, employee count, HQ city, HQ country, year founded, website, short description). Never overwrite a HubSpot field that already has a non-empty value, with one exception: if the Crunchbase value for last funding round is more recent than what's on the HubSpot record, update it. Prefer backfilling empty fields.

Rationale note: call HubSpot Create Note and associate it with the company. The note should be 4 to 8 sentences in plain English explaining why this account is or is not a fit for our ICP, citing the specific Crunchbase signals it used (e.g. recent Series B, headcount in target range, sector match) and any disqualifiers (e.g. headcount too small, wrong industry, no recent funding).

Slack alert: call Slack Send a Message to the routing channel I configure at setup (default #sales-inbound). The message should name the lead (full name, job title, company), include a two to three sentence summary of the company, call out the single most relevant signal (recent raise, hiring spike, sector match, or 'no Crunchbase match'), and recommend a priority tier of P0, P1, or P2 with a one-line reason. Include a link to the HubSpot company record.

ICP defaults for the priority tier (the user should be able to override these at setup): P0 = strong sector match plus recent funding in the last 12 months or headcount 50 to 500; P1 = sector match but missing one of the other two signals; P2 = weak or no sector match, or no Crunchbase data.

Constraints: dedupe so the agent does not re-process the same contact id within 24 hours. Treat free-mail domains (gmail, outlook, yahoo, etc.) as 'no domain match' and fall back to company name. Keep the Slack message short and skimmable; put detail in the HubSpot note, not the Slack post.

Additional information

What does this prompt do?
  • Triggers the second a new contact is created in HubSpot so sales hears about inbound leads in real time.
  • Pulls the latest funding round, total raised, headcount, industry, HQ, and a short business description from Crunchbase using the lead's email domain or company name.
  • Writes the enrichment back onto the HubSpot company without trampling fields your team has already filled in.
  • Adds a note to the company record explaining, in plain English, why this account is or is not a fit for your ICP.
  • Posts a routing message to Slack with a two or three sentence summary, the strongest signal, and a P0, P1, or P2 priority tier.
What do I need to use this?
  • A HubSpot account where you can subscribe to new contact events and read or update contacts, companies, and notes.
  • A Crunchbase API key from an Enterprise or Applications subscription.
  • A Slack workspace and the channel where you want sales to be pinged.
How can I customize it?
  • Change which Slack channel the alert posts to, or split routing by territory, segment, or product line.
  • Tune the ICP rules that decide P0, P1, and P2 (industry mix, headcount band, recent funding window).
  • Pick which HubSpot company fields the agent is allowed to update versus only backfill when empty.

Frequently asked questions

What happens if Crunchbase has no match for the lead's domain?
The agent skips the data pull cleanly, leaves a short note on the company record saying no match was found, and still posts a lightweight Slack alert so the lead does not slip through the cracks.
Will this overwrite company fields my team already filled in?
No. Existing HubSpot values are preserved by default. The agent only backfills empty fields, and updates a filled field when the Crunchbase value is clearly more recent.
Do I need a paid HubSpot plan?
You need a plan that supports webhooks for new contact events. HubSpot Free does not support these triggers, so a Starter plan or above is typically required.
How fast does the Slack alert show up?
The alert lands in Slack within seconds of the new contact webhook firing in HubSpot.
Can I route different leads to different Slack channels?
Yes. During setup, tell Geni how you want to split routing (by industry, region, deal size, or any contact property) and it will branch the message to the right channel.

Stop hand-researching every new lead.

Connect HubSpot, Crunchbase, and Slack once, and Geni enriches every new contact the second it lands.