

Qualify inbound demo requests with AI and create HubSpot deals only for in target leads
Every "book a demo" request kicks off Aura. She asks the right qualifying questions, decides if the lead is in target, and only then creates a HubSpot deal and pings the AE in Slack. Wrong fit leads get a polite close. Zero SDR time wasted on the in target ones either, because Aura already pre qualified them.
Inbound demo forms generate noise. Students, competitors doing recon, agencies pitching their services, individual operators with no budget, and out of ICP companies all land in the same bucket as your real prospects. Most "book a demo" requests aren't ready to buy, but every one of them lands on a human SDR who has to do the qualifying themselves. That is the single most expensive hour of the day to waste.
Inbound lead submits the demo form. Aura opens a conversation, asks the qualifying questions (team size, current tool, use case, urgency), and produces a structured verdict. If the lead is in target, Aura creates a HubSpot deal with the conversation summary pre populated and pings the assigned AE in Slack. If the lead is not in target, Aura sends a polite "we don't think we're the right fit yet" message with a link to the free trial or self serve plan. The SDR queue only sees qualified, contextualized leads.
The Flow you'll build
This is the exact Flow as it appears in the Customerly editor. Drag it around, then follow the steps below to build it.
Step by step
- 1
Create a Flow triggered by a new demo form submission
FlowIn Customerly, go to AI Studio → Flows → New Flow. Name it
Demo qualification. Set the trigger to Customer Activity on Page and select the client event your site fires when the demo form is submitted (for exampledemo_requested). If demo requests come in through the Messenger instead, use New Conversation Started and narrow the audience to visitors on your demo page.The Flow runs the second the lead submits. There's no SDR triage in between.
textFlow nameDemo qualification - 2
Add an AI Mission that runs the qualifying conversation with the lead
AI MissionAdd an AI Mission step. Unlike a static "fill this form" qualifier, the Mission talks to the lead in chat, asks the right questions in order, handles follow ups, and produces a structured qualification verdict. This is the step BRUM used to convert 18.5% of qualified chats into paying customers.
Paste the prompt below. Aura will run the conversation and emit a JSON verdict the rest of the Flow branches on.
promptAI Mission promptYou are an SDR for Customerly, an AI customer service platform for SaaS teams. Your job is to qualify this inbound demo request through a short conversation. Be warm, conversational, and brief. Don't sound like a form. Ask, in this order, only the questions you don't already know the answer to from the form submission: 1. What is the size of your customer support team today? 2. What tool are you using for customer support right now? 3. What is the main thing you want AI to help with (resolution, qualification, routing, knowledge base, other)? 4. What is the timeline (this quarter, next quarter, just exploring)? Stop asking the moment you have a complete picture. Don't push past four questions. Then decide if the lead is IN TARGET for Customerly. The ICP is: - SaaS company (B2B or B2C SaaS) - 5+ person support, sales, or success team OR clear plans to scale support within 6 months - Currently using Intercom, Zendesk, Help Scout, Front, HubSpot Service, or has no tool yet - Has a real timeline (this quarter or next quarter) NOT in target: - Students, individual operators with no team - Direct competitors (Intercom, Zendesk, Decagon, Ada, Forethought employees) - Agencies pitching their services - "Just exploring" with no timeline AND no team size Output exactly this JSON and nothing else: { "verdict": "in_target | not_in_target", "team_size": "<answer to question 1>", "current_tool": "<answer to question 2>", "primary_use_case": "<answer to question 3>", "timeline": "<answer to question 4>", "summary": "<two sentence brief for the AE: who they are, what they need, why now>", "reason_not_in_target": "<one sentence, only if verdict is not_in_target>" } - 3
Branch on the verdict and stop wrong fit leads here
FlowAdd a Conditional step right after the Mission. Read
verdict:in_target→ continue to the HubSpot + AE notification steps below.not_in_target→ skip to the polite close step further down. No deal created. No human time burned.
textConditional rule{{mission.output.verdict}} == "in_target" - 4
Create a HubSpot deal pre populated with the qualification context
REST API blockAdd a REST API step on the
in_targetbranch. Create a HubSpot deal so the AE walks into the meeting with the qualification summary already in the CRM, not living in a separate chat log.You'll need:
- A HubSpot private app token with
crm.objects.deals.writeandcrm.objects.contacts.writescopes - The owner ID of the AE assigned to inbound demos (or use a round robin Mission to pick the right one)
- The pipeline ID and dealstage ID for your inbound new business pipeline
httpHTTP method + endpointPOST https://api.hubapi.com/crm/v3/objects/dealshttpRequest headersAuthorization: Bearer pat-eu1-XXXXXXXXX Content-Type: application/jsonjsonRequest body{ "properties": { "dealname": "Demo: {{company.name}} ({{contact.email}})", "pipeline": "default", "dealstage": "presentationscheduled", "hubspot_owner_id": "12345678", "amount": "0", "description": "{{mission.output.summary}}\n\nTeam size: {{mission.output.team_size}}\nCurrent tool: {{mission.output.current_tool}}\nUse case: {{mission.output.primary_use_case}}\nTimeline: {{mission.output.timeline}}\n\nConversation: {{conversation._url}}", "lead_source": "Customerly demo form" }, "associations": [ { "to": { "id": "{{contact.hubspot_contact_id}}" }, "types": [{ "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 3 }] } ] } - A HubSpot private app token with
- 5
Ping the AE in Slack with the qualification summary
REST API blockAdd a second REST API step on the
in_targetbranch. Slack alert to the AE with the conversation summary and a direct link to take over the chat. The AE jumps in with the lead's context already in hand.httpHTTP method + endpointPOST https://hooks.slack.com/services/T0000/B0000/XXXXXXXXXjsonRequest body{ "text": "Qualified demo: {{company.name}}", "blocks": [ { "type": "header", "text": { "type": "plain_text", "text": "Qualified inbound: {{company.name}}" } }, { "type": "section", "text": { "type": "mrkdwn", "text": "{{mission.output.summary}}" } }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Team size*\n{{mission.output.team_size}}" }, { "type": "mrkdwn", "text": "*Current tool*\n{{mission.output.current_tool}}" }, { "type": "mrkdwn", "text": "*Use case*\n{{mission.output.primary_use_case}}" }, { "type": "mrkdwn", "text": "*Timeline*\n{{mission.output.timeline}}" } ] }, { "type": "actions", "elements": [ { "type": "button", "text": { "type": "plain_text", "text": "Take over the chat" }, "url": "{{conversation._url}}" } ] } ] } - 6
Politely close the conversation for not in target leads
AuraOn the
not_in_targetbranch, add an Aura reply step (or a static Send Message step if you want exact wording). Aura politely tells the lead this isn't the right fit and offers a self serve path. No SDR time spent. No lead ghosted.textSend Message template (not_in_target branch)Thanks so much for the interest in Customerly! Based on what you shared, we don't think we're the right fit for your team right now ({{mission.output.reason_not_in_target}}). If you'd like to explore on your own, our free trial is open and self serve here: https://app.customerly.io/signup And we'll be here whenever the timing is right.
FAQ
How is this different from a regular lead scoring rule?
Lead scoring rules need fields that the lead has already filled in. Aura asks the missing questions conversationally and gets answers a static form wouldn't. That's why BRUM's variant of this Flow converts 18.5% of qualified inbound chats into paying customers.
Will Aura close real leads as not in target by mistake?
Rarely, if the ICP definition in the prompt is correct. Set the prompt's "in target" rules tightly enough to reflect your real ICP. Run it shadow mode (don't actually close the conversation) for the first week and check the verdicts. Once you trust it, turn the not in target branch live.
Can I add a calendar booking link instead of just notifying the AE in Slack?
Yes. Add a Send Message step on the in_target branch with a Calendly or HubSpot Meetings link. Aura can post the link right after the qualification, so the lead books a slot while the conversation is still warm.
Can this work with Salesforce or Pipedrive instead of HubSpot?
Yes. Swap the deal creation REST API block's endpoint and body to the target CRM's create deal/opportunity API. The Mission prompt and Slack step don't change.
Where can I see a customer running a version of this in production?
BRUM, the digital driving school, uses an on demand variant of this Flow for instructor recruitment and franchise applications. Over six months their qualification flow handled 254 conversations and generated 47 paying customers, an 18.5% conversion rate from inbound chat to closed booking.
SaaS teams running this in production
Ready to ship this recipe in your workspace?
Book a 1:1 demo and we'll build this Flow live in your Customerly account.
More AI Recipes
Auto create bug tickets in ClickUp from a Customerly conversation
Stop spending 5 minutes per bug copy pasting from chat to ClickUp. Fire one Flow and Aura collects the missing info, files the ticket, and replies in the conversation with the link.
Read the recipeCatch churn signals in support chats and loop in the CSM with full context
Customers don't churn on the day they cancel. They churn 3 months earlier, in a support chat. Aura listens for the signal, pings the CSM in Slack, and opens a renewal at risk task in HubSpot, automatically.
Read the recipeSend every new Messenger conversation to Slack in real time
Your team lives in Slack, not in another inbox tab. A two block Flow posts every new Messenger conversation to your support channel the second it starts, with a one click link back to reply.
Read the recipe