AI-qualify Typeform leads into HubSpot with a Slack opener

When a Typeform response comes in, score fit and intent, file the contact and deal in HubSpot, and post a drafted opener to Slack for hot and warm leads.

Agentic Task
TypeformHubSpotSlackSalesOperationsLead EnrichmentNotifications & AlertsEmail Automation
PromptCreate

I want an agent workflow that qualifies every inbound Typeform lead, files them in HubSpot, and pings my sales channel in Slack with a ready-to-send opener for the ones worth chasing.

Trigger: a webhook from Typeform that fires when a new response is submitted to my lead-capture form.

When a submission comes in, the agent should do the following:

1. Sanity check first. Before touching HubSpot or Slack, inspect the payload and drop the response if any of these are true: required fields are empty, the email is missing or obviously fake (no @, role addresses like info@ or test@, free-mail patterns paired with gibberish company names), or the answers look like a test submission (single-character entries, all the same letter, the word "test" in multiple fields). If we drop it, stop the workflow there and log a short reason for me.

2. Pull the full Typeform response. Call Typeform "Retrieve Responses" with the response token from the webhook so the agent has every answer, not just the webhook preview.

3. Score fit. Reason about industry, role seniority, and company size signals in the answers and assign a fit score from 1 to 5. Starter rubric I can tune later: 5 = director or above at a clear ICP company (mid-market or enterprise, target industry), 3 to 4 = manager-level or smaller company in a target industry, 1 to 2 = student, personal use, agency reseller, or out-of-ICP industry.

4. Score intent. Read urgency cues, budget mentions, and open-text replies and assign an intent score from 1 to 5. Starter rubric: 5 = explicit timeline within 30 days plus stated budget or named tool they want to replace, 3 to 4 = clear pain or use case but no timeline or budget yet, 1 to 2 = browsing, vague "just curious", or asked about pricing only with no context.

5. Assign a tier and write a rationale. Combine the two scores: hot = both 4 or 5, warm = either one is 4 or 5 and the other is 3 or above, cold = anything else. Write a one-paragraph rationale that names the specific answers that drove the call (e.g. "VP at a 500-person logistics company, mentioned migrating off Workato by end of Q3").

6. Draft a short personalized first-touch email body. 3 to 5 sentences, conversational, referencing the actual answers the lead gave (not a generic template). Sign-off should be a placeholder like "{rep name}" so the rep can drop in their own. Do not include a subject line or signature block.

7. Create or update the HubSpot contact. Call HubSpot "Create Contact" with the parsed fields: email, first name, last name, company, phone if provided, and a notes property containing the rationale. Set the lifecycle stage based on tier: hot = Sales Qualified Lead, warm = Marketing Qualified Lead, cold = Subscriber (with the "nurture" lifecycle if my account uses that). If the email already exists in HubSpot, update the existing contact instead of creating a duplicate.

8. Create a HubSpot deal at the right pipeline stage. Call HubSpot "Create Deal" associated with the new contact. Deal name = "{Company} - inbound lead". Pipeline = my default sales pipeline. Stage by tier: hot = "Qualified to buy" or the equivalent active stage, warm = "Appointment scheduled" or my first active stage, cold = the earliest nurture stage in the pipeline. Include the rationale as a deal note or description property.

9. Route to Slack only for hot and warm. For cold leads, stop here. The HubSpot record is enough and the sales channel should not light up for nurture-stage leads.

10. For hot and warm leads, call Slack "Send a Message" to my #sales channel. The message should include: a one-line headline with the tier as an emoji (hot = fire, warm = sun) plus name, title, and company; the one-paragraph rationale; the drafted first-touch email body in a code block or quote block so a rep can copy it cleanly; and a link to the HubSpot contact record and deal.

Edge cases and nuance:

- If any single step fails (HubSpot rate-limited, Slack channel archived, contact create returns a duplicate error), continue the rest of the workflow and surface the failure in the Slack message so I know what to retry manually.

- Never paste the full Typeform payload into Slack. Only the rationale, the drafted opener, and the links.

- The Typeform answers can include hidden fields like UTM source. If they're present, include the source in the Slack headline (e.g. "hot lead from paid-search").

What does this prompt do?

  • Reads every new Typeform response and drops empty or test submissions before anything else runs.
  • Scores each lead on fit (industry, seniority, company size) and intent (urgency, budget signals, open-text replies), then assigns a hot, warm, or cold tier with a one-paragraph rationale.
  • Files the contact in HubSpot and opens a deal at the right pipeline stage by tier. Cold leads land silently with a nurture lifecycle stage so they don't crowd your sales channel.
  • Posts hot and warm leads to Slack with the rationale and a personalized first-touch email already drafted, so a rep can react in one click.

What do I need to use this?

  • A Typeform account with the lead form you want to qualify.
  • A HubSpot account where contacts and deals should be created, plus the pipeline you want new deals to land in.
  • A Slack workspace and the sales channel where hot and warm leads should be announced.

How can I customize it?

  • Edit the fit and intent rubric in plain English to match how your team actually qualifies leads.
  • Map each tier to your own HubSpot pipeline and deal stage, so hot leads can jump straight to a discovery stage if you want.
  • Tune the Slack rules. Change the channel, mute warm leads, or only ping for opportunities above a certain estimated deal size.

FAQs

What happens to cold leads?
They still land in HubSpot with a nurture lifecycle stage so marketing can pick them up later, but they don't ping Slack. Your sales channel only sees the leads worth chasing today.
How does the agent draft the first-touch email?
It reads the actual Typeform answers and writes a short, specific opener that references what the lead said about their use case, urgency, or company. A rep can send it as-is or tweak it before hitting reply.
Will this work with HubSpot Free?
Yes. Creating contacts, creating deals, and choosing a pipeline stage all work on HubSpot Free. If you upgrade later, the same workflow keeps running.
How do you stop test submissions from cluttering my CRM?
Before any HubSpot or Slack step runs, the agent checks for empty answers and obvious test patterns like blank email, role addresses, or gibberish company names, and drops the response.
Can I change which Slack channel gets the alerts?
Yes. Pick any channel your Slack account can post to. You can also split hot and warm leads into different channels, or only post for hot.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App
Chat quality review board for LiveChat support leads

Score last week's finished live chats against one rubric, let an AI grader draft the notes with quotes, and send coaching straight to the agent.

LiveChat
Slack
General Input Database
App
A searchable RFP answer library your bid team drafts from

Every proposal you have ever submitted in one searchable archive, with the closest past answers lined up against each question in a new RFP.

General Input Storage
General Input Database
Mistral AI
+2
App

Stop triaging Typeform leads by hand.

Connect Typeform, HubSpot, and Slack once, and every new response gets scored, filed, and surfaced with a ready-to-send opener in seconds.