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.
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").
Additional information
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.
Frequently asked questions
What happens to cold leads?
How does the agent draft the first-touch email?
Will this work with HubSpot Free?
How do you stop test submissions from cluttering my CRM?
Can I change which Slack channel gets the alerts?
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.