Enrich leads
Rows → verified contact fields
Enrich leads takes a spreadsheet of businesses and, row by row, finds each one's website, a real contact email, the owner or contact name, social profiles, or a contact-form URL — every field carrying the source it came from, never invented.
How it works
Feed it a list (name, address, phone per row) and it fills in the columns a cold list is missing. For each row it collects evidence the cheap, deterministic way first — a registry lookup for identity, a couple of web searches for the business's own site and the owner's footprint, a few page fetches — then makes one focused AI pass to decide the final fields and whether each one can be trusted.
Emails are the hard part, so they are handled with care: an address is only ever captured if it literally appears in a real source, and it is tagged verified when it was confirmed in an actual page body, or unverified when it only showed up in a search snippet. Directory, vendor, and placeholder addresses are rejected, and an email that belongs to a different business than the row is thrown out. Nothing is fabricated.
It is built for scale and cost: one row is a few lookups plus a single small AI call, not an open-ended agent. The whole list comes back as one enriched CSV, and you are billed on the success curve — a small fee per run plus a premium only for the emails that come back verified, so you pay for the leads you can trust, not for every attempt.
Common use cases
Real situations where this node earns its place in a flow.
Cold outreach list
Turn a raw list of businesses into a contactable one — verified emails to send to now, unverified ones to confirm with a quick 'did I reach the right person?' note.
CRM hygiene
Append missing website, email, and owner-name fields to records you already have, with a source URL on every value so your team can trust them.
Enrich leads in a workflow
A simple example of where this node sits in a flow.
What you set up
- Put a CSV or Sheet upstream (a File upload → CSV parser, or a Google Sheet in) so the node has rows to work on.
- Map which columns hold the name, address, city, state, and phone.
- For a healthcare list, set Identity source to Healthcare to pull the owner and canonical address from the free NPI registry first.
Common questions
Will it make up an email if it can't find one?
Never. An email is only captured if it appears verbatim in a real source, and it is marked verified only when confirmed in an actual page — otherwise unverified, or left blank. Addresses from directories, software vendors, or a different business are rejected.
What if a business has no email?
It captures the official site's contact-form URL instead, and still fills in the website, contact name, and socials where it can find them.
Does it need any setup to find emails?
It needs a search provider key configured on the platform. Without it the node still runs but can only return registry-based contact names, not websites or emails.
Settings you configure on this node, stored under data.config in the workflow JSON. Leave a field unset to use its default.
verticalSet 'health' to pull the owner + canonical address from the free NPI registry (NPPES) first; 'generic' is web-search only.
Type: enum: generic | healthDefault:genericnameFieldSpreadsheet column holding each row's business name (case-insensitive).
Type: stringDefault:NameaddressFieldColumn holding the street address.
Type: stringDefault:AddresscityFieldColumn holding the city.
Type: stringDefault:CitystateFieldColumn holding the state.
Type: stringDefault:StatephoneFieldColumn holding the phone number.
Type: stringDefault:Phone
How this node appears inside a workflow's nodes[] array (the shape you see in the Developer export / import). A full workflow is { nodes: [...], edges: [...] }.
{
"id": "leads",
"type": "card",
"position": {
"x": 160,
"y": 120
},
"data": {
"type": "leads",
"kind": "processor",
"title": "Enrich leads",
"subtitle": "Rows → verified contact fields",
"config": {
"vertical": "generic",
"nameField": "Name",
"addressField": "Address",
"cityField": "City",
"stateField": "State",
"phoneField": "Phone"
}
}
}