Enrich, score, and route new HubSpot contacts with Apollo
When a contact is created in HubSpot, an agent enriches them with Apollo, scores them against your ICP, writes a tier, creates a task, and DMs the owner.
Build me an agent workflow that enriches, scores, and routes every new HubSpot contact before a rep ever touches the record.
Trigger: a HubSpot outgoing webhook on contact.creation. The webhook payload gives me the contact ID, email, first name, last name, and company domain (when available).
First, look at the email domain. If it is a personal/consumer domain (gmail.com, yahoo.com, hotmail.com, outlook.com, icloud.com, aol.com, proton.me), skip enrichment, write a short HubSpot note saying the contact was skipped because the email is consumer, and stop. Do not burn Apollo credits on these.
Otherwise, call Apollo People Enrichment with the contact's email to pull title, seniority, department, and LinkedIn URL. Then call Apollo Organization Enrichment with the company domain to pull industry, employee headcount, latest funding round and amount, and tech stack.
Score the contact against an ICP rubric I will define. Default rubric: firmographic fit (industry in [SaaS, Fintech, RevOps tooling], headcount 50 to 5000, raised at least Series A) plus role seniority (VP and above is highest, Director is mid, IC is low). Output a numeric lead_score from 0 to 100 and a tier of A (80+), B (50 to 79), or C (under 50).
Use HubSpot Update Contact to write back: title, seniority, linkedin_url, industry, employee_count, latest_funding_stage, latest_funding_amount, tech_stack, lead_score, and lead_tier. Create the custom properties in HubSpot if they do not already exist.
Pick the account owner using this routing rule: territory by country first (US East to Alex, US West to Priya, EMEA to Jordan, APAC to Sam), and if territory is unknown, round-robin across the four owners. Make this list configurable so I can swap names later.
Use HubSpot Create Task to create a follow-up task assigned to that owner, associated with the contact. Subject: "New {tier} lead: {first_name} {last_name} at {company}". Due date: end of next business day. Priority: HIGH for tier A, MEDIUM for tier B, LOW for tier C.
Then use Slack Send a Message to DM that owner. The message should be one short paragraph (3 to 5 sentences) explaining why this lead matters: who they are, what the company does, why they fit our ICP, and any standout signal (recent funding, relevant tech in stack, senior title). End with the direct HubSpot contact link.
If Apollo returns no match for the person or the organization, still update HubSpot with whatever was found, set lead_tier to "needs review", and send a softer Slack note so the owner knows enrichment was incomplete and they should manually qualify.
Log every run with the contact ID, tier, score, assigned owner, and whether Apollo had a match, so I can audit later.
Additional information
What does this prompt do?
- Listens for new contacts in HubSpot via webhook and runs end to end without a rep touching the record.
- Calls Apollo People Enrichment on the email and Apollo Organization Enrichment on the company domain to pull title, seniority, LinkedIn, industry, headcount, funding, and tech stack.
- Scores the contact against an ICP rubric (firmographic fit plus role seniority), writes a numeric lead_score and an A/B/C tier back to HubSpot.
- Creates a HubSpot task on the right account owner and DMs them in Slack with a one-paragraph why-this-matters brief and the HubSpot link.
What do I need to use this?
- A HubSpot account with permission to read and update contacts and create tasks.
- An Apollo account with credits available for People Enrichment and Organization Enrichment.
- A Slack workspace connected so the agent can DM the assigned owner.
- An owner-routing rule (territory map, round-robin list, or default owner) the agent can follow.
How can I customize it?
- Edit the ICP rubric and tier thresholds (industry, headcount band, funding stage, seniority weights) so A/B/C reflects your real qualification bar.
- Swap the routing logic between territory based, round-robin, or a single default owner depending on how your team divides accounts.
- Adjust the personal-email skip list and add other filters (free email providers, competitor domains, existing customers) to protect your enrichment budget.
Frequently asked questions
What triggers this workflow?
How does the agent decide the A/B/C tier?
Why skip personal email domains?
How does the agent know which owner to assign?
What if Apollo returns no match?
Stop letting hot inbound leads sit cold in HubSpot.
Connect HubSpot, Apollo, and Slack once, and Geni enriches, scores, and routes every new contact the moment it is created.