# Enrich and score new NocoDB leads before sales sees them

> Every new row in your NocoDB leads table gets researched, scored against your ideal customer, and pushed to HubSpot when it is worth a call.

- Workflow type: agent
- Services: NocoDB, HubSpot, Slack
- Categories: Sales, Operations
- Published: 2026-08-07

## What it does

- Watches your NocoDB leads table and starts working the moment a new row appears, before anyone on your team opens it.
- Researches the company behind the lead from whatever the row gives you: a company name, a website, or just the domain in an email address.
- Writes the industry, company size, a fit score and a one-line rationale straight back onto the same row, so the table becomes the qualified list.
- Adds strong leads to HubSpot with the fit score saved on the contact, and pings your sales channel in Slack only when the score is high.

## What you'll need

- A NocoDB base with a leads table, and permission to add a webhook to that table
- Columns on the table for industry, company size, fit score and rationale (add them first if they are not there yet)
- A HubSpot account where new contacts can be created, plus a property to hold the fit score
- A Slack workspace and the channel your sales team actually watches
- A short description of your ideal customer: sectors, company size, region, and anything that makes a lead a good one

## Prompt

When a new row is added to my NocoDB leads table, enrich and qualify it before anyone on my team touches it. Use a webhook trigger so this runs immediately on each new record.

Trigger setup: NocoDB sends outgoing webhooks natively. In NocoDB, open the leads table, go to Table > Details > Webhooks, add a webhook on the After Insert (record created) event, and point it at this workflow's webhook URL. The incoming payload carries the newly created row, including its record id and field values. Tell me the webhook URL to paste into NocoDB when the workflow is set up, and ask me for my base id and table id if you need them for the write back step.

Step 1, decide whether the row is workable. Read the incoming record and look for anything that identifies the company: a company name, a website URL, or the domain of a work email address. If none of those are present, or the only email is a free consumer address such as gmail.com, outlook.com or yahoo.com with no other company signal, stop there. Do not guess, do not write anything back, and do not create a HubSpot contact. Leave the row untouched so a human can look at it.

Step 2, research the company. Starting from whatever identifier the row gave you, work out what the company actually does, what industry it operates in, and roughly how many employees it has. Read the company's own website where you can find it. Prefer the company's own pages over third party summaries. Keep the research proportionate: you are qualifying a lead, not writing a report.

Step 3, score the fit. Score the lead from 0 to 100 against my ideal customer profile. Ask me to describe my ideal customer during setup, covering the sectors I sell to, the company sizes that work, the regions I cover, and any obvious disqualifiers, and bake that description into the workflow so the scoring is consistent every run. Along with the score, write a single sentence of rationale that says why the score is what it is, in plain language a rep can read in two seconds. Something like "Mid sized UK logistics firm, 200 staff, runs its own fleet, strong match for our routing product." Never write a rationale longer than one sentence.

Step 4, write the results back to the same row. Use the NocoDB Update Table Records operation, targeting the record id that came in on the webhook, and fill in the industry, company size, fit score and rationale columns. Do not create a new row and do not touch any other record. If one of those columns does not exist yet, tell me which one is missing rather than silently dropping the value.

Step 5, push qualified leads to the CRM. Only when the fit score clears my threshold, use the HubSpot Create Contact operation to add the lead to HubSpot, mapping across the email, first and last name, company and website from the row, and storing the fit score on a HubSpot contact property so it is visible and filterable in the CRM. Ask me during setup which threshold to use, defaulting to 70, and which HubSpot property should hold the score. Leads below the threshold are scored and written back to NocoDB but are not sent to HubSpot at all, so the CRM does not fill up with unqualified rows.

Step 6, alert sales only when it matters. Use the Slack Send a Message operation to post to my sales channel only when the fit score is high, at or above the same threshold. The message should name the company, give the score, quote the one line rationale, and include the website and the contact's email so a rep can act without opening anything else. Do not post anything for low or mid scoring leads. The whole point is that the channel stays quiet unless the lead is genuinely worth a look, so the team trusts the ping.

If research fails for a row, for example the website is unreachable, still write back what you do know and set the rationale to say the research was inconclusive, rather than leaving the row half filled with no explanation. Process one record per webhook delivery and keep the whole run fast enough that the row is enriched before anyone opens the table.

## How to customize

- Move the score threshold up or down to control how much reaches HubSpot and how often Slack gets pinged.
- Rewrite the ideal customer description in your own words, and the scoring follows it without any other changes.
- Change which columns get filled in, or add your own, such as headquarters location or a suggested owner.
- Send the alert to a different Slack channel, or keep Slack for only the very best leads and let the rest sit in NocoDB.

## FAQ

### Can NocoDB really tell us the second a new lead lands?

Yes. Every NocoDB table has a built-in notification setting under Table > Details > Webhooks. Add one for the After Insert event and point it at this workflow, and each new record starts the enrichment within seconds. It works the same on NocoDB Cloud and on a self-hosted install.

### What if the new row only has an email address and nothing else?

That is usually enough. The company domain in a work email is a strong starting point for research. If the row has nothing identifying at all, or the email is a personal address like Gmail, the workflow leaves the row alone rather than inventing an answer.

### Does every lead get pushed into HubSpot?

No, and that is the point. Only leads that clear your fit score threshold are created in HubSpot, so your CRM stays clean instead of filling up with raw list rows nobody qualified.

### Will this fill our Slack channel with noise?

Only high scoring leads trigger a Slack message. Weak and average leads are still scored and written back to NocoDB, they just do not interrupt anyone. That is what keeps the team trusting the ping.

### What happens to the leads that do not score well?

They stay in NocoDB with their industry, company size, score and rationale filled in. Nothing is deleted, so you can still filter or sort the table later and work the middle of the list when you have capacity.

Use this prompt in General Input: https://www.generalinput.com/prompts/enrich-and-score-new-nocodb-leads-before-sales-sees-them