Enrich and score accounts on a scheduled cadence — Lusha in Salesforce Agentforce

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 Salesforce org to see live results.

CRM data decays at 30% per year. A company that had 200 employees when the account was created might have 400 now. A funding stage that was Series A is Series B. A contact who was VP of Sales is now CRO — or gone entirely. None of that shows up in Salesforce unless someone manually updates it, and nobody does.

This workflow runs a weekly enrichment pass on every account in your Salesforce org via the Lusha API. It refreshes firmographics, verifies key contacts, flags records that have gone stale, and scores accounts against your ICP with current data — so every rep, every campaign, and every AI agent running on your Salesforce data is working from a picture of your accounts that reflects reality, not history.

Requires: Lusha API key · Salesforce Flow Builder · Salesforce admin access

How it works

This workflow runs on a weekly scheduled cadence. It processes every account in your Salesforce org in batches, calls Lusha to refresh firmographic data and verify key contacts, flags records that have changed or gone stale, and updates the ICP score based on current data.

1
Trigger — Scheduled Flow runs weekly
A Scheduled Flow runs every Monday morning and queries for Account records that haven’t been enriched by Lusha in the last 30 days — or have never been enriched. Accounts enriched more recently than 30 days are skipped to avoid unnecessary credit consumption.
2
Action — Call Lusha API to refresh firmographics
For each account, the Flow calls Lusha’s /v2/companies/search endpoint 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 data changes
The Flow compares Lusha’s response against the existing Salesforce fields. Significant changes — employee count variance above 20%, funding stage change, HQ location change — are flagged on the account record and logged to a change history field. Minor updates are written silently.
4
Action — Verify primary contact for each account
For each account, the Flow verifies the primary contact via Lusha’s /v2/contacts/search endpoint. Departed contacts are flagged. Title changes are logged. The Lusha_Last_Verified__c timestamp is updated on all contacts checked regardless of outcome.
5
Action — Recalculate ICP score with current data
After firmographic refresh, the Flow recalculates the ICP score using the updated data. An account that grew from 80 to 220 employees may have crossed your ICP size threshold and moved from Medium to High fit. The score update is logged with the date so you can see when an account’s fit changed.
6
Output — Current, verified, scored account database
Every account in your Salesforce org reflects current reality. Reps, campaigns, and AI agents running on this data work from verified firmographics — not records that haven’t been touched since the deal first entered the pipeline.

What you’ll get back

After the weekly enrichment run, accounts look like this:

Account record — before weekly enrichment

Salesforce fieldValue
IndustryTechnology (manually entered, unverified)
Employees85 (entered 14 months ago)
Revenue rangeblank
Funding stageSeries A (entered 14 months ago)
Lusha ICP scoreMedium (scored 14 months ago)
Lusha enriched date14 months ago
Primary contact statusUnknown

Account record — after weekly enrichment

Salesforce fieldValue
IndustryRevenue Intelligence / SaaS ✓ Lusha verified
Employees280–320 ⚑ changed from 85
Revenue range$10M–$50M ✓ Lusha verified
Funding stageSeries B ⚑ changed from Series A
Tech stackSalesforce, Outreach, Gong
HQAustin, TX ✓ Lusha verified
Lusha ICP scoreHigh ⚑ upgraded from Medium
Lusha change logEmployees 85→280 · Funding A→B · ICP Medium→High · [date]
Lusha enriched date[today] ✓
Primary contact status✓ Confirmed in seat

Weekly enrichment summary

MetricThis week
Accounts processed142
Firmographic updates applied38
ICP score changes12 — 8 upgraded, 4 downgraded
Contacts verified142
Departures detected6
Title changes detected9
Accounts flagged for rep review14

Build it

Step 1 — Add enrichment tracking fields to the Account object

In Salesforce Setup, go to Object Manager → Account → Fields & Relationships. Add the following custom fields:

Field labelField typeAPI name
Lusha — Enriched dateDate/TimeLusha_Enriched_Date__c
Lusha — Employee countNumberLusha_Employee_Count__c
Lusha — Revenue rangeTextLusha_Revenue_Range__c
Lusha — Funding stageTextLusha_Funding_Stage__c
Lusha — Tech stackLong Text AreaLusha_Tech_Stack__c
Lusha — ICP scorePicklist (High / Medium / Low)Lusha_ICP_Score__c
Lusha — Change logLong Text AreaLusha_Change_Log__c
Lusha — Flagged for reviewCheckboxLusha_Flagged__c

Step 2 — Build the Scheduled Flow

In Salesforce Flow Builder, create a new Scheduled Flow:

  • Schedule: Weekly — Monday at 5am
  • Query: Account records where Lusha_Enriched_Date__c is null OR Lusha_Enriched_Date__c less than 30 days ago — use a formula: TODAY() - 30
  • Loop: iterate through each account in batches of 200
  • For each account: HTTP Callout to /v2/companies/search with Account.Website
  • Compare response fields to existing Salesforce fields — flag significant changes
  • Update Records: write refreshed firmographics, update ICP score, append change log
  • Second callout: /v2/contacts/search for primary contact verification
  • Decision: if significant change detected — set Lusha_Flagged__c = true for rep review
  • Save and activate

Step 3 — Build a flagged accounts list view

In Salesforce, create a new Account list view filtered by Lusha_Flagged__c = true. Add the Lusha change log and ICP score fields to the view columns. This gives reps and managers a weekly review queue — accounts where something meaningful changed and human review is warranted before the next outreach or call.

Step 4 — Set up a weekly enrichment summary report

In Salesforce Reports, create a summary report on the Account object grouped by Lusha_ICP_Score__c and filtered by Lusha_Enriched_Date__c in the last 7 days. Add columns for employee count change, funding stage, and flagged status. Schedule the report to run Monday morning after the Flow completes and email it to the RevOps team — a weekly data quality digest without any manual effort.

Step 5 — Test with a sample batch

Before activating at full scale, test the Flow on a filtered subset — accounts in a specific territory or industry. Confirm the enrichment fields populate correctly, the change log appends without overwriting, and the ICP score recalculates based on updated data. 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 Salesforce org to see live results.

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

FAQ

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

    Add a priority filter to the Scheduled Flow query. Run the first pass on accounts linked to open opportunities — these have the most immediate commercial impact. Run the second pass on accounts in your named account list or territory plan. Run the third pass on all remaining accounts. You can implement this as three separate Scheduled Flows on different days of the week — Monday for open opportunity accounts, Wednesday for named accounts, Friday for the full database. This spreads the API credit consumption across the week and ensures your highest-priority accounts are always the most current.

  • What counts as a significant change worth flagging?

    Configure your own thresholds in the Flow Decision element 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 accounts list that a RevOps manager can review in 15 minutes, not a list of every record that had any field updated.

  • How does the workflow handle accounts where Lusha doesn't have a company match?

    If Lusha returns no match for the company domain or name, the Flow writes a “no match” status to the change log and updates the Lusha_Enriched_Date__c field to today — so the account isn’t retried every week indefinitely. The existing Salesforce fields are not modified. Accounts with no Lusha match after three consecutive weekly attempts are flagged for manual review — they may need a corrected domain, a subsidiary relationship resolved, or a manual enrichment pass using the Lusha Workspace directly.

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

    Yes — build a parallel Scheduled Flow on the Contact object using the same logic. Query contacts where Lusha_Last_Verified__c is null or older than 30 days, call the contacts search endpoint for each one, and update title, seniority, and departure status. 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. Contact verification doesn’t consume additional credits beyond the contact search call — so the cost is predictable.

  • How do I handle the Salesforce governor limits when processing a large account database?

    Salesforce limits a single Scheduled Flow transaction to 200 records per batch and enforces API callout limits per transaction. For databases larger than 200 accounts, the Flow automatically processes in multiple batches — Salesforce handles the batching natively for Scheduled Flows. For very large databases of 10,000+ accounts, consider splitting the query by account segment — territory, owner, or industry — across multiple Scheduled Flows running on different days. This distributes the processing load, stays well within governor limits, and gives you segment-level visibility into which parts of your database were refreshed and when.

Ready to run this?

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