Enrich and score companies on a scheduled cadence — Lusha in HubSpot Breeze

Example outputs in this workflow are illustrative — they reflect the structure, fields, and format of real Lusha API output, but were not pulled from a live session. Build this workflow with your own Lusha API key and HubSpot portal to see live results.

HubSpot company records decay at the same rate as any other CRM data — 30% per year. A company that had 150 employees when the record was created might have 350 now. A funding stage that was Series A is Series B. A domain that was correct is now redirecting somewhere else. None of that shows up in HubSpot unless someone manually updates it — and nobody does. This workflow runs a weekly enrichment pass on every company in your HubSpot portal via the Lusha API, refreshes firmographics, verifies key contacts, flags records that have changed significantly, and rescores each company against your ICP with current data. The result is a CRM that reflects what’s actually true about your accounts today, not what was true when someone first entered the record.

Requires: Lusha API key · HubSpot Workflows (Professional or Enterprise) · HubSpot admin access

How it works

This workflow runs on a weekly scheduled cadence. It processes every company in your HubSpot portal in batches, calls Lusha to refresh firmographic data and verify key contacts, flags records that have changed significantly, and updates the ICP score based on current data.

1

Trigger — Scheduled Workflow runs every Monday at 5am

Set the enrollment trigger to “Company property — Lusha enriched date — is unknown” OR “Lusha enriched date is more than 30 days ago.” Enable re-enrollment. Companies enriched more recently than 30 days are skipped to avoid unnecessary credit consumption.

2

Action — Fire webhook to refresh company firmographics

Add a “Send a webhook” action. POST to https://api.lusha.com/v2/companies/search with the company domain or name. Lusha returns the current verified profile — industry, employee count, revenue range, funding stage, HQ location, and tech stack — refreshed from Lusha’s database as of today.

3

Action — Detect and flag significant changes

Add If/Then branches comparing Lusha’s response against existing HubSpot company properties. Employee count variance above 20%, funding stage changes, and HQ location changes are flagged by setting lusha_flagged_for_review to true and appending a note to lusha_change_log. Minor updates are written silently.

4

Action — Verify primary contact for each company

For each company, fire a second webhook to /v2/contacts/search for the primary associated contact. Departed contacts are flagged. Title changes are logged. The lusha_last_verified timestamp is updated on all contacts checked regardless of outcome.

5

Action — Recalculate ICP score with current data

After firmographic refresh, add If/Then branches to re-evaluate the ICP criteria using the updated properties. Write the new score to lusha_icp_score on the Company record. Log the score change and date to lusha_change_log so you can see when an account’s fit changed.

6

Output — Current, verified, scored company database

Every company in your HubSpot portal reflects current reality. Reps, campaigns, and Breeze agents running on this data work from verified firmographics — not records that haven’t been touched since the account first entered the CRM.

Example weekly enrichment summary

 

Weekly run results

MetricThis week
Companies processed138
Firmographic updates applied41
ICP score changes14 — 9 upgraded, 5 downgraded
Contacts verified138
Departures detected7
Companies flagged for review16

Custom properties to add to the Company object

 

Property labelTypeInternal name
Lusha — Enriched dateDate pickerlusha_enriched_date
Lusha — Employee countNumberlusha_employee_count
Lusha — Revenue rangeSingle-line textlusha_revenue_range
Lusha — Funding stageSingle-line textlusha_funding_stage
Lusha — Tech stackMulti-line textlusha_tech_stack
Lusha — ICP scoreDropdown (High / Medium / Low)lusha_icp_score
Lusha — Change logMulti-line textlusha_change_log
Lusha — Flagged for reviewSingle checkboxlusha_flagged_for_review

 

Build steps

 

1

Create the enrichment properties on the Company object

In HubSpot → Settings → Properties, add all company enrichment properties listed in the table above. These are the write targets for the webhook response mapping.

2

Build the Company-based Workflow

In HubSpot → Automation → Workflows → Create Workflow → Company-based. Set enrollment trigger to “Lusha enriched date is unknown OR is more than 30 days ago.” Enable re-enrollment. Set schedule to run every Monday at 5am.

3

Add the company enrichment webhook

Add action → Send a webhook. POST to https://api.lusha.com/v2/companies/search. Request body: { "name": "{{company.name}}" } or use the domain if available: { "domain": "{{company.domain}}" }. Add header api_key: YOUR_LUSHA_API_KEY.

4

Map response fields and detect significant changes

Add “Set property value” actions to write refreshed firmographics to the Company record. Add If/Then branches for significant change detection — employee count variance above 20%, funding stage change, HQ change. Flag the company for review and append to the change log on any significant change path.

5

Add the contact verification webhook

Add a second webhook to /v2/contacts/search for the primary associated contact. Map the response to update contact title and status. Flag departures and log the new company. Update lusha_last_verified on the contact regardless of outcome.

6

Add ICP rescoring branches

After the firmographic update, add If/Then branches that re-evaluate the ICP criteria using the updated property values. Write the new ICP score to lusha_icp_score and append the change to lusha_change_log with today’s date.

7

Create a flagged companies list view

In HubSpot → Companies → Create view. Filter by lusha_flagged_for_review = true. Add lusha_change_log and lusha_icp_score as visible columns. This gives your team a weekly review queue — companies where something meaningful changed and human review is warranted before the next outreach or call.

8

Test with a sample batch

Before activating at full scale, add an additional enrollment filter limiting to companies in a specific industry or owner. Confirm the enrichment fields populate correctly, the change log appends without overwriting, and the ICP score recalculates. Full troubleshooting guidance at docs.lusha.com/guides.

Example outputs in this workflow are illustrative — they reflect the structure, fields, and format of real Lusha API output, but were not pulled from a live session. Build this workflow with your own Lusha API key and HubSpot portal to see live results.

Built by: Lusha
Time to build: 45 min
Difficulty: Medium
Tools: HubSpot, Lusha
Type: Template

FAQ

  • How do I prioritize which companies to enrich first if I have a large database?

    Add a priority filter to the enrollment trigger. Run the first pass on companies associated with open deals — these have the most immediate commercial impact. Run the second pass on companies in your target account list or named account view. Run the third pass on all remaining companies. You can implement this as three separate Company-based Workflows with different enrollment filters running on different days of the week — Monday for open deal companies, Wednesday for named accounts, Friday for the full database. This spreads the API credit consumption across the week and ensures your highest-priority companies are always the most current.

  • What counts as a significant change worth flagging?

    Configure your own thresholds in the If/Then branch conditions based on what matters for your ICP and sales motion. A good starting framework: flag if employee count changes by more than 20% in either direction, flag if funding stage changes, flag if ICP score changes, and flag if the primary contact departs. Minor changes — HQ city update, small headcount variance, tech stack additions — can be written silently without flagging. The goal is a flagged companies view that a RevOps manager can review in 15 minutes, not a list of every company that had any field updated.

  • How does this workflow interact with HubSpot’s native company enrichment?

    HubSpot offers its own company enrichment via the Data Quality tools on Professional and Enterprise plans — it pulls data from Clearbit. This workflow uses Lusha’s verified B2B database instead, which is independently sourced and updated on a different cadence. The two can coexist — use Lusha’s enrichment for the ICP scoring properties, buying signal data, and contact verification, and let HubSpot’s native enrichment handle standard firmographic fields like company description and social profiles. If you want Lusha data to take precedence on shared fields like employee count and industry, set the “Set property value” action to always overwrite rather than only update empty fields.

  • Can I run this on Contact records as well as Company records?

    Yes — build a parallel Company-based Workflow that loops through the primary associated contact for each company and verifies them via the contacts search endpoint. For most teams, running contact verification weekly on monitored contacts from Workflow 3 and monthly on the full contact database strikes the right balance between data freshness and credit consumption. Alternatively, add the contact verification step directly to this Workflow as a second webhook action after the company enrichment — the same enrollment trigger covers both company and primary contact in one pass.

  • How do I handle companies where Lusha doesn’t return a match?

    Add an If/Then branch after the webhook action that checks whether the response is empty. If Lusha returns no match, write a “No Lusha match” note to <code>lusha_change_log</code> and set <code>lusha_enriched_date</code> to today — so the company isn’t retried every week indefinitely. Companies with no Lusha match after three consecutive weekly attempts should be flagged for manual review — they may need a corrected domain, a subsidiary relationship resolved, or a manual enrichment pass using the Lusha Workspace directly. No credits are consumed for a no-match result.

Ready to run this?

Connect once, run anywhere. Works in Claude, ChatGPT, n8n, Clay, or any agent connected to Lusha.