---
title: "Inbound leads scored by AI and answered at once by SMS"
kind: "Kit"
category: "Business"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/1c1fe569-505c-4aab-9871-a6e8597f4b26"
updated: "2026-11-12"
---

# Inbound leads scored by AI and answered at once by SMS

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that scores each new lead with an AI step, texts hot ones at once with calendar slots, alerts sales, and starts the rest on a nurture. It runs on a backend you bring.

Inbound leads scored by AI and answered at once by SMS is an n8n workflow in the Business category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-12. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow answers new leads the moment they arrive. A webhook takes a lead from a form, an ad platform or a CRM and puts it in one shape. A 24 hour check skips repeats. An AI step scores the lead. A hot lead gets a text, three open times to book, a task for sales and a Slack alert. The rest start a five day nurture. A second webhook takes voice agent call summaries. Thirty two nodes do the work, beside two sticky notes.

### Who it suits

Teams that answer leads too slowly: agencies, clinics, estate agents and B2B service firms. It also suits builders who want a blueprint for lead handling. Skip it if you have no backend or n8n nodes to stand behind the HTTP calls, since every outside system is reached that way.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Agencies | Marketing agencies | Reply to ad leads before a rival does | An agency’s ad form sends a lead, and the lead gets a text right away. |
| Healthcare | Clinics | Offer appointment slots to new enquiries | A clinic’s web form sends an enquiry, and the person receives three slots by text. |
| Real estate | Estate agents | Send hot buyers to an agent with a short deadline | A buyer enquiry scores high, and an agent gets a task due in 15 minutes. |
| B2B services | Service firms | Log every lead in the CRM and nurture the cooler ones | A cooler lead gets an email that starts a nurture sequence. |

You need a fair amount of n8n and a backend: import a file, set one address and make your systems answer nine calls. Nothing in the file states a setup time.

### Where to use it

Any n8n that can reach your backend and be reached by your forms will run it.

- n8n Cloud: import the file into a new workflow there
- Your own n8n server: the same file and steps, with webhook addresses your tools can reach
- Native nodes: swap an HTTP Request node for the n8n node of your CRM, calendar, messaging tool or Slack
- One backend: a small service of your own that answers all nine calls

### How to set it up

Download saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. The notes list the nine calls your backend must answer.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| A backend | An address that answers the nine calls in the notes, or n8n nodes in their place |
| A model | Behind \`/llm/complete\`, for the lead score and the call summary |
| Your tools | A form, ad platform or CRM to post leads, and a voice agent to post calls |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Set `base` to your backend’s address in `Config`, `Config (calls)` and `Config (errors)`. In `Config`, also set `brand` and `hot_threshold`.
3. If your backend needs a sign-in, add the credential to every HTTP Request node.
4. Point your form, ad platform or CRM at the `lead-in` webhook, and your voice agent at the `call-ended` webhook.
5. To get failure alerts, choose this workflow as the error workflow in the settings of the workflow you want watched.
6. Before you go live, try three leads: a hot one, a cool one and a repeat.

### How to use it

Post a lead to the `lead-in` webhook as JSON. The usual field names work, such as `name`, `email`, `phone`, `service` and `message`. The reply tells you the score and the route taken. Post a call summary to `call-ended` with `call_id`, `from`, `transcript` and `duration_s`.

What to change for a different result

| To change | Where |
| --- | --- |
| The hot score | \`hot\_threshold\` in \`Config\`, 70 in the file |
| The brand name | \`brand\` in \`Config\` |
| The texts | \`Offer 3 slots\`, \`Nurture: start 5-day sequence\` and \`SMS confirmation\` |
| The Slack channels | \`Slack alert to sales\` and \`Alert ops (Slack)\` |
| Your own systems | Swap any HTTP Request node for a native node |

### Example

A web form sends a lead named Sam Lee who wants a quote.

Your backend scores the lead 82, above the file’s threshold of 70. The contact is saved with the tag hot-lead, and Sam gets the AI’s drafted reply by text. Three open slots follow, a task is due in 15 minutes, and sales sees a Slack alert. The webhook answers with the score and the route taken.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A webhook is a web address that starts a run when something posts to it. Most boxes here call your backend by web address, so the workflow is the plan and your backend does the work.

**For experts.** Every rule lives in a Code or Set node and every outside call goes through `base`, so swapping a system means swapping one HTTP node.

Where to look closer

| Node | What it does | What to know |
| --- | --- | --- |
| \`Normalise + dedupe (24h)\` | A Code node that maps common field names and keeps seen contacts in the workflow’s static data | The repeat check survives only runs that a trigger starts on a published workflow |
| \`Merge lead + AI verdict\` | A Code node that marks a lead hot when the score reaches \`hot\_threshold\` | It reads the AI answer from \`output\` |
| \`Reply in \< 60 s (SMS / WhatsApp / email)\` | An HTTP Request 4.2 with \`channel\` set to \`sms\` when there is a phone, else \`email\` | It retries up to three times, and no WhatsApp channel is set |
| \`Appointment requested?\` | An If node on the call outcome \`appointment\_requested\` | It books the first slot your backend returns |
| \`Error trigger\` | Posts failures to \`\#ops-alerts\` | It runs only for workflows that name this one as their error workflow |

### Good to know

It needs your backend, and its webhooks are open.

- Your backend: nothing runs until \`base\` answers. The address in the file is a placeholder
- Open webhooks: both have no sign-in. Once the workflow is published, anyone with an address can post a lead or a call, and each one can send a message to a real phone number. Turn on authentication in the Webhook nodes
- Channels: the file never sets a WhatsApp channel. The reply goes out as \`sms\` or \`email\`, and your backend decides what \`sms\` means
- Consent: texts and emails reach real people, so check the consent and marketing rules where you operate
- Repeats: the 24 hour check lives in the workflow’s static data. n8n saves that only for runs a trigger or webhook starts on a published workflow, so a manual test does not remember earlier leads
- Retries: five nodes retry up to three times, two seconds apart, so a send that fails after it reached the lead can go out again
- Test mode: \`test\_mode\` is set in \`Config\`, but no node reads it
- Your data: lead details and call transcripts go to your backend and to the model behind it
- Credentials: the JSON holds none

## README

```markdown
# Inbound leads scored by AI and answered at once by SMS

An n8n workflow for a sales team, in three parts. A webhook takes a new lead from a form, an ad platform or a CRM. The workflow puts it in
one shape, skips repeats from the last day, scores it with an AI step and saves the contact. A hot lead gets an instant
text, three calendar slots, a task for a sales rep and a Slack alert. A cooler lead starts a five day nurture. A second
webhook takes call summaries from a voice agent, and a third part alerts you when a run fails.

Every outside system is reached through an HTTP Request node against one address, `base`. You bring a backend that answers
the calls in the table below, or you swap each HTTP Request node for the n8n node of your own system.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 32 nodes beside 2 sticky notes. It holds no credential.
- `README.md`: these notes.

## What we changed from the original copy

Mindket cut one line from the first sticky note, which pointed to a personal site. Nothing else changed. The copy
already held only placeholders: `https://api.your-company.example` as the address and `Your Business Name` as the brand.

## Before you start

- An n8n instance, on n8n Cloud or your own server. The first sticky note asks for n8n 1.100 or later.
- A backend with a model, a CRM, a calendar, a message sender and a Slack channel behind it, answering the calls below.
  Or your own n8n nodes in place of the HTTP Request nodes.

| Call | Sent | Expected back |
|---|---|---|
| POST `/llm/complete`, task `qualify_lead` | name, service, message, company, budget | `output` with `score`, `intent`, `summary`, `reply` and `next_step`, and a `usage` field |
| POST `/crm/contacts/upsert` | email, phone, name, source, service, lead_score, intent, tags | `id` and `status` |
| POST `/messages/send` | channel (`sms` or `email`), to, body, and for the nurture a `sequence` name | nothing is read |
| GET `/calendar/slots` | nothing | `slots`, a list of date and time strings |
| POST `/crm/tasks` | contact_id, title, due | nothing is read |
| POST `/alerts` | channel, text | nothing is read |
| POST `/crm/notes` | contact_id, text | nothing is read |
| POST `/llm/complete`, task `summarise_call` | transcript | `output` with `outcome`, `summary` and `follow_up` |
| POST `/calendar/book` | slot, contact, reason | `slot` |

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. Set `base` to your backend's address in all three of `Config`, `Config (calls)` and `Config (errors)`. In `Config`, also
   set `brand` and `hot_threshold`, the score from which a lead counts as hot. The file has 70.
3. If your backend needs a sign-in, add the credential to every HTTP Request node.
4. Point your form, ad platform or CRM at the `lead-in` webhook, and your voice agent at the `call-ended` webhook. Use the
   production addresses once the workflow is published.
5. For failures to reach you, choose this workflow as the error workflow in the settings of the workflow you want watched.
   `Error trigger` runs when such a workflow fails.
6. Before you go live, try three leads: a hot one, a cool one and a repeat. The file's own note advises the same.

## How a run goes

A lead arrives:

1. `Webhook: new lead (form / ad / GHL)` takes a POST on `lead-in` and answers with the output of the last node.
2. `Config` sets `base`, `test_mode`, `hot_threshold` and `brand`.
3. `Normalise + dedupe (24h)` reads the lead from common field names, such as `name`, `full_name` or `first_name` with
   `last_name`. It rejects a lead with neither an email nor a phone, and marks a repeat when the same email or phone came in
   during the last 24 hours.
4. `Not a duplicate?` sends a repeat to `Skip duplicate`, which answers with a short note.
5. `AI: qualify lead` asks your backend for a score, and `Merge lead + AI verdict` marks the lead hot when the score reaches
   `hot_threshold`.
6. `CRM: upsert contact (HubSpot / GHL)` saves the contact with the tag `hot-lead` or `nurture`, and `Attach contact id` keeps
   the id it gets back.
7. `Hot lead?` splits the path. A hot lead gets `Reply in < 60 s (SMS / WhatsApp / email)`. The reply goes
   by `sms` when there is a phone number and by `email` when there is not. Next, `Calendar: next open slots` reads the free
   times and `Offer 3 slots` sends the first three. After that, `CRM: task for sales rep (15 min SLA)` makes a task due in
   15 minutes, and `Slack alert to sales` posts to `#sales-hot-leads`.
8. A cooler lead gets `Nurture: start 5-day sequence`, an email with the sequence name `nurture-5-day`.
9. `CRM: note with AI summary` writes the AI's summary, and `Respond to webhook` answers with the lead, the score, the route
   taken and the contact id.

A call ends:

1. `Webhook: voice agent call ended (Retell / VAPI)` takes a POST on `call-ended`, and `Config (calls)` sets `base`.
2. `Parse call payload` expects `call_id`, `from`, `transcript` and `duration_s`, and rejects a call with no transcript.
3. `AI: summarise call + detect booking intent` asks your backend for an outcome, a summary and a follow-up.
4. `CRM: upsert caller` and `CRM: call summary note` save the caller and the summary.
5. `Appointment requested?` checks for the outcome `appointment_requested`. If so, `Calendar: slots`, `Book first slot` and
   `SMS confirmation` book the first free time and text the caller. `Respond (call)` closes the run either way.

A run fails: `Error trigger` passes through `Config (errors)` to `Alert ops (Slack)`, which posts to `#ops-alerts`.

## Change the look

- The hot score and the brand name: `Config`.
- The texts sent: `Reply in < 60 s (SMS / WhatsApp / email)` uses the AI's reply. `Offer 3 slots`, `Nurture: start 5-day
  sequence` and `SMS confirmation` hold their own words. The last one says "technician visit", so change it if you do not
  book visits.
- The Slack channel names: `Slack alert to sales` and `Alert ops (Slack)`.
- Your own systems: swap any HTTP Request node for the matching n8n node, such as one for HubSpot or Slack.

## Good to know

- Nothing runs until `base` answers. The address in the file is a placeholder.
- Both webhooks have no sign-in. Once the workflow is published, anyone with an address can post a lead or a call, and each
  one can send a message to a real phone number. Turn on authentication in the Webhook nodes.
- The file never sets a WhatsApp channel. The reply goes out as `sms` or `email`, and your backend decides what `sms` means.
- Texts and emails reach real people, so check the consent and marketing rules where you operate.
- The 24 hour repeat check lives in the workflow's static data. n8n saves that only for runs a trigger or webhook starts on a
  published workflow, so a manual test does not remember earlier leads.
- Five nodes retry up to three times, two seconds apart. A send that fails after it reached the lead can go out again.
- `test_mode` is set in `Config`, but no node reads it.
- Lead details and call transcripts go to your backend and to the model behind it.
- The JSON holds no credential.
```

## What is in it

3 files, 37 KB, downloaded as a zip.

```text
NOTICE.md  732 B
README.md  7 KB
workflow.json  29 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 32 steps, starting when its webhook is called or on its trigger node
- AI: No step calls an AI model
- Sign-ins: No sign-in
- API keys: No API key is left in the file
- Step types: Mindket’s checker reads all 6 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/1c1fe569-505c-4aab-9871-a6e8597f4b26)
- [Its page on Mindket](https://mindket.com/p/1c1fe569-505c-4aab-9871-a6e8597f4b26)
