BACK TO BLOG
USE CASESOctober 26, 202610 min read

Qualify Inbound Leads With an AI Agent, Apollo and HubSpot

JH

By Joris van Huët

Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs

Published

2026-10-26

The short answer: if 300 form leads a month land in HubSpot and one person sorts them by hand, this setup earns its keep: an n8n agent enriches each lead through Apollo, proposes a lead status and an owner, and writes nothing until someone approves it in Slack. On monthly billing it costs $89 a month plus model tokens, made of $65 for one Apollo Basic seat with 2,500 credits and $24 for n8n Starter with 2,500 executions, per the Apollo pricing page and the n8n pricing page, checked on 26 October 2026, with HubSpot's free tools underneath. For example, at 4 minutes of desk research per lead, 300 x 4 = 1,200 minutes, so the agent takes 20 hours of reading off somebody's month and leaves them the decision.

Disclosure: I may earn a commission through some links on this site. It does not change what this page says.

The job: a stranger fills in your form, and before lunch someone has to know who they are, whether sales should call and which rep owns them. Reading is the slow part and deciding is quick, so the reading goes to the agent and the decision stays with a person. The products are described in the HubSpot, Apollo.io and n8n entries, and the single-tool setup in their how-tos: the hidden source field in How to Use HubSpot, the Slack app in How to Use n8n, the privacy switches in How to Use Apollo.io.

Before you build:

  1. The arithmetic for one lead. Apollo's people enrichment charges 1 credit when it returns demographics or an email, 8 more only if a mobile number comes back, and nothing when it finds no match, per its API pricing notes. n8n counts one production execution each time a trigger fires, per its executions page. For example, 300 leads use 300 of Basic's 2,500 monthly credits and 300 of Starter's 2,500 executions. The event is a new contact, not a form fill, so imports reach the workflow too; step 2 drops them, but their runs still count.
  2. What you already hold. The HubSpot form with its hidden source field, last quarter's won deals as the raw material for a written rubric (company size, role, the problem they came with), and a routing table that says which rep owns which segment. Keep the rubric to one page. A rule that needs a meeting to explain is not ready for an agent.
  3. Keys and permissions. A HubSpot developer app for the trigger and a service key for the reads and the write, as n8n's HubSpot credentials page sets out; an Apollo API key created under Settings, Integrations, API Keys and scoped to the enrichment endpoint alone, which Apollo's key guide allows; and a Slack app for the approvals.
  4. Two readings from the last 60 days. HubSpot fills in Owner assigned date and Lead response time on every contact by itself, per its default contact properties. Export both for your recent form contacts before anything changes. That export is the number the agent has to beat.

The workflow, from form fill to owner

  1. Trigger. In n8n, a HubSpot Trigger listens for the Contact Created event, one of the contact events its trigger page lists. A HubSpot node with Get a contact then reads the new record, hidden source field included.
  2. Filter and split. An If node lets through only contacts whose source field holds your form's value, so contacts from other sources stop here. A second If node sends every record ID that ends with 0 down the old manual path; that is the holdout you read later.
  3. Enrich. An HTTP Request node posts the email and the company domain to Apollo's people enrichment endpoint. Leave reveal_phone_number and the waterfall options off: each needs a webhook, and a phone number is what triggers the extra credits. Personal emails stay hidden by default, and Apollo does not reveal them at all for people in GDPR regions. Keep match_confidence, Apollo's grade of how sure it is that it found the right person.
  4. The agent decides. An AI Agent node with a chat model reads the form answers and Apollo's job title and company details against your rubric and routing table. Its instructions: propose a Lead Status, an owner and a two-line reason; answer "needs a person" whenever match_confidence is low or none; state no company fact the inputs do not contain. The node needs at least one tool, and this one gets exactly one: an HTTP Request tool that writes to the contact through HubSpot's update-contact endpoint, listed on free tiers. It reuses the HubSpot credential, the route n8n's HubSpot node page gives for operations the node lacks.
  5. The human check. In the agent's Tools panel, put that write tool behind a Human review step on Slack, following n8n's human-in-the-loop guide. Build the message from $tool.parameters, so the reviewer reads the proposed status, owner and reason before the record changes. Approve and the update runs as proposed; deny and nothing is written, and the agent is told it was refused. Send the reviews to a private channel or a direct message: the Slack approvals page warns that with no approver list, anyone who can see a message can answer it. The lead never hears from the agent, which has no email tool at all.
  6. Output. The approved values land on the contact as Lead Status and Contact owner, and HubSpot stamps Owner assigned date on its own. Add an error workflow, as step 6 of the n8n how-to shows, so a failed run reaches Slack.

One legal point shapes the form copy. Enrichment adds data you did not collect from the person, and Article 14 of the GDPR requires telling people about data obtained from another source within a reasonable period, at the latest within one month. The same article lifts that duty where the person already has the information, so a line in the form's privacy notice naming the data provider does the job at the moment of submission.

The free version, enough on its own

Under 75 leads a month, the job needs no paid tool. HubSpot's free tools cover up to 2 users and Apollo's Free plan grants 75 credits per seat a month, per the HubSpot pricing page and the Apollo pricing page, both checked on 26 October 2026. The endpoint reference adds that a free account calling the API must be registered with a work email address.

  • Save a HubSpot contacts view, available on every plan, filtered on your form's source value and yesterday's create date.
  • Each morning, read every lead against the one-page rubric. Spend an Apollo credit only on the ones the company website does not explain.
  • Set Lead Status and Contact owner by hand, and note the reason in one line on the record.

That routine also writes the agent's instructions: every noted reason becomes a rule. For the automation without a subscription, n8n's Community Edition is self-hosted and free, per the pricing page, though Slack approvals then need your instance on public HTTPS.

The paid tools add volume and hours: 2,500 lookups a month instead of 75, per the pricing page, an n8n instance Slack can reach without a server of your own, and a proposed owner for the lead that arrives at the end of the day.

What it costs a month

LineFree routePaid route, monthly billing
CRMHubSpot free tools, up to 2 usersUnchanged; Sales Hub Starter at $10 per seat only for extra logins
EnrichmentApollo Free, 75 credits per seat a monthBasic, $65 per seat, 2,500 credits a month
Workflow and agentn8n Community Edition, self-hostedStarter, $24, 2,500 executions
ModelYour own provider keyGateway credits or your own key

All prices were checked on 26 October 2026. On annual billing, Apollo Basic is $49 per seat a month with 30,000 credits a year granted upfront on the Apollo pricing page, n8n Starter is $20 a month on the n8n pricing page and HubSpot Starter is $7 per seat on the Sales Hub pricing page. The model has no fixed line: n8n Cloud deducts Gateway credits at the rates on its service pricing page, or you pay your provider directly. Apollo's key guide says API access depends on the plan, and its pricing FAQ reserves advanced integrations for Custom plans, so make one test call on your own plan before building the rest.

How to know it worked

Read it from fields HubSpot fills in by itself, not from the workflow being judged.

  • Speed. Hours from create date to Owner assigned date, against the 60-day export.
  • Follow-through. Lead response time, which HubSpot defines as the time the current owner took to make a first qualifying engagement.
  • Agreement. Approvals divided by proposals in the n8n executions list. Read every denial: each one is a rubric rule nobody wrote down.
  • The holdout. Record IDs ending in 0 skipped the agent. After six weeks, compare that group with the rest on speed and on deals opened per 100 leads. Faster routing with fewer deals means the rubric is screening out buyers, and the fix belongs in the rubric, not the volume.

Before you raise the volume

Apollo grants a billing cycle's credits upfront and lets the unused ones expire when it ends, add-on credits included, per the FAQ on its pricing page, so the plan that suits Apollo is one sized for your busiest month. Size it on an ordinary month instead, and put one more If node before the enrichment call: a contact whose company and job title HubSpot already holds does not need a credit.

If you would rather have the agent built, run against the holdout and handed over than learn n8n yourself, that is the agentic marketing work I sell.

FAQ

Can the agent send the first email to the lead?

Not in this design. Its only tool is the HubSpot write, and that sits behind review. If you want a drafted reply, give it a Gmail tool behind its own review step, as the n8n how-to does for demo requests; n8n's human-in-the-loop guide names sending external messages among the actions worth reviewing.

What happens when Apollo cannot find the person?

The call costs nothing when no credit-consuming data comes back, and match_confidence reads none, per the endpoint reference. The agent's instructions turn that into "needs a person", so the lead reaches the reviewer without an invented company size.

Does this work with Pipedrive or Attio instead of HubSpot?

For Pipedrive, swap the HubSpot nodes for n8n's Pipedrive node, which also works as an agent tool, and keep the review step. Attio runs the whole job inside its own workflows, as How to Use Attio shows.

TAGS
Lead QualificationAI AgentsHubSpotApollo.ion8nLead Routing

ABOUT THE AUTHOR

I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.

I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.

Agentic marketing, built for your team

The agents in this article, built into your workflows and handed over to your team: the first one within two weeks.