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.

Agentic Task
HubSpotApolloSlackSalesOperationsLead EnrichmentNotifications & Alerts
PromptCreate

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.

FAQs

What triggers this workflow?
An outgoing HubSpot webhook on contact.creation. As soon as a new contact lands in HubSpot, the agent receives the payload and starts working.
How does the agent decide the A/B/C tier?
It applies an ICP rubric you define in the prompt: firmographic fit (industry, headcount, funding) plus role seniority. The numeric lead_score and the tier are both written back to HubSpot so reps can sort and filter.
Why skip personal email domains?
Apollo enrichment costs credits per call. Gmail, Yahoo, Hotmail, and similar consumer addresses almost never resolve to a real prospect, so the agent short-circuits those records to keep credits aimed at business domains.
How does the agent know which owner to assign?
You give it a routing rule: territory by country or state, round-robin across a list of reps, or a single default owner. The agent uses that rule to set the HubSpot task assignee and pick the Slack DM recipient.
What if Apollo returns no match?
The agent still writes back what it has, marks the contact with a lower tier or a needs-review flag, and sends a softer Slack note so the owner knows enrichment was incomplete.

Related templates

Turn website roof inspection requests into JobNimbus leads

New roof inspection requests from your website form land in JobNimbus within a minute, with no duplicate records and nothing retyped by your team.

JobNimbus
Google Forms
Slack
Agentic Task
Triage new Jira Service Management requests before anyone opens them

Every new customer request gets a priority, triage labels, a friendly reply with the right help article, and a Slack ping only when it is truly urgent.

Jira Service Management
Jira
Slack
Agentic Task
Risk-check every dependency upgrade pull request in GitHub

When a bot opens a version bump pull request, we read the real documentation for that exact version and tell you whether it is safe to merge.

Context7
GitHub
Slack
Agentic Task
Launch an Ironclad contract when a HubSpot deal is won

The moment a deal hits Closed Won, the right contract starts in Ironclad, the link lands on the deal, and your sales channel hears who owns the next step.

Ironclad
HubSpot
Slack
Agentic Task
Weekly Ironclad contract renewal digest in Slack and Asana

Every Monday, find contracts renewing or expiring in the next 90 days, post a ranked digest to Slack, and open Asana tasks for the ones that need a decision now.

Ironclad
Slack
Asana
Agentic Task
Turn repeat support tickets into draft help articles

Every Friday, spot the questions your team keeps answering by hand and get a ready-to-review help article drafted from real fixes.

Jira Service Management
Confluence
Slack
Agentic Task

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.