May 21, 2026 | 7 minutes
How to automate lead data with Make and Lusha
Learn how to automatically enrich every new lead with verified contact details and firmographics, route high-fit prospects instantly, and track when past buyers change jobs. All that by using Lusha's 1.2B+ data points in Make.

The best GTM scenarios on Make run on live, verified data. Lusha adds exactly that: 1.2B+ data points processed daily, including buying signals, business emails, direct dials, firmographics, job changes, lookalike recommendations, and ICP scoring, all of it refreshed continuously and accessible through Make.
Lusha has 11 modules in Make. In this article, you will learn how to connect them, which modules do what, and how to build two workflows from scratch: one that enriches every new HubSpot lead automatically, and one that tracks when your past buyers change jobs.
What Lusha brings to your Make scenarios
Lusha is a B2B data intelligence solution used by 1M+ sales, marketing, recruiting, and revenue operations professionals.
Lusha search is the world's most comprehensive, verified, and compliant B2B dataset. Contacts, companies, and real-time signals, including job changes, promotions, funding events, and hiring surges across 300M+ profiles and 40M+ companies. Fast, accurate, and available via API — this is the foundation most enrichment and prospecting workflows run on.
Lusha’s deep intelligence data layer learns your business and builds context from your configuration, usage patterns, and integrated systems to surface your highest-value leads, score opportunities by fit and signal strength, and deliver recommendations that get sharper the more you use it.
In Make, both layers are accessible through 11 purpose-built modules. The rest of this guide shows you how to use them based on context and real-time buying signals.
Lusha’s data is available wherever builders work: in Clay, in Claude, in ChatGPT, through the API and MCP, and here in Make.
See the full module reference
Quick start: Connect Lusha to Make
In Lusha:
Sign up for free at lusha.com or log in as an admin
Click API in the top navigation bar
Click Generate Key, copy it, and store it somewhere safe
In Make:
Log in to your Make account, add the Lusha module to your scenario, and click Create a connection
In the API Key field, enter the API key you copied from your Lusha account
Click Save
The connection works across every scenario you build from here on, so you only have to do this once.
The Lusha module map
Module | What it returns | Reach for it when... |
Find a Contact | Verified email, direct dial, title, seniority, department, LinkedIn URL, company domain, Lusha ID | Enriching a single inbound lead or CRM contact in real time |
Find a Company | Headcount, revenue range, industry, sub-industry, tech stack, location | Getting firmographic context alongside a contact lookup |
Get Contact Signals | Job changes, promotions, and role updates with timestamps | Tracking champions and past buyers for outbound triggers |
Get Company Signals | Growth signals, hiring spikes, funding events, and other company-level changes | Account monitoring, ABM triggers, expansion plays |
Bulk Find Contacts | Same as Find a Contact, up to 100 records per request | CRM hygiene runs, list enrichment, batch processing |
Bulk Find Companies | Same as Find a Company, up to 100 records per request | Refreshing account data at scale, firmographic updates |
Prospecting Search | A list of contacts or companies matching your ICP filters | Building a new prospect list from scratch |
Prospecting Enrich | Full contact and company details for results from a search | Always paired with Prospecting Search as the second step |
Get Contact Recommendations | Similar contact profiles based on existing Lusha contact IDs | Expanding buying committees, finding lookalike contacts |
Get Company Recommendations | Similar companies based on existing Lusha company IDs | Expanding your TAM from closed-won accounts |
Make an API Call | Direct access to any Lusha API endpoint | Advanced use cases beyond the standard modules |
One thing worth knowing: Find a Contact is for single-record, real-time lookups. Bulk Find Contacts is for any list. Calling Find a Contact inside a loop across hundreds of records is slower and less efficient. The bulk modules exist specifically for batch work.
Make gives revenue teams the flexibility to build exactly the enrichment logic their stack needs. This comprehensive guide walks you through two real workflows built with Lusha: inbound lead enrichment that runs automatically on every new HubSpot contact, and a weekly job-change tracker that alerts reps when past buyers move to new companies.
Workflow 1: Auto-enrich every inbound lead in HubSpot
Difficulty: Beginner to intermediate
Build time: 30-45 minutes
Best for: RevOps, marketing ops, sales ops, anyone managing inbound at scale
What it solves: Leads arrive with incomplete data. Reps spend time on manual research before they can work on a record. Routing decisions get made on bad inputs.
What this scenario does
Every time a new contact is created in HubSpot (from a form, a webinar sign-up, an import, or any other source), this scenario fires instantly. It calls Lusha to retrieve verified contact details and firmographic company data, then routes the lead based on ICP fit. High-fit contacts get a Slack alert with a direct dial. Everyone else gets updated quietly.
Scenario structure:
Trigger: HubSpot - Watch Contacts (new contact)
-> Lusha - Find a Contact
-> Router
Path A (ICP match): HubSpot - Update Contact + Slack - Create Message
Path B (all others): HubSpot - Update Contact
-> Error handler: Google Sheets - Add Row (unmatched contacts)
Step-by-step build
Module 1: HubSpot - Watch Contacts
Use an instant trigger (webhook-based). This fires the moment a contact is created, not on a polling schedule. Go to trigger settings, set the event to Contact Created, and make sure email is included in the output. Email is the primary identifier Lusha resolves against.
Why email over other identifiers? Lusha can also match on LinkedIn URL or full name plus company domain and/or name, but email is the most reliable starting point for inbound leads. It is usually the one field that arrives correctly, even when the title, company, and phone number are all missing.
Module 2: Lusha - Find a Contact
Map the email field from Module 1 into the Email input here.
Lusha returns a FULL enriched profile, including COMPREHENSIVE company data. A single call is a two-for-one: you get both contact and company information together, no separate company lookup needed.
Here is what a real response looks like (about me):
{
"contact": {
"error": null,
"isCreditCharged": true,
"data": {
"firstName": "Carolina",
"lastName": "Portela",
"fullName": "Carolina Portela",
"companyId": 33222678,
"contactTags": [],
"emailAddresses": [
{
"email": "[email protected]",
"emailType": "work",
"emailConfidence": "A+"
}
],
"phoneNumbers": [],
"personId": 4389064625,
"location": {
"country": "United States",
"country_iso2": "US",
"continent": "North America",
"is_eu_contact": false,
"non_accent_country": "United States"
},
"jobTitle": {
"title": "Senior Solutions Engineer",
"departments": [
"Engineering & Technical"
],
"seniority": "Senior"
},
"socialLinks": {
"linkedin": "https://www.linkedin.com/in/carolinaportela"
},
"jobStartDate": "2022-10-17",
"previousJob": {
"company": {},
"jobTitle": {}
},
"updateDate": "2026-04-16",
"company": {
"name": "Lusha",
"description": "Lusha is the B2B data intelligence layer that keeps your GTM foundation solid. 1M+ sales, marketing, recruiting, and revenue operations professionals use Lusha to find, enrich, and act on accurate data across 300M+ profiles and 40M+ companies worldwide. Not just verified, fresh business contact details, also firmographics, funding events, technology stack, job changes, promotions, headcount shifts, and buying signals that tell you who to reach, and when.
At the deeper intel level, Lusha uses machine learning models built around your own patterns to surface the accounts that look like your best customers, score opportunities before they surface in your CRM, and generate new pipeline from signals your team would never have caught manually.
All of it is accessible wherever your stack lives: directly through Lusha, via API and MCP, or through integrations with Clay, n8n, Make, Claude, and ChatGPT.
If you're building global go-to-market automations, Lusha is certified under GDPR and CCPA, independently audited by TrustArc and ISO 27701, and validated by ePrivacyseal.
Sign-up for free. Paid plans unlock higher volume, additional signal types, and the full depth of intelligence.
"domains": {
"homepage": "lusha.com",
"email": "lusha.com"
},
"homepageUrl": "https://lusha.com",
"fqdn": "www.lusha.com",
"location": {
"city": "London",
"continent": "Europe",
"country": "United Kingdom",
"state": "England"
},
"companySize": [
201,
500
],
"revenueRange": [],
"social": {
"linkedin": "https://www.linkedin.com/company/lushadata",
"crunchbase": "https://www.crunchbase.com/organization/lusha"
},
"specialities": [
"data accuracy",
"data enrichment",
"lead discovery",
"lead generation",
"prospecting",
"sales enablement",
"sales intelligence",
"software development"
],
"technologies": [
{
"name": "amazon"
},
{
"name": "google analytics"
}
],
"funding": {
"rounds": [
{
"currency": "USD",
"roundAmount": 205000000,
"roundType": "Private Equity Round",
"roundDate": "Nov 10, 2021"
},
{
"currency": "USD",
"roundAmount": 40000000,
"roundType": "Private Equity Round",
"roundDate": "Feb 10, 2021"
}
],
"totalRounds": 2,
"totalRoundsAmount": 245000000,
"currency": "USD",
"isIpo": false,
"lastRoundType": "Private Equity Round",
"lastRoundAmount": 205000000,
"lastRoundDate": "Nov 10, 2021"
},
"intent": null,
"mainIndustry": "Technology, Information & Media",
"subIndustry": "Software Development",
"industryPrimaryGroupDetails": {
"sics": [
{
"sic": 7371,
"description": "Custom computer programming services"
}
],
"naics": [
{
"naics": 541511,
"description": "Custom Computer Programming Services"
}
]
}
}
}
}
}
(Yes, that is the author being enriched by her own product. It works.)
Store the Lusha personId as your contact identifier. Map it to a custom HubSpot property called lusha_contact_id. This is Lusha's stable identifier for this contact. It persists even if the person changes jobs, companies, or email addresses. Signal queries and bulk lookups are more accurate when you use it instead of email.
Module 3: Router
Split the flow based on Lusha's output. Adjust these thresholds to match your actual ICP. Company size comes directly from the Find a Contact response under company.companySize, so no separate company lookup is needed.
Path A (ICP fit): jobTitle.seniority = "vice president" OR "c-suite" OR "director" AND company.companySize[1] > 200
Path B (everyone else): update the record, no alert
Module 4: HubSpot - Update Contact (both paths)
Lusha field | HubSpot property | Note |
phoneNumbers[0].number | phone | Direct dial, when available |
jobTitle.title | jobtitle | |
jobTitle.seniority | custom: lusha_seniority | Create a property in HubSpot first |
jobTitle.departments[0] | custom: lusha_department | Create a property in HubSpot first |
personId | custom: lusha_contact_id | Needed for Workflow 2 |
company.name | company | |
company.companySize[1] | numberofemployees | Upper bound of the size range |
company.revenueRange | custom: lusha_revenue_range | May return an empty array |
Module 5: Slack - Create Message (Path A only)
Drop this into whatever Slack channel your team actually checks:
New ICP lead: {{firstName}} {{lastName}}
{{jobTitle.title}} at {{company.name}}
Direct dial: {{phoneNumbers[0].number}}
Seniority: {{jobTitle.seniority}} | Employees: {{company.companySize[1]}}
HubSpot: {{contactUrl}}
Workflow 2: Weekly job-change tracker for past buyers
Difficulty: Intermediate
Build time: 45-60 minutes
Best for: RevOps, sales ops, AEs managing strategic relationships
What it solves: A past buyer who moves to a new company is your highest-converting outbound target. They know the product, they are building something new, and they are evaluating tools right now. Without tracking, you miss this window entirely.
Scenario structure:
Trigger: Schedule (weekly)
-> Google Sheets - Get Rows (champion list)
-> Iterator
-> Lusha - Get Contact Signals
-> Filter: companyChange array length > 0
-> Router
Path A (VP / C-suite / Founder): Slack alert (high priority) + CRM task
Path B (all other matches): Slack alert + CRM task
-> Google Sheets - Update Row (audit log)
Step-by-step build
Module 1: Schedule trigger
Set to run weekly, every Monday morning, to catch changes from the prior week before outreach begins.
Module 2: Google Sheets - Get Rows
Your champion list is the fuel for this scenario. At a minimum, include:
Column | Purpose |
lusha_contact_id | Primary identifier for signal queries. Comes from Workflow 1. |
contact_name | Used in the Slack alert message |
previous_company | Context for the alert |
owner_email | Who the CRM task is assigned to |
last_signal_date | Updated each run to prevent re-alerting on the same signal |
Don't have Lusha contact IDs yet? Run your champion list through a one-time enrichment scenario using Find a Contact (by email or LinkedIn URL) to retrieve and store the IDs in your sheet. Signal queries are faster and more reliable with the Lusha ID than with email alone.
Module 3: Tools - Iterator
Passes each row through individually. One Lusha call per contact.
Module 4: Lusha - Get Contact Signals
Setting | Value |
Identifier type | Contact ID |
Identifier value | lusha_contact_id from your sheet |
Signals to retrieve | companyChange, promotion |
Start date | {{formatDate(addDays(now; -7); "YYYY-MM-DD")}} |
The startDate formula looks back exactly 7 days from each weekly run. You only see new signals each time it runs.
When a job change is detected, Lusha returns:
{
"companyChange": [
{
"personId": "115889",
"currentCompanyId": 8217,
"currentCompanyName": "Callaway Golf",
"currentDepartments": "R&D",
"currentSeniorityLabel": "c-suite",
"currentTitle": "Senior Manager, IT Solutions",
"signalDate": "2025-05-01",
"previousCompanyName": "Previous Corp",
"previousDomain": "nextgen.com",
"currentDomain": "vendavo.com"
}
]
}
Module 5: Filter
Condition: length(companyChange[]) > 0
Only contacts with a detected job change pass through. Everyone else is skipped, and the iterator moves to the next row.
Module 6: Router
Path A: currentSeniorityLabel = "vice president" OR "c-suite" OR "founder" -> high-priority
Path B: all other job changes -> standard alert
Module 7: Slack - Create Message
{{contact_name}} just moved.
From: {{companyChange[0].previousCompanyName}}
To: {{companyChange[0].currentTitle}} at {{companyChange[0].currentCompanyName}}
Signal date: {{companyChange[0].signalDate}} | Owner: {{owner_email}}
Path A adds: High priority: reach out within 48 hours.
Module 8: HubSpot or Salesforce - Create Task
Assign to: owner_email
Due date: {{formatDate(addDays(now; 2); "YYYY-MM-DD")}}
Description: "{{contact_name}} moved to {{companyChange[0].currentTitle}} at {{companyChange[0].currentCompanyName}}. Follow up."
Module 9: Google Sheets - Update Row
Write back:
last_signal_date = {{companyChange[0].signalDate}}
new_company = {{companyChange[0].currentCompanyName}}
new_title = {{companyChange[0].currentTitle}}
signal_type = companyChange
This keeps the sheet current and prevents duplicates next week.
Ready to build?
Both workflows are available as pre-built templates in the Make x Lusha template library. Grab the template, drop in your field mappings, and you're running in under an hour.
Sign up for Lusha for free and generate your API key
A few things that will save you time
1. Define the problem before you open the scenario builder. "Our reps spend 20 minutes manually enriching every lead before they can call" is a brief you can build from. "We should automate enrichment" is a direction that leads nowhere specific. The clearer the starting point, the faster the build.
2. Map your data model first. Know what fields you have, what fields you need, and what the scenario should do when a field comes back empty. Lusha returns null for unmatched fields within a record, and a 404 status when no record is found at all. Both need handling before production.
3. Test on real records, not placeholder data. [email protected] will not surface the edge cases that will break your scenario in production. Pull five real contacts from your CRM. The problems are already in your existing data.
4. Clone before you touch anything live. Make lets you duplicate a scenario in one click. Before editing anything running in production, clone it and add a date to the name.
5. Every alert needs an owner and a due date. A Slack message with no task assigned and no named owner is not a workflow. It fires and disappears. Decide who acts on it and by when before you build.
Lusha is an official Make partner. The Lusha app is verified and maintained by Lusha.
Ready to make the automation revolution happen?





