Profile new HubSpot leads from their website with a Slack alert
When a new contact lands in HubSpot, read their company website, fill in industry, product, ICP, and a one-line pitch, then ping sales in Slack.
Run this workflow every time a new contact is created in HubSpot. Use HubSpot's webhook trigger on the contact creation event so it fires the moment the record appears, not on a poll.
When a new contact comes in, do the following:
1. Read the email address on the new contact and extract the domain (the part after the @).
2. If the domain is a known free or personal email provider (gmail.com, outlook.com, hotmail.com, yahoo.com, icloud.com, aol.com, proton.me, live.com, msn.com), skip the website enrichment entirely. Jump to step 6 and post a short Slack message noting this is a personal-email lead with no company website to profile.
3. Otherwise, call ScrapingBee's Extract Data with AI operation against https://{domain} (fall back to https://www.{domain} if the first attempt 404s). Use the ai_query parameter to ask for four fields in one call:
- industry: one or two words describing what industry the company operates in.
- primary_product: one sentence describing the main product or service the company sells.
- ideal_customer_profile: one sentence describing who this company sells to.
- value_proposition: a single one-line pitch in the company's own voice.
Ask ScrapingBee to return the result as structured JSON so the fields are easy to read back. If the homepage scrape fails or the values come back empty or nonsensical, set the missing fields to "unknown" and continue.
4. Use HubSpot Update Contact to write the four values into custom contact properties named company_industry, primary_product, ideal_customer_profile, and value_proposition. If any of those properties don't exist yet on the contact schema, create them as single-line text properties first.
5. Use HubSpot Create Note associated with the contact. Title the note "Company profile from website" and put the four enrichment fields in the body as a short bulleted summary, with the source domain at the top.
6. Use Slack Send a Message to post to the sales channel (default to #sales-new-leads, but prompt me to confirm the channel during setup). Format the message like this:
New lead: {first_name} {last_name} at {company_or_domain} Industry: {industry} Product: {primary_product} Sells to: {ideal_customer_profile} Pitch: {value_proposition} HubSpot record: {link_to_contact}
Build the HubSpot record link as https://app.hubspot.com/contacts/{portalId}/contact/{contactId}, where portalId is the HubSpot account/hub ID and contactId is the new contact's id from the trigger payload.
For free-email leads, send an abbreviated version of the Slack message that just announces the contact name and email and notes that no company profile was generated because the email is personal.
Keep the whole workflow focused on this enrichment pass. Don't create deals, don't assign owners, don't send outbound emails. The goal is to give sales reps real context the moment a lead lands.
What does this prompt do?
- Watches for new HubSpot contacts and reads the company domain from their work email.
- Visits the company homepage and derives industry, primary product, ideal customer profile, and a one-line value proposition.
- Writes those values into custom contact properties and files a short company summary as a note on the contact.
- Posts a heads-up to your sales Slack channel with the highlights and a direct link to the HubSpot record.
What do I need to use this?
- A HubSpot account with permission to read and update contacts and create notes.
- A ScrapingBee API key for visiting the company homepage.
- A Slack workspace and the channel where alerts should land.
- Custom contact properties for industry, product, customer profile, and value prop (we can create these for you if they don't exist).
How can I customize it?
- Change which questions get asked of the homepage. Add tech stack, employee count, recent news, or anything you can describe in plain English.
- Pick a different Slack channel, or route alerts based on lead source, country, or deal owner.
- Extend or replace the list of free email providers that get skipped (gmail.com, outlook.com, yahoo.com).
FAQs
What happens if the lead signs up with a personal email like gmail.com?
Can I run this on contacts that already exist instead of brand-new ones?
What if the company website blocks scrapers or runs heavy JavaScript?
Does it work with HubSpot Free?
How do I change which Slack channel it posts to?
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.
Give every new lead instant context before sales even opens HubSpot.
Connect HubSpot, ScrapingBee, and Slack once, and Geni profiles every new contact the moment they land.