Enrich new HubSpot contacts with Octen AI and alert Slack

The moment a contact is created in HubSpot, research the person and company on the open web, file a written brief on the record, and brief sales in Slack.

Agentic Task
HubSpotOcten AISlack BotSalesOperationsLead EnrichmentNotifications & AlertsResearch & Monitoring

Build an inbound lead enrichment workflow that runs every time a new contact is created in HubSpot. Trigger on a HubSpot outgoing webhook for the contact.creation event.

When the webhook fires, take the contact ID from the payload and call HubSpot Get Contact to pull the contact's email, first name, last name, company name, and any LinkedIn URL already on the record. Derive the company domain from the email (the part after the @).

If the domain is a personal email provider (gmail.com, googlemail.com, outlook.com, hotmail.com, live.com, msn.com, yahoo.com, ymail.com, icloud.com, me.com, mac.com, aol.com, proton.me, protonmail.com, pm.me, gmx.com, mail.com, zoho.com, yandex.com, fastmail.com, hey.com, duck.com), skip the deep enrichment branch and go straight to the Slack step with a short low-confidence note that just says who signed up and notes that the email is personal so there's no company to research. Stop after the Slack send for that case.

Otherwise, run the full enrichment branch using Octen AI:

1. Call Octen AI Search to research the company. Use a query like "<company domain> company overview industry headcount" with the include_domains filter scoped to the company's own domain plus reputable news and funding sources, and a recency window so results from the last 90 days are favored. Ask for highlights and a small full-content sample so the agent has enough to summarize. Pull industry, rough size signals, and any recent funding, hiring surge, product launch, or press mention.

2. Call Octen AI Extract on the company's homepage and /about (or equivalent) URL to get clean markdown of the product description and positioning. Use the company domain to build these URLs. Extract returns clean markdown the agent can read.

3. Call Octen AI Search again with the contact's full name plus the company name to surface a LinkedIn-style background blurb if anything public exists. Keep the result small. If nothing useful comes back, leave the background blank rather than guessing.

Synthesize all of that into a structured enrichment brief with these sections: a one-line company description, size and industry, a recent signal (funding round, key hire, product launch, or notable press from the last 90 days), a one-line contact background if available, and a short buying-intent hypothesis explaining why this lead may be worth a fast reply.

Then write the results back to HubSpot:

A. Use HubSpot Create Note to attach the full brief as a note. Associate the note with the contact. Also call HubSpot Search Companies filtered by domain equals the contact's company domain. If a single company record matches, associate the note with that company too.

B. Use HubSpot Update Contact to fill any obviously empty contact fields: company (if blank), industry, and linkedin_url (if blank). Never overwrite a field that already has a value.

C. If a matching company was found, use HubSpot Update Company to fill empty company fields like industry, description, and linkedin_company_page using the Octen findings. Same rule: never overwrite anything that already has a value.

Finally, post a Slack alert via Slack Bot Send a Message to the sales channel (let the user pick the channel during setup, default to #sales). The message should be 3-5 lines: who signed up (name, title if known, company), the company one-liner, the recent signal in one line, the buying-intent hypothesis in one line, and a direct link back to the HubSpot contact record. Use Slack mrkdwn formatting.

Keep the agent's behavior tight: if any Octen step fails or returns nothing useful, still post the Slack note and create the HubSpot note with whatever was found, marking missing sections as unknown. Do not block the alert on a single failed lookup.

Additional information

What does this prompt do?
  • Watches HubSpot for new contacts and reacts in seconds, no manual lookups.
  • Researches the company on the open web for industry, size signals, and recent news from the last 90 days.
  • Reads the company website to pull a clean product description, and looks up the contact for a short background blurb if anything public exists.
  • Writes the full brief as a Note on the contact (and the company record when one exists) and fills in any obviously empty fields like company, industry, or LinkedIn URL.
  • Posts a short Slack alert to your sales channel summarizing who came in and why they look promising, with a link straight back to HubSpot.
What do I need to use this?
  • A HubSpot account where you can turn on a webhook for new contact creation.
  • An Octen AI account for live web search and page extraction.
  • A Slack workspace and the channel where sales should be pinged.
How can I customize it?
  • Change the Slack channel, or split routing so different territories or segments get pinged in different channels.
  • Tweak the freshness window for company news, swap 90 days for 30 days if you want only the hottest signals.
  • Decide what counts as a personal email domain, and whether those leads should be skipped, downgraded, or sent to a separate low-confidence channel.
  • Adjust which contact and company fields you allow the workflow to fill, so it never overwrites anything you care about.

Frequently asked questions

Does this overwrite data we already have in HubSpot?
No. The workflow only fills fields that are obviously empty, like a missing company, industry, or LinkedIn URL. Anything you have already entered is left alone.
What happens if someone signs up with a Gmail or Outlook address?
Personal email domains skip the deep research step. You still get a short Slack note marked as low confidence so sales knows the lead came in, just without a company brief.
How fast does the enrichment happen?
It runs within seconds of the contact being created in HubSpot. The Slack alert and the brief on the contact record usually land before a rep would have noticed the new contact.
Can I send the alert to a private Slack channel?
Yes. You can point the workflow at any public or private channel. For private channels, make sure the Slack bot has been invited in.
Will this work on HubSpot's free tier?
You need a HubSpot plan that supports outgoing webhooks on contact creation. Most paid HubSpot plans include this, but the free tier does not.

Stop manually researching every new inbound lead.

Connect HubSpot, Octen AI, and Slack once, and Geni delivers a full brief on every new contact within seconds.