Skip to main content

Definitive guide

HubSpot Lead Scoring Template: Drop-In Properties + Workflow

TR
Tom Regan·10 min read·Updated
Quick Answer
A working HubSpot lead scoring system needs 8 custom properties (Fit Score, Intent Score, Total Lead Score, Lead Tier, Last Score Update, Score Decay Pause, Routing Owner, Last High-Intent Action) and 4 workflows (Fit calculation, Intent calculation, daily recalc plus decay, and tier assignment plus routing). This is the drop-in data model we reach for across the B2B SaaS engagements we have audited. Setup is roughly 90 minutes if you have admin access. The fastest path is the Lead Scoring agent, which builds the full model with you inside your own Claude.

The 8 custom properties and 4 workflows below are the data model we reach for to run lead scoring across the B2B SaaS engagements we have audited. Copy the data model, paste the point values, and route leads on threshold. Setup is roughly 90 minutes if you have admin access. This template runs the standard Fit plus Intent model that works in any CRM, and it is the HubSpot build of the framework in the lead scoring guide.

Step 1: Create the 8 custom properties

Go to Settings, Properties, Create Property. Object: Contact. Group: "Lead Scoring" (create it if it does not exist).

PropertyInternal nameTypeRangeNotes
Fit Scorefit_scoreNumber0 to 50Sum of firmographic point values
Intent Scoreintent_scoreNumber0 to 50Sum of behavioral point values, decays
Total Lead Scoretotal_lead_scoreCalculation0 to 100Calculated: fit_score plus intent_score
Lead Tierlead_tierSingle-line textHot / Warm / Cold / DisqualifiedSet by the tier-assignment workflow
Last Score Updatelast_score_updateDateTimestampUpdated on every recalculation
Score Decay Pausescore_decay_pauseSingle checkboxtrue / falseManual override to freeze decay
Routing Ownerrouting_ownerHubSpot userUser referenceSet by the tier-assignment workflow
Last High-Intent Actionlast_high_intent_actionSingle-line textAction nameAudit trail for why they crossed threshold

Total Lead Score is a Calculation property type. Formula: fit_score + intent_score. HubSpot recalculates it whenever either input changes, so no workflow is needed for the math itself.

Step 2: Workflow #1, Fit Score on firmographic change

Enrollment trigger: a Contact property value changes, any of industry, numberofemployees, annualrevenue, or a tech_stack field.

Action sequence: for each firmographic attribute, set or copy a point value into fit_score. The allocations below are illustrative example B2B SaaS values, a starting point you should tune to your own won-deal patterns, not measured outcomes:

  • Industry matches ICP (SaaS, fintech, health-tech): plus 12 points
  • Employee count 50 to 500: plus 10 points (200 to 2,000: plus 12)
  • Annual revenue $5M to $50M: plus 10 points
  • Has a core tool in stack (for example HubSpot, Salesforce, Outreach): plus 8 points
  • Geo: US, Canada, UK, Australia: plus 5 points; EMEA non-UK: plus 3

Cap fit_score at 50. The cap is critical. Without it, an over-firmographic match (perfect industry plus perfect size plus perfect stack) can drown out intent signals.

Step 3: Workflow #2, Intent Score on behavior

Enrollment trigger: any of form submission, page view (Marketing Hub Pro or higher tracking), email engagement event, or list membership change.

Branch logic by event type (again, these are illustrative example point values, not measured lift):

  • Demo request form submit: plus 15 points, set last_high_intent_action to "demo_request"
  • Pricing page viewed 3 or more times: plus 12 points, set action to "pricing_revisit"
  • Case study downloaded: plus 10 points, set action to "case_study_dl"
  • ROI calculator completed: plus 10 points, set action to "calculator_complete"
  • Webinar attended: plus 8 points
  • 5 or more email opens (one campaign): plus 6 points
  • Blog post viewed: plus 2 points
  • Email unsubscribe: set intent_score to 0 and set lead_tier to "Disqualified"

Cap intent_score at 50. Increment, do not overwrite. Use the "Increase property value" action so concurrent events stack instead of racing.

Step 4: Workflow #3, daily recalc plus decay

Enrollment trigger: daily at midnight UTC. Filter: score_decay_pause is false AND last_high_intent_action was 7 or more days ago.

Action: multiply intent_score by 0.9. After 60 days of no high-intent action, branch: set intent_score to 0 and re-evaluate lead_tier. Update last_score_update to now() on every run. The 0.9-every-7-days figure is an illustrative default you should tune to your own sales cycle. The decay rule keeps stale "warm" leads from clogging the AE queue forever.

Decay is the most-skipped workflow and, in our experience, the most expensive omission. Why intent expires covers the math in detail.

Step 5: Workflow #4, tier assignment plus routing

Enrollment trigger: total_lead_score property value changes.

Branch logic:

  • Score 80 plus: lead_tier = "Hot", assign routing_owner to the next AE in round-robin, send a Slack alert with full context, set lifecycle stage to SQL
  • Score 60 to 79: lead_tier = "Warm", assign to the next BDR, enroll in a 24-hour qualification cadence
  • Score 40 to 59: lead_tier = "Cold", marketing nurture only, re-evaluate monthly
  • Score under 40: lead_tier = "Disqualified", suppress from outreach

The Slack alert payload should include: contact name and email, company, score breakdown (Fit / Intent / Total), the triggering action (last_high_intent_action), and a one-click link to the contact record. Without context, AEs ignore the alert. What happens after this handoff is covered in BDR queue routing from lead scores.

Routing is the gate, sequencing is the action. A lead that crosses 80 and then waits hours for a manual reply gives back a large share of its conversion potential, and that decay with delay is directional, not a guaranteed figure. Trigger outreach automatically the moment the tier-assignment workflow flips a lead to Hot, with no human handoff between the threshold cross and first touch. A signal-based sequencing tool such as Amplemarket can fire the first message on that flip. The Lead Scoring agent wires this full model, decay and routing included, with you inside your own Claude.

Common mistakes

  • Letting Fit Score uncap. An over-firmographic match (perfect industry plus perfect size plus perfect stack) drowns out intent. Cap fit at 50, period.
  • Using "Set property value" instead of "Increase property value". Concurrent behavior events race and overwrite each other. The Increase action accumulates.
  • Skipping decay. A six-month-old "warm" lead with a score of 65 that never re-engages is dead but stays in the AE queue forever. Decay is what keeps the queue honest.
  • Not logging which action crossed the threshold. Without last_high_intent_action, AEs get a Slack alert that says "this lead is Hot" with no idea what just happened. They ignore it. Always log the trigger.
  • Tying compensation to score before calibration. Do not pay AEs on tier movements until you have seen a couple of months of conversion data and confirmed your thresholds predict revenue. Bad thresholds plus comp tied to them equals AEs gaming the system.

Beyond Fit plus Intent

This template runs the standard Fit plus Intent model that works in any CRM. Once it is stable, one next evolution is a pain-first approach that weights pain signals more heavily than firmographics. That handles the case where two prospects with identical firmographics and engagement still convert at different rates. When you want the same model in a different CRM, see the Salesforce lead-scoring template.

Frequently asked questions

Which HubSpot tier do I need for this template?

Marketing Hub Professional or Sales Hub Professional at minimum. Workflow tools are gated behind the Pro tier. The custom properties themselves work on free, but you would have to recalculate scores manually without workflows. If you are on free, the template still gives you the data model, just expect more manual upkeep.

How long does the full setup take?

Roughly 90 minutes for an admin who knows HubSpot, in our experience. Property creation is around 20 minutes, the four workflows are about 15 minutes each, and routing rules plus Slack alerts add roughly 10 minutes. Add another 30 minutes for testing on a small batch before flipping the workflows live. These are directional estimates, not guarantees.

Can I run this alongside HubSpot's predictive lead scoring?

Yes, but pick one as the source of truth for routing. Predictive scoring uses HubSpot's ML model on your historical data and is largely a black box. The custom-property model in this template is rule-based and explainable. Many teams use the custom model for routing and keep predictive as a sanity check in reports.

What happens to lead scores when contacts unsubscribe or go dormant?

The decay workflow handles that. In this template Intent Score multiplies by 0.9 every 7 days of inactivity (no email opens, no page views, no form fills). After 60 days the workflow zeroes Intent Score and re-evaluates Tier. Fit Score never decays unless firmographics change, since those are static attributes. Those decay values are an illustrative default you should tune to your own sales cycle.

How do I know if my point allocations are right?

Wait about 60 days, then pull a report grouping closed-won deals by their Total Lead Score at the moment of conversion. If your top quartile of deals cluster in the high score bands, your thresholds are directionally calibrated. If closed-won is spread evenly across all score bands, your model is not predictive yet, so adjust point weights based on which firmographic and behavior signals show up in the won deals.

Run this play in your own stack

Read the guide, then install the engine.

The Artemis AI GTM Engineer prices this leak in dollars before it recommends anything, then builds the fix with you inside your own Claude. See how an agent installs and buys, or start with the free audit that prices all seven leaks.

Your go-to-market needs real systems.

Install the free AI GTM Engineer and get a full GTM audit in one session.

Free, no account Agents from $349 Run by Claude
Cookie categories