Lead scoring is one of those features marketing buys, configures once, and never revisits. Six months later, the MQL count is meaningless because every email opener crosses the threshold. Here is the model that holds and the tuning ritual that keeps it sharp.
Scoring model: behavioral plus demographic
Two axes. Behavioral score from engagement (opens, clicks, page visits, content downloads). Demographic score from fit (title, company size, industry). MQL = behavioral over X AND demographic over Y. Either one alone produces noise.
Behavioral starter weights
Email open: 1
Email click: 5
Pricing page visit: 15
Demo request page visit: 25
Webinar attendance: 20
Whitepaper download: 10
Negative: 30+ days no engagement: -10
Negative: unsubscribed: -50
Demographic starter weights
Title contains "VP", "Director", "Head": 15
Title contains "Manager": 10
Title contains "Coordinator", "Analyst": 5
Company size 50-500: 15
Company size 500-5000: 25
Company size 5000+: 20 (often slower buyers, lower urgency)
Industry in target list: 10
Free email domain (gmail, yahoo): -20
Decay matters
Behavioral score must decay or every contact eventually crosses MQL. Apply -2 per week of zero engagement. After 12 weeks dormant, behavioral score halves. Configure under Marketing Automation, Lead Scoring, Decay Settings.
MQL threshold: data-driven, not gut
After running scoring for 60 days, pull all leads that converted to opportunity. Find the 75th percentile of their score at MQL handoff. That is your threshold. Most teams set it too high and starve the AE pod, or too low and drown them.
Push to CRM at MQL
When score crosses threshold, push to CRM with score history. Do not just hand off the current number; AE wants to know “is this score climbing or peaking?”
if(lead.score >= mqlThreshold && lead.crm_lead_id == null)
{
crmLead = zoho.crm.createRecord("Leads", {
"First_Name":lead.first_name,"Last_Name":lead.last_name,"Email":lead.email,
"Company":lead.company,"Title":lead.title,
"MA_Score":lead.score,"MA_Score_Trend":computeTrend(lead.score_history),
"Lead_Source":"Marketing Automation"
});
zoho.cliq.postToUser(assignAE(lead), "New MQL: " + lead.email + " (score " + lead.score + ", trend " + trend + ")");
}
SLA on the AE side
MQL handoff is a contract. AE acts within 24 hours: outreach attempt, disposition (working, not interested, bad fit), or back to nurture. Track first-touch time per AE; below-target reps need a coaching conversation, not punishment.
Monthly tune ritual
First Friday of every month, marketing ops pulls:
- MQLs created this month
- MQLs that converted to opportunity (success rate)
- MQLs disposed as bad fit (signal of model overshoot)
- AE first-touch time and disposition
Adjust weights based on what AE feedback says is wrong with the score. Pricing page visit not predictive? Lower its weight. Title “Director” too noisy? Tighten the picklist.
Account-level vs lead-level scoring
For ABM motions, account score (sum/avg of lead scores in the account, plus account-level signals) often matters more than individual lead score. Build both, route based on whichever crosses threshold first.
Negative scoring is underused
Most teams only add positive signals. Job changes (LinkedIn webhook), competitor email click, support escalation, pricing-page-then-30-days-silence. All real negative signals. Use them.
Zero-score leads are not all bad
A lead at score 0 might just be cold. Run a quarterly re-engagement campaign on dormant scores; the click pattern resurfaces real intent.
What to do this week: pull the 75th percentile of converted MQLs, set your threshold there, and book the monthly tune as a recurring meeting. The model degrades the day you stop touching it.