Skip to content

The moment it happens

Classify Smartlead replies and flag the interested ones

Every reply is read and labelled, and only the interested leads are posted for you.

Runs
The moment it happens
Apps
Smartlead
AI
Yes, uses the built-in AI allowance
Access
API key

Send this to your assistant

Create a ClickRuntime automation: read each new Smartlead reply and label it interested, out of office or unsubscribe. Post the interested ones to #pipeline in Slack with the lead's email, campaign and reply.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A cold-email campaign in Smartlead can bring in hundreds of replies a week, and most of them are not what you hoped for: out-of-office messages, unsubscribe requests, "not now" and wrong-person forwards. Hidden among them is a handful of "yes, send me a quote". Sorting them by hand means reading everything in the master inbox, and the interested prospect waits for hours while a rep clears the junk. A warm lead cools quickly when nobody answers.

When a reply arrives, Smartlead sends it to ClickRuntime as a webhook. ClickRuntime's built-in AI reads the text and labels it, for example interested, not interested, out of office, unsubscribe or wrong person, and only the interested ones are posted to Slack with the prospect, company, campaign and the reply itself. The others are left in the inbox.

Outbound teams and agencies that run several campaigns for clients will find it most useful.

What you get out of it

  • Interested prospects get a fast answer

    A positive reply surfaces in Slack within seconds, so a rep can respond while the prospect is still at their desk. Speed to reply is a major factor in whether a meeting is booked. Fast replies also signal to the prospect that your company is organized and responsive.

  • Reps stop sorting junk

    Out-of-office notes, unsubscribes and bounces are sorted away automatically. Salespeople see only the replies that need a person, and the time saved goes to writing better follow-ups. Reading hundreds of automatic replies is the least motivating part of outbound work, and it disappears.

  • Unsubscribe requests are noticed

    Classifying opt-outs as their own category means they are recognized and honored promptly, which protects sender reputation and reduces the risk of spam complaints that damage deliverability. Handled promptly, they also keep you on the right side of anti-spam rules.

  • Agencies can report on quality

    Counting interested replies per campaign shows which messaging works. An agency can show a client concrete numbers and adjust copy, rather than reporting only on sends and opens. That makes renewals easier, because the proof of value is plain.

  • Coverage continues outside working hours

    Replies that arrive overnight or at weekends are still classified, and interested ones wait in the channel at the top, ready for the first person to start the day. No one needs to check a phone in the evening to keep leads from going stale.

How it works

What happens, step by step

  1. When a lead replies to one of your Smartlead campaigns, Smartlead sends the reply to ClickRuntime straight away.

  2. AI reads the reply and labels it interested, out of office, unsubscribe or other.

  3. Only interested replies are posted to #pipeline in Slack, with the lead's email, the campaign and the first part of their message. Everything else is left alone.

Before it runs live

  • Connect Smartlead
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Classify Smartlead replies and flag the interested onesjust nowSucceeded
Slack · #pipelineInterested: jo@northwind.com (Ops leaders EU) > This is timely, can you share pricing?

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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 Slack
  • Combine it with other Smartlead steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
ai_reply_classification_with_slack_alert.pyexample
from clickruntime import on_event, ai, notify

LABELS = ["interested", "out of office", "unsubscribe", "other"]

@on_event
def handle(event):
    e = event.json or {}
    reply = ((e.get("reply_message") or {}).get("text") or "").strip()
    if e.get("event_type") != "EMAIL_REPLY" or not reply:
        return {"labelled": False}
    label = ai.generate(
        f"Label this reply to a sales email as one of {LABELS}.\n\n{reply}",
        json_schema={"type": "object", "properties": {"label": {"type": "string", "enum": LABELS}},
                     "required": ["label"]},
        max_output_tokens=50,
    ).json["label"]
    if label == "interested":
        notify.slack(f"Interested: {e.get('sl_lead_email')} ({e.get('campaign_name')})\n> {reply[:300]}",
                     channel="#pipeline")
    return {"label": label}

FAQ

Common questions

What categories does the AI use?
A typical set is interested, not interested, out of office, unsubscribe, wrong person and other. You can rename them or add your own, such as asking for pricing or referral, to match how your team works. The labels simply guide which replies reach Slack.
Does it reply to the prospect automatically?
No. It only classifies the reply and posts the interested ones to Slack. A human decides what to write, so nothing is sent to a prospect without a person involved. That keeps your tone and judgment in every conversation.
What if the AI labels a reply wrongly?
It can happen with short or ambiguous replies. Because interested replies are posted with the full text, a rep can correct it quickly, and borderline cases can be sent to Slack as well by lowering the bar.
What permissions does it need?
API key. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Classify Smartlead replies and flag the interested ones” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.