Qualify Fillout leads and route them to HubSpot and Slack

Every time someone submits your Fillout form, enrich the lead with Apollo, score them against your ICP, and push qualified ones into HubSpot with a Slack alert.

Agentic Task
FilloutApolloHubSpotSlackSalesMarketingLead EnrichmentNotifications & AlertsData Sync
PromptCreate

Build an agent workflow that qualifies and routes inbound leads from a Fillout form the moment they come in.

Trigger: a Fillout webhook on new form submission. Use Fillout's Create Form Webhook operation to subscribe the workflow's webhook URL to my lead capture form. The submission payload includes the submission ID.

When the webhook fires, the agent should do the following:

1. Fetch the full submission with Fillout's Get Submission by ID so it can read every field. Pull out the submitter's work email, full name, and company name (or website domain if that's what the form collects).

2. Enrich the person with Apollo People Enrichment using the email. Then enrich the company with Apollo Organization Enrichment using the domain or company name. Call each Apollo endpoint at most once per submission to keep credit usage predictable. From the enriched results, capture: job title, seniority, employee count, industry, and any recent funding signals.

3. Score the lead 1 to 10 against this ICP rubric (edit these to match your business, this is the default): target titles include Head of Sales, VP Sales, Director of Revenue Operations, Chief Revenue Officer, Founder, and CEO; minimum company size is 25 employees; target industries include SaaS, B2B software, and technology. Weight seniority most, then company size, then industry. Recent funding within the last 12 months adds one point. If Apollo cannot enrich the person or company (missing or bad email or domain), score the lead 1 and note the reason.

4. If the score is 7 or higher: use HubSpot Batch Upsert Contacts (matched on email) to create or update the contact with the enriched fields plus a lead_score property and a lead_qualification_reason property. Then use HubSpot Create Deal to open a new deal in the New Lead stage, named "[Company] - [Person Name]", and associate it with the contact. Finally, use Slack Send a Message to post to the #sales-hot-leads channel with: person name, job title, company, employee count, industry, funding signal if any, the numeric score, and a one-sentence reason the lead qualified.

5. If the score is below 7: still use HubSpot Batch Upsert Contacts to create or update the contact with the enriched fields, the lead_score property, and a lifecycle tag of "unqualified". Do not create a deal. Do not post to Slack.

Keep the Slack summary punchy (5 to 8 lines max). Format it so a sales rep can decide in under 10 seconds whether to reach out. The scoring judgement, the enrichment interpretation, and the Slack summary drafting are the parts where the agent adds real value, so give it room to reason about ambiguous cases (for example, a Series A startup with 15 employees that's clearly on an ICP trajectory should be flagged as "borderline, worth a look" rather than silently dropped).

Additional information

What does this prompt do?
  • Listens for new submissions on a Fillout form the moment they come in.
  • Pulls in job title, seniority, company size, industry, and funding signals from Apollo using the email and company on the form.
  • Scores each lead 1 to 10 against a simple ideal customer profile you define, then writes them into HubSpot with the score and enriched details.
  • Sends a Slack alert to your sales channel for hot leads with a short summary and a one-line reason they qualified.
What do I need to use this?
  • A Fillout account with the lead capture form you want to monitor.
  • An Apollo account for people and company enrichment (uses Apollo credits, roughly one call per submission).
  • A HubSpot account where new contacts and deals should be created.
  • A Slack workspace and the channel where your sales team wants hot lead alerts.
How can I customize it?
  • Rewrite the ICP rubric with your own target titles, minimum company size, and target industries.
  • Change the score cutoff (default is 7 out of 10) that decides which leads get a Slack ping versus a quiet HubSpot record.
  • Point the Slack alert at a different channel, or add extra fields (like source form or campaign name) to the summary.

Frequently asked questions

Will this create duplicate contacts in HubSpot if the same person fills out the form twice?
No. Contacts are matched on email, so a re-submission updates the existing HubSpot contact instead of creating a new one.
What happens to leads that don't hit the score cutoff?
They still get written to HubSpot, but tagged as unqualified so your team can see them without cluttering the Slack channel. No Slack alert is sent for them.
Does this use my Apollo credits?
Yes. Each form submission triggers one person lookup and one company lookup in Apollo. The workflow only calls Apollo once per submission to keep credit usage predictable.
Can I use this with a different CRM or destination?
Yes. Swap HubSpot for another CRM in the prompt, or add a step to also write the lead into a spreadsheet or database. The scoring logic stays the same.
What if the form doesn't include a work email or company name?
Apollo needs at least one strong identifier to enrich. If both are missing, the agent skips enrichment, scores the lead as unqualified, and still records the submission in HubSpot so nothing is lost.

Stop hand-triaging every form submission.

Connect Fillout, Apollo, HubSpot, and Slack once, and Geni qualifies and routes every new lead the second it comes in.