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.

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

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Provision customer entitlements in DynamoDB when a deal is won

When a HubSpot deal hits Closed Won, the customer's plan, seats and renewal dates land in your DynamoDB accounts table, with a Slack note showing what changed.

HubSpot
Amazon DynamoDB
Slack Bot
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.