AI-qualify Typeform leads into HubSpot with a Slack opener

By General Input

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.

Integrations

  • Typeform
  • HubSpot
  • Slack

Type

Agentic Task

Categories

  • Sales
  • Operations

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").

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredTurn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationLusha prospecting workbench with credit-safe reveals