The moment it happens
Score leads, create Asana tasks and alert sales in Slack
Hot leads are scored on arrival, turned into Asana tasks and posted to your sales channel so someone picks them up straight away.
- Runs
- The moment it happens
- Apps
- Asana, Slack
- AI
- Yes, uses the built-in AI allowance
- Access
- Asana write; chat:write
Send this to your assistant
Create a ClickRuntime automation: give me a trigger link for leads. Score each with AI, create an Asana task for hot leads and post them to #sales.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A software company's sales team of three shares one inbox for demo requests. Everyone assumes someone else has replied, so promising leads sit for a day. Meanwhile the team spends time on requests from students and competitors doing research. The manager cannot tell which good leads were dropped until the end of the quarter.
Scoring each lead the moment it arrives, and announcing only the promising ones in Slack with a task to claim, makes it clear which leads matter and who is handling them.
What you get out of it
Hot leads get noticed in minutes
A message in #sales is hard to miss, unlike one more email in a shared inbox. Someone can respond while the prospect is still on your site.
Clear ownership
Each hot lead becomes an Asana task that one person takes. Nobody wonders whether a colleague already replied.
Less noise for the sales team
Low-scoring leads stay out of the channel. The team's attention goes to the leads most likely to buy.
A summary to act on
The Slack post and task include the score and a one-line reason. The rep knows what the prospect wants before opening the form.
A record of every hot lead
Asana keeps a list of every promising lead and what happened to it. Reviewing the pipeline at the end of the month takes minutes.
How it works
What happens, step by step
When a lead comes in through your trigger link, ClickRuntime receives their details straight away.
AI scores the lead from 1 to 10 against your description of a good customer and writes a short reason.
Leads above your threshold become Asana tasks in your sales project.
A message with the lead, score and reason is posted to #sales.
Before it runs live
- Connect Asana
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- 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 Asana and Slack steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, ai, notify
PROJECT_ID = "your-asana-project-id"
IDEAL = "Companies with 50+ staff evaluating a tool this quarter."
SCHEMA = {"type": "object", "properties": {"score": {"type": "integer"}, "reason": {"type": "string"}}, "required": ["score", "reason"]}
@on_event
def handle(event):
lead = event.json or {}
try:
r = ai.generate(f"Ideal customer: {IDEAL}\nLead: {lead.get('name')} at {lead.get('company', '')}\n{str(lead.get('message', ''))[:2000]}",
system="Score this lead 1-10 with a one-line reason.", json_schema=SCHEMA, max_output_tokens=100).json
except ai.AIError:
r = {"score": 7, "reason": "Not scored, review manually"}
if r["score"] < 7:
return {"score": r["score"], "hot": False}
task = http.post("https://app.asana.com/api/1.0/tasks", headers={"Authorization": f"Bearer {credentials.secret('ASANA_TOKEN')}"},
json={"data": {"name": f"{lead['name']} ({lead.get('company', '')}) {r['score']}/10", "notes": r["reason"], "projects": [PROJECT_ID]}}).json()["data"]
notify.slack(f"Hot lead {r['score']}/10: {lead['name']} at {lead.get('company', '')} — {r['reason']}\n{task['permalink_url']}", channel="#sales")
return {"score": r["score"], "hot": True}FAQ
Common questions
What score counts as hot?
What happens to leads below the threshold?
Can it tag a particular salesperson?
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
Turn meeting notes into Asana tasks and a Slack recap
Send your meeting notes to a link and get an Asana task for each action item, with owner and due date, plus a recap in Slack.
See how it worksSet up an Asana project and Slack channel for each new client
When a new client comes in, they get an Asana project from your template and their own Slack channel, with links posted in #clients.
See how it worksPost a daily standup from Asana to Slack
Every weekday morning, your team channel shows what each person finished yesterday, what is due today and what is overdue.
See how it worksKeep exploring
Set up “Score leads, create Asana tasks and alert sales in Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.