Knowing how to set up lead scoring in Salesforce comes down to four pieces: a Number field for the score, a Text Area field for its reason, the inputs the score reads, and a record-triggered flow that acts on it. The fields take minutes to create. Inputs are where most setups go wrong, because a Lead holds a title, a company, and an industry, while the signals that predict a sale sit in billing, support, and your product.
This guide fills those signals in, scores the list with AI or a formula, and writes the result back to the Lead.
To follow along on your own org, connect Salesforce to a free workspace and pull a few Leads in.
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
Three native options come up when you search for this.
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 comes with Sales Cloud Einstein, which costs extra on Enterprise Edition, and it can only learn from what is already on the record. The edition, history, and setup it needs are in the Salesforce AI lead scoring guide.
Account Engagement scoring and grading applies if your marketing team runs it (it used to be called Pardot). Each prospect gets a score that adds points for activity, such as form fills and page views, and a letter grade for how well the profile matches your target. Both sync to the Lead, so they can feed your own score like any other field.
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.
Einstein and formula fields read fields on the Lead, Contact, or Account object, and Account Engagement adds web and email activity on top. None of them sees billing, support tickets, or product usage. That constraint is the reason most Salesforce lead scoring models disappoint. The model is rarely the problem. The inputs are.
How to set up lead scoring in Salesforce for fit and timing
A score answers two different questions, and it helps to keep them apart. Fit asks whether this company and this person look like your best customers. Timing asks whether they are doing something right now.
Salesforce's own Trailhead module on lead qualification makes the same split: a score puts points on a prospect's activities, and a grade says how well their information fits your ideal customer.
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, on both the fit side and the timing side, 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 |
The subscription and plan rows are fit. The login, feature, and ticket rows are timing, and they go stale within weeks.
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: scores without reasons are probably on their way out across the whole category. A bare number nobody can explain gets ignored, and in a few years an unexplained score in a CRM may read the way an unsourced statistic does today. Anyway.
How to set up lead scoring in Salesforce with fields, AI, and a flow
The build runs in Oneprofile. For the concepts behind the weights, our guide to lead scoring models covers the taxonomy. Everything below is mechanics.
1. Connect Salesforce and pull your leads in. Authenticate via OAuth and pull Lead or Contact records in, ready to enrich. Nothing writes back yet.
2. Fill the gaps with waterfall enrichment. Add enrichment for the firmographics and contact data your list is missing; the Salesforce data enrichment guide covers that setup in full. The waterfall asks data sources one at a time, most accurate first, and stops at the first one that returns an answer. You see the credit cost before the run starts, and a lookup that no data source can answer costs nothing.
3. Add the signals from your own systems. This is the step the table above points at. Connect Stripe and bring in each customer's plan, price, and subscription status. Do the same with Zendesk or Intercom for ticket counts, and with Postgres or PostHog for last login and features activated. Oneprofile has 142 integrations, and the ones that read data in put your own systems' figures next to the third-party data.
4. Score every lead with AI. Add an agent and describe what a good lead looks like for you: which signals matter, what disqualifies, what your best customers had in common. Or start from the built-in ICP scorer, which judges each lead against the ideal customer profile in your business context and returns a band (strong, possible, or poor), a fit score from 0 to 100, and the facts behind it. It charges 3 credits for each lead it answers. Keep a copy of it and you can add your billing, support, and usage inputs. Every lead is scored on its own against that description. Sort by the score and the list is ranked.
5. Write scores back to Salesforce custom fields. Map the score and reason to Lead_Score__c and Score_Reason__c on Lead and Contact. Create both fields in Object Manager once, a Number and a Text Area, because the export writes only to fields that already exist. After you add them, click Refresh in the export editor so they appear under Destination fields. Pick Update records as the action: a lead with no match is skipped, so the export never creates a Lead.
6. Verify, then schedule. Open a Lead and confirm the score and reason populated. Put the enrichment and the scoring agent on a refresh schedule, and run the export after each refresh so the new scores reach the record. 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.
Flow is where the score starts doing work. Because the export saves a new value to Lead_Score__c, a record-triggered flow can watch that field and act when it crosses your threshold, for example by assigning the Lead to a queue or creating a task for its owner.
Lead scoring formula examples for Salesforce fields
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, here is a lead scoring formula Salesforce can evaluate directly, with Last_Login__c as a Date field. Split it in two, so fit and timing stay readable:
A third formula field that adds the two gives you one number for list views, and the parts stay visible beside it. For the status picklist, reuse the values Stripe already documents for a subscription's status, such as active, past_due, and canceled, so the mapping from billing is one to one.
Formula fields recalculate on every record read, so the number is current the moment a synced input changes. The catch is that nothing is saved when it moves, so a record-triggered flow never hears about a formula score crossing your threshold. Route on the exported AI score, or on another field the export writes.
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. Whichever lead scoring model Salesforce ends up running, it reads the same fields. 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 several people at one company usually share the decision, so a Lead-level score tells you who is interested without telling you whether the company is worth the pursuit. The rollup uses the same approach, one level up:
Pull the Account records in, so each company is one entry.
Add the account-level inputs: what the company pays, from billing, active users in the last 28 days from the product database, open tickets across all contacts from the support desk.
Run the same AI scoring pass over the account list and write
Account_Score__cand its reason to the Account object.
A 50-employee account paying $4,000 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. If you want to write the profile before you score anything, scoring accounts against your ICP walks through it.
How to set up lead scoring in Salesforce so reps trust it
Most lead scoring best practices Salesforce teams pass around come down to one idea: a rep has to be able to see why a lead scored what it did. Once scores are live, these are the habits that keep them honest:
Give the outside fit score its own field. An AI score built from data the org does not hold belongs in
Lead_Score__c, separate from any formula field, so nobody mistakes one for the other.Always write the reason. A score with a reason next to it gets argued with, which is the point. A bare number gets ignored.
Preview before you push. In the export editor, Test on these rows shows what a real run would create or update and writes nothing.
Never let a rerun blank a field. Keep Change mapped fields only as the write mode and turn on Skip empty values, so a lead with no new answer keeps its old one.
Decide what blank means. On a formula field, Salesforce asks whether blank fields count as zero. Pick deliberately, or a lead with no login data quietly scores the same as one that logged in a month ago.
Put the threshold in a flow. A cut-off that lives in a rep's head moves every quarter. One in a record-triggered flow moves only when someone edits it.
The free plan covers three integrations, Salesforce among them, plus three tables of up to 100 rows each and 200 credits a month, 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 Team plan, from $20 a month, lifts the integration cap for every billing, support, and product source, and takes tables to 10,000 rows each. If your motion is product-led, the same setup powers product qualified lead identification too. Get started free and read the reasons on your first 100 leads.

