Salesforce Lead Scoring: Step-by-Step Setup
Salesforce Lead Scoring: Step-by-Step Setup
Salesforce lead scoring, step by step: enrich Lead records in a table, score every lead with AI, and sync the scores and reasons back to custom fields.
No credit card required
Free 200 credits every month
Ask Salesforce how to score leads and the answer is Einstein Lead Scoring: a machine-learning model that requires Enterprise Edition, carries an add-on fee on top, and takes up to 48 hours to retrain after you feed it a new signal. This guide sets up Salesforce lead scoring a different way. Load your leads into an enrichment table, add the signals Salesforce has never seen, score the whole list with AI, and write the score and the reason back to custom fields on the Lead.
The native tooling is still worth understanding, because you will probably keep part of it running alongside.
What Salesforce lead scoring offers out of the box
Salesforce ships three scoring mechanisms.
Einstein Lead Scoring trains on your historical conversions and predicts which open Leads will convert. When the inputs are rich, it finds real patterns. It is an Enterprise add-on, and the retrain lag means a signal you add today moves scores the day after tomorrow.
Formula fields are the workhorse. Create a number field with a weighted formula and Salesforce recalculates it on every record read. No batch job, no schedule.
Scoring categories keep separate fit, engagement, and intent scores and combine them into a composite. They earn their keep when a PLG motion and a sales-led motion share one database.
All three read fields on the Lead, Contact, or Account object, and nothing else. That constraint is the reason most Salesforce lead scoring models disappoint. The model is rarely the problem. The inputs are.
The signals Salesforce lead scoring cannot see
By default a Lead record holds a title, a company, an industry, and whatever your marketing automation stamped on it. Those inputs predict conversion weakly for a SaaS business. The inputs that predict it well live in systems Salesforce never reads:
Signal | Where it lives | Example weight |
|---|---|---|
Active paid subscription | Stripe | +30 |
Enterprise plan tier | Stripe | +20 |
Logged in within 7 days | Product database | +15 |
3 or more features activated | Product analytics | +10 |
Open support ticket | Zendesk or Intercom | +5 |
Canceled subscription | Stripe | -25 |
No login in 30 days | Product database | -15 |
None of these land on a Salesforce Lead by default. Train Einstein on a record without them and it will diligently learn that job titles predict revenue, because job titles are most of what it has.
A tangent while we are here: we think scores without reasons are on their way out across the whole category. Reps ignore a bare number within a quarter of it appearing on their screen, and our bet is that in a few years an unexplained score in a CRM will read the way an unsourced statistic does today. Anyway.
Salesforce lead scoring setup: enrich, score, write back
The build takes about 30 minutes in Oneprofile. If you want the concepts behind the weights first, our guide to lead scoring covers the taxonomy. Everything below is mechanics.
1. Connect Salesforce and load leads into a table. Authenticate via OAuth and pull Lead or Contact records in. Each record becomes a row and each field becomes a column. Nothing writes back yet.
2. Fill the gaps with waterfall enrichment. Add columns for the firmographics and contact data your list is missing. The waterfall tries providers in order of cost and hit rate, cheapest first, and stops at the first match. You see the credit cost before the run starts, and rows no provider can match cost nothing.
3. Add the signals from your own systems. This is the step the table above points at. Connect Stripe and map plan tier, MRR, and subscription status into columns. Do the same with Zendesk or Intercom for ticket counts, and with Postgres or PostHog for last login and features activated. Any of Oneprofile's 127 integrations works as a table source, so your own systems sit in the same row as the provider data.
4. Score every lead with AI. Add an AI column and describe what a good lead looks like for you: which signals matter, what disqualifies, what your best customers had in common. The pass reads the whole table, so leads are ranked against each other instead of judged one at a time, and every row gets a score plus a one-sentence reason.
5. Write scores back to Salesforce custom fields. Map the score and reason columns to Lead_Score__c and Score_Reason__c on Lead and Contact. Fields that do not exist yet are created automatically with the right type. We built it that way because pre-creating fields in Object Manager was where our own early setups always stalled. Two-way Salesforce sync comes with every paid plan at $20 a month; most enrichment platforms gate Salesforce write-back to their upper tiers.
6. Verify, then schedule. Open a Lead and confirm the score and reason populated. Set the table to refresh on a schedule so the inputs stay current. One honest caveat: if your org runs validation rules or Apex triggers on Lead updates, test the write-back on a handful of records first. We cannot see your org from here.
Keep a formula field for the deterministic score
The write-back also revives the old-fashioned approach, because the enriched fields now exist on the record. Once Subscription_Status__c and Last_Login__c are populated, a formula field can weigh them directly:
Formula fields recalculate on every record read, so the number is current the moment a synced input changes. Plenty of teams run both scores: the AI score for ranking and routing, the formula for reps who want to see exactly how a number was built. When the two disagree on a lead, that disagreement is usually the most interesting list in your CRM.
Account scoring: rolling lead scores up in Salesforce
B2B deals close at the Account, and buying committees run five to seven people, so a Lead-level score tells you who is interested without telling you whether the company is worth the pursuit. The rollup is the same table pattern one level up:
Group rows by account domain so each account becomes one row.
Aggregate the inputs: total MRR, active users in the last 28 days, open tickets across all contacts.
Run the same AI scoring pass over the account rows and write
Account_Score__cand its reason to the Account object.
A 50-employee account paying $4k MRR with 12 active users outranks a 500-employee account paying $200 with one user, whatever the firmographics say. That is the point of the whole guide restated, we realize: a score is only as good as what it can see.
Try Salesforce lead scoring on your own list
The free tier covers Salesforce, three tables, and 100 rows each, which is enough to score your open Leads and check the written reasons against what your reps already believe. If the reasons hold up, the $20 plan adds the billing, support, and product sources and keeps the write-back running across the whole database. If your motion is product-led, the same table build powers product qualified lead identification too. Get started free and read the reasons on your first 100 leads.
Do I need Einstein for Salesforce lead scoring?
Can Salesforce lead scoring use data from outside Salesforce?
Will writing scores from an external tool overwrite my Salesforce data?
How much does AI lead scoring for Salesforce cost?
How often do lead scores update in Salesforce?