Clay logo, go to homepage
Clay GTM guide

How to Set Up Lead Scoring in Salesforce

Salesforce scores on the activity it already holds, which ranks your busiest tire-kickers above your best-fit buyer. Build the score on fit and intent instead.

June 5, 20269 min read

Salesforce will happily store a lead score. The problem is the data it scores on. A score built only on the activity already in your CRM ranks your busiest tire-kickers above your best-fit buyer. Einstein and homegrown formulas both read what Salesforce already holds: page views, email opens, form fills. That tells you who is curious, not who fits or who is in-market.

The accounts a rep should call first match your ICP and just did something that signals timing. Most of those facts are not in Salesforce until something puts them there. This is how to build a score on fit and intent, enrich what it needs, write it back to Salesforce, and route the hot leads.

Step 1: Split the score into fit and intent before you build anything

A score is two questions, not one. Does this lead look like the accounts you win, and are they showing signs of buying now? Collapse them into one number too early and you cannot tell a perfect-fit account that will never buy from a hand-raiser who never qualifies.

Fit is firmographic: industry, size, region, tech stack, the attributes that separated your closed-won deals from your closed-lost. Intent is behavioral and time-bound: a funding round, a relevant hire, a product signal, a visit to your pricing page. The two belong on separate axes, because a lead's quadrant decides the play, not just the priority.

Leads settle into fit-and-intent quadrants. Click a dot to see the inputs behind its position.

Fit (firmographic match)Intent (timing signals)

Series B fintech, 240 staff

Fit (firmographic match) 88Intent (timing signals) 84Call first
Auto-playing · click to hold

Fit and intent are two axes, not one number: a lead's quadrant tells a rep what to do, not just how urgently. The same total can mean call-now or never-work, and only the split tells them apart.

Step 2: Enrich the data the score actually needs

Salesforce can only score on what it holds, and what it holds is mostly activity. The inputs that make a score predictive live outside the CRM until you bring them in.

Pull the leads into Clay, then enrich the fit and intent inputs the score depends on. For fit: verified industry and sub-industry, employee count, revenue band, location, and tech stack. For intent: funding events, hiring signals, job changes, and product or web activity. Use a Use AI column for the judgment calls a fixed field cannot answer. The score then reflects real research instead of whatever a form happened to capture.

Use AI column — score an inbound lead on intent
You are scoring a B2B lead for intent.Inputs: {{Company}}, {{Industry}}, {{Recent news}}, {{Job postings}}, {{Funding}}.Decide whether this account shows a timing signal a seller should act on now (e.g. a relevant new hire, a funding round, an expansion, or a public project that maps to our product).Return:- yes or no- the single strongest signal in a few words- a 0-30 intent sub-scoreIf there is no real signal, return 0.

Step 3: Build the score as a Formula column

Clay has no "score this row" button, and it does not need one. Lead scoring is a Formula column: you write the weighting in plain logic and every row computes the same way.

Score fit and intent separately, then combine them so a lead needs both to reach the top tier. A simple, transparent shape: fit points plus intent points, with a floor on each so a zero on one axis caps the total. Keep the weights legible, because a score a rep cannot explain is a score a rep will not trust.

Formula column — fit + intent, then a tier
fit = (icp_industry ? 25 : 0) + (size_in_range ? 15 : 0) + (runs_target_tech ? 10 : 0)intent = (raised_funding_90d ? 20 : 0) + (hiring_buying_role ? 15 : 0) + (visited_pricing ? 15 : 0)score = (fit >= 25 && intent >= 15) ? fit + intent : min(fit + intent, 40)tier = score >= 70 ? "A" : score >= 45 ? "B" : "C"

Toggle any input to watch the score, tier, and reason recompute. Turn off both intent chips and the lead drops from A to C.

Lead score

0

Tier A

strong fit + active funding and hiring signals

Tier A: 70+ · Tier B: 45+ · Tier C: 0+

A transparent fit-plus-intent formula makes the tier and the reason for it legible, so reps trust the score and act on it.

Step 4: Write the score back to Salesforce and route on it

A score that lives in Clay helps no one. It has to land on the Salesforce record and trigger an action.

Write the score and tier to custom fields with the Update record action, keyed on the Salesforce Record ID. Because the ID points at one record, the write updates it in place and never creates a duplicate. Clay's writes cannot be undone, so test against the Salesforce Test Env first. Map only the score fields you own, so you do not touch anything a rep depends on. Then route. Assign the A-tier leads to an owner with round-robin (Standard or Weighted) and notify the rep, so a hot lead reaches a human fast.

Auto-plays score to write-back to routing. Click a node to inspect it.

1/4Score in Clay
1

Score in Clay

Formula and Use AI columns return a number and an A / B / C tier per lead

Hands to Write to Salesforce: Each lead carries a score and a tier

The score only matters once it is written to the record by ID and used to route the hot leads to a rep automatically.

Step 5: Re-score on every new signal, not just at form-fill

A score set once at form-fill is wrong within weeks. Fit barely moves, but intent decays fast, and a C-tier lead from last quarter may be your hottest account today.

Turn on auto-update so the enrichment and the formula re-run as signals change, and the score on the Salesforce record stays current. A lead that just raised a round or started hiring crosses from C to A on its own. It gets re-routed and reaches a rep while the timing still holds. Scoring once is a snapshot; re-scoring on every signal is the point.

Auto-plays one lead crossing C to B to A as signals fire. Click a month to see its score and the signal that moved it.

Good-fit inbound, initially low intent

Month 0 · Captured, no active intent

Tier C
Month 0Month 3
M0 · Captured, no active intentTier C
M1 · Visited pricingTier C
M2 · Hiring a VP of RevOpsTier B
M3 · Raised Series B, re-routed to a repTier A

Re-score trigger: a watched signal fires or a scheduled refresh runs

Intent decays, so re-scoring on every new signal is what catches a lead at the moment it becomes worth a call.

Teams that score on enriched fit and intent, then route automatically, see it in conversion.

+50%

lift in SQLs ElevenLabs saw after moving to automated, signal-based lead scoring in Clay

Read the full story

Common failure modes, and how to avoid them

Most Salesforce lead scores fail the same four ways.

  • Scoring on activity alone: Engagement stands in for fit, so your most-emailed contacts outrank your best accounts. Score fit and intent on enriched data; treat engagement as one minor input.
  • One combined number with no fit-and-intent split: A rep cannot tell why a lead is an A or what to do about it. Keep the axes separate so the tier explains itself.
  • Scoring once at form-fill and never again: The score is stale by the time a rep looks. Re-score on signals and on a schedule so tiers track reality.
  • Writing the score with the wrong action or unmapped fields: That creates duplicates or clobbers data a rep owns. Write by Record ID with the Update action and map only the score fields.

Outcomes teams report after scoring and routing leads with Clay

What teams report after scoring and routing leads with Clay

CompanyOutcomeStory
AlertMediaInbound enriched within a 5-minute SLA; webinar lead coverage 50% to 90%+Read
Recharge20% increase in opportunity conversion across campaignsRead
Hex+50% inbound win-rate from better prioritization and dataRead
Lovable+50% more qualified meetings per repRead

Score Salesforce leads on fit and intent, not activity

Enrich the inputs, build a transparent score, write it back by Record ID, and route the hot leads automatically.

Frequently asked questions

How is this different from Einstein Lead Scoring?

Einstein scores on patterns in the data Salesforce already holds, which is mostly engagement and CRM history. That misses fit and intent signals that live outside Salesforce, like a funding round or a relevant new hire. This approach enriches those inputs in Clay first, builds a transparent fit-and-intent score, then writes it back to Salesforce. You can run it alongside Einstein or in place of a homegrown formula.

Where does the score get built, in Clay or in Salesforce?

In Clay, as a Formula column. You write the weighting in plain logic so every row computes the same way and the result is explainable. Clay then writes the final score and tier to custom fields on the Salesforce record, so reps see it where they already work.

How do I write the score back without creating duplicates?

Use the Update record action keyed on the Salesforce Record ID. The ID points at exactly one record, so the write updates it in place rather than creating a copy. Map only the score and tier fields, and test against the Salesforce Test Env first, since writes cannot be undone.

Should fit and intent be one score or two?

Build them as two sub-scores, then combine them so a lead needs both to reach the top tier. Keeping the axes separate is what lets a rep see why a lead is an A and what the play is. A high-fit, low-intent account gets monitored; a high-intent, low-fit one gets nurtured, not called.

How often should the score update?

Continuously. Fit is stable, but intent decays within weeks, so a score set once at form-fill goes stale fast. Turn on auto-update so the enrichment and formula re-run as signals change. A lead that just became in-market crosses into the top tier and re-routes on its own.