Why most HubSpot lead scoring setups stop working
HubSpot supports two scoring models. Fit scoring measures static attributes: industry, company size, job title, lifecycle stage. Engagement scoring measures behaviour: page visits, form fills, meeting bookings, email replies. Most setups use one or blend them poorly.
The mistake is weighting engagement signals equally. A contact opening a monthly digest is not the same as a contact visiting your pricing page twice in a week. HubSpot lets you weight these differently. Most portals do not.
Score inflation is the other problem. Enough positive attributes and every contact looks like a hot lead. Sales stops trusting the number, the list gets ignored, and the pipeline stalls.
This is fixable, but it requires rebuilding the scoring logic rather than tweaking the weights.
- Industry, company size, job title
- Lifecycle stage
- Changes rarely
- Tells you if a contact is in your market
- Page visits, form fills, meeting bookings
- Email replies
- Changes constantly
- Tells you if a contact is active right now
- An email open is not the same as two pricing page visits in a week
- HubSpot lets you weight these differently
- Most portals do not
- Result: score inflation, sales ignores the list, pipeline stalls
What we build for you
We set up a scoring model that separates fit from engagement, weights both deliberately, and connects the combined score directly to your handover process.
Fit scoring
Uses static properties: industry, job title, company size, lifecycle stage. These signals tell you whether a contact is in your market. They do not change often.
Engagement scoring
Uses behavioural events: page visits, form submissions, email clicks, meeting bookings, document opens. These signals tell you whether a contact is active right now. They change constantly.
Score decay
Handles the noise. A contact who visited your site six months ago should not sit at the top of the list today. HubSpot’s native negative attributes remove points over time. We configure these so the list reflects current intent, not historical activity.
Workflow triggers
Fire when a contact crosses your threshold. The workflow updates lifecycle stage to Sales Qualified Lead, enrols the contact in a sales task sequence, and notifies the assigned rep. No one checks the list manually.
Reporting
Shows score distribution and how it correlates to deal creation. If the model is inflating or deflating, the report tells you before sales does.
- WatchLow fit, high engagement
- Active but outside your ICP. Re-qualify before spending sales time.
- Hand to sales nowHigh fit, high engagement
- Crosses your SQL threshold. Lifecycle stage updates, the task sequence enrols, and the rep is notified.
- DisqualifyLow fit, low engagement
- No buying signals and outside your market. Removed from active scoring.
- NurtureHigh fit, low engagement
- In your market but not active yet. Decay rules keep the score honest until intent rises.
How we build it
We have shipped this model for Marketing Hub Professional and Enterprise portals across B2B service businesses and e-commerce. The build follows the same six steps each time.
Step 1. Audit the data first. We look at which properties are populated, which are empty, and which behavioural events are being tracked. A scoring model built on missing or inconsistent data scores the wrong things. If the data needs fixing, we say so before we build.
Step 2. Map the real buying signals. We go through your closed deals and find the behavioural patterns they share: pricing page visits, demo form fills, direct replies to nurture emails, product comparison downloads. These are the signals that get weighted. Passive engagement such as opens and unsubscribes gets negative weight.
Step 3. Configure fit and engagement as separate properties. HubSpot supports multiple scoring properties. We create a fit_score and an engagement_score separately, then combine them into a contact_score. This keeps the logic transparent and lets you adjust either dimension without rebuilding the whole model.
Step 4. Build the sales handover workflow. When contact_score hits your threshold, the workflow fires: lifecycle stage updates, the task sequence enrols, the rep is notified, and a deal is created if your process calls for it. The handover is automatic and logged.
Step 5. Configure decay rules. Negative attributes remove engagement points from contacts who have not visited your site in 60 or 90 days. The threshold depends on your sales cycle. We set it from your data, not a generic template.
Step 6. Test against historical contacts before launch. We run the model against a sample of past closed and lost deals. If the score distribution does not match what you know about your pipeline, we adjust before going live. Nothing ships untested.
- 1Audit the data firstCheck which properties are populated, which are empty, and which behavioural events are tracked. A model built on missing or inconsistent data scores the wrong things.
- 2Map the real buying signalsReview closed deals for the behavioural patterns they share: pricing page visits, demo fills, direct replies to nurture emails. Passive signals such as opens and unsubscribes get negative weight.
- 3Configure fit and engagement separatelyCreate fit_score and engagement_score as distinct properties, then combine them into contact_score. The logic stays transparent and each dimension is adjustable on its own.
- 4Build the handover workflowWhen contact_score crosses the threshold: lifecycle stage updates, the task sequence enrols, the rep is notified, and a deal is created if your process calls for it.
- 5Configure decay rulesNegative attributes remove engagement points from contacts inactive for 60 or 90 days. The threshold is set from your sales cycle, not a generic template.
- 6Test against historical contactsRun the model against a sample of past closed and lost deals. If the score distribution does not match your pipeline, adjust before go-live.
What changes after the build
Sales starts trusting the list. That is the outcome that matters: when contacts above the threshold reliably convert into opportunities, the rep dials in order of score instead of guessing.
The handover volume drops. The quality rises. Fewer MQLs cross the threshold, but more of them become deals.
Your marketing team can tune the model without calling us. Every attribute, weight and decay rule is documented in a configuration sheet we hand over at the end of the project. The scoring logic lives in your HubSpot account, not in our heads.
When contacts above the threshold reliably convert into opportunities, reps dial in order of score instead of guessing. Fewer MQLs cross the threshold, but more of them become deals. Every weight, attribute and decay rule is documented in a configuration sheet handed over at the end of the project.
Common questions
Which HubSpot tier do I need?
Basic contact scoring is available from Marketing Hub Starter upward. Engagement scoring with full behavioural events needs Marketing Hub Professional or Enterprise. We check your tier in the scoping call.
Can I use this with existing workflows?
Yes. We audit your active workflows before building anything and check for triggers that would conflict. If something would fire on newly scored contacts, we map it before go-live.
How long does the build take?
Four to six business days from kickoff to go-live, for a portal with clean data and a clear ICP. If the data needs preparing first, we scope that separately and quote it before starting.
What if the thresholds need adjusting after launch?
They usually do. We include a 30-day review where we look at the actual score-to-deal correlation and adjust weights if the distribution is off.
Does this connect to Sales Hub?
Yes. The handover workflow connects to deal creation, task sequences and rep notification. We configure it to match your sales process.