The moment it happens
Qualify WhatsApp leads and alert sales about hot ones
New WhatsApp enquiries are asked a few qualifying questions, scored, and hot leads are posted to your sales channel straight away.
- Runs
- The moment it happens
- Apps
- Slack, WhatsApp Business
- AI
- Yes, uses the built-in AI allowance
- Access
- whatsapp_business_messaging; chat:write
Send this to your assistant
Create a ClickRuntime automation: when someone new messages our WhatsApp number, ask them three qualifying questions one at a time, score their answers, and post hot leads to #sales in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Ads and website buttons that open WhatsApp bring in plenty of enquiries, but many are tyre-kickers. Sales reps spend hours chatting to people who were never going to buy while serious buyers wait.
Asking a few qualifying questions automatically, scoring the answers and alerting sales only about the promising ones means reps spend their time where it counts and hot leads are contacted while they're still keen.
What you get out of it
Reps talk to buyers
Only qualified leads reach the sales channel. Less time on chats that go nowhere.
Hot leads contacted fast
A promising lead is in Slack the moment the last answer arrives.
Every lead asked the same questions
Qualifying is consistent, whoever would have picked up the chat.
Answers saved for the call
The Slack post includes their answers, so the rep starts the call informed.
How it works
What happens, step by step
A new contact messages your WhatsApp number.
They're asked your qualifying questions one at a time, and each answer is remembered.
After the last answer, AI scores the lead against your description of a good fit.
Hot leads are posted to your sales channel in Slack with their answers, and everyone gets a thank-you.
Before it runs live
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- Connect WhatsApp Business
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Google Sheets
- Combine it with other Slack and WhatsApp Business steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, notify, state, ai
QUESTIONS = ["What are you looking for?", "Roughly what budget do you have in mind?", "When would you like to start?"]
WA = "https://graph.facebook.com/v20.0/your-phone-number-id/messages"
def wa(to, text):
http.post(WA, headers={"Authorization": f"Bearer {credentials.secret('WHATSAPP_TOKEN')}"},
json={"messaging_product": "whatsapp", "to": to, "type": "text", "text": {"body": text}}).raise_for_status()
def incoming(event):
changes = [c for e in (event.json or {}).get("entry", []) for c in e.get("changes", [])]
return [(m["from"], m["text"]["body"]) for c in changes for m in c["value"].get("messages", []) if m.get("type") == "text"]
@on_event
def handle(event):
for phone, text in incoming(event):
lead = state.get(f"lead:{phone}") or {"answers": [], "done": False}
if lead["done"]:
continue
lead["answers"].append(text)
step = len(lead["answers"]) - 1
if step < len(QUESTIONS):
wa(phone, QUESTIONS[step])
else:
qa = "\n".join(f"{q} {a}" for q, a in zip(QUESTIONS, lead["answers"][1:]))
score = ai.generate(qa, system="Score this lead 1-10 for a B2B design agency. Reply with the number only.", max_output_tokens=5).text.strip()
if score.isdigit() and int(score) >= 7:
notify.slack(f":fire: Hot WhatsApp lead +{phone} (score {score})\n{qa}", channel="#sales")
wa(phone, "Thanks! We'll be in touch shortly.")
lead["done"] = True
state.set(f"lead:{phone}", lead)
return {"ok": True}FAQ
Common questions
Which questions are asked?
What makes a lead hot?
What happens to lower-scored leads?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Answer WhatsApp support questions and escalate to Slack
Customers get instant answers on WhatsApp, and anything the bot isn't confident about is posted to Slack for a person to pick up.
See how it worksShare sales call summaries in Slack and on WhatsApp
After each call, a summary with next steps is posted to your sales channel and sent to the rep on WhatsApp.
See how it worksSend system alerts to Slack and the on-call phone
When something breaks, the team sees it in Slack and the person on call gets a WhatsApp message, without repeats.
See how it worksKeep exploring
Set up “Qualify WhatsApp leads and alert sales about hot ones” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.