HubSpot lead-score and source-attribution workflow rebuild
The client's lead-scoring property already used 52 of HubSpot's 100-filter cap, leaving little room to add a rule without hitting the ceiling. We rebuilt scoring around capped, re-enrolling workflows and moved source attribution from Original Source to HubSpot's Latest Source property and Drilldown Properties.
Executive Summary
Context
An Australian telecom-infrastructure software provider ran its go-to-market inside HubSpot Marketing Hub and Sales Hub.
What We Built
We rebuilt the lead-scoring property around a workflow set gated by hidden trigger properties per form and event type, and cloned the marketing-sources workflows to write from HubSpot's Latest Source property and Drilldown Properties in place of Original Source.
Tech Stack
- HubSpot Marketing Hub
- HubSpot Sales Hub
Not a fit if you need deal or revenue-level attribution: native HubSpot reporting on this tier resolves only to the contact record, so full ROI attribution needs a Marketing Hub Enterprise upgrade before this rebuild can report against it. It also assumes an existing scoring property is close to its own filter ceiling; a property with headroom left gets more from simply adding criteria than from a full workflow rebuild.
The Challenge
The client's lead-scoring property already carried 52 of the 100 filters HubSpot allows on one property, which left almost no room for a new rule. The prior model also scored on a list-membership rule that fired only when a contact belonged to every listed segment at once. That was so rare that a media partner was scored as a high-quality lead simply because nothing else in the rule ever tripped.
Attribution had its own problem. It depended on Original Source, which HubSpot sets once at first touch and never updates. So a contact who converted months later through a different channel still reported under whatever brought them in first.
Our Approach
We audited the property first, and confirmed two real failures: the 100-filter ceiling and the AND-logic list rule. Adding more criteria would have hit that same ceiling within a few new rules, so we rebuilt scoring around a workflow set instead.
A hidden trigger property fires for each form or event type when a contact submits a TOFU, MOFU, or BOFU form, or attends a webinar, and it feeds the lead-score property directly. Accrual caps at five occurrences per action type, with re-enrolment on. A repeated action adds nothing further, while a new one keeps counting.
For attribution, we cloned the marketing-sources workflows onto lifecycle-stage changes, from Lead through MQL, SQL, and Opportunity. They pull from Latest Source and Drilldown Properties instead of Original Source. The trade-off is that a fixed first-touch record becomes a live one, so the property now shows the most recent channel rather than the first.
Impact
Attribution reflects the channel converting right now
The marketing-sources property writes from HubSpot's Latest Source property and its Drilldown Properties every time a contact advances a lifecycle stage, so the record shows whichever channel most recently touched them rather than freezing on their first visit. That let the team report on channel performance by lifecycle stage for the first time.
Lead scores resist a single loophole
Each hidden trigger property caps at five occurrences per action type before it stops feeding the lead-score property, so repeating one form fill or one webinar registration can't inflate a score past what the interaction is worth. Re-enrolment stays on, so new, different actions keep accruing real signal instead of being scored once and left static.
The scoring property has room to grow again
Rebuilding around a workflow set, instead of adding still more filters, kept the property below HubSpot's 100-filter ceiling, leaving room for new criteria later. The AND-logic list-membership rule is gone, so the property no longer spends capacity on a condition that almost never fired.
Hidden trigger properties gate each form and event type
The rebuilt workflow set is gated by a hidden trigger property for each form and event type, covering TOFU, MOFU, and BOFU form submissions and webinar attendance.
A property fires when a contact submits a TOFU, MOFU, or BOFU form, or registers for and attends a webinar, writing directly into the lead-score property instead of sharing a field with other actions. Accrual caps at five occurrences per action type, so repeating an action past that point adds no further score.
The workflow set re-enrols a contact every time a new trigger property fires, rather than scoring an action once and closing enrolment, so ongoing engagement keeps adding weight. Enrolment checks the trigger property itself, replacing the prior rule that needed every list membership to match at once.
The marketing-sources property is cloned onto workflows triggered by a lifecycle-stage change, from Lead through MQL, SQL, and Opportunity, pulling from Latest Source and Drilldown Properties instead of Original Source. It reflects the most recent touch, trading a fixed record for a live read of what is converting a contact now.
Native reporting on this HubSpot tier resolves attribution only to the contact record, not the deal or the revenue it produced, a limit that only a Marketing Hub Enterprise upgrade removes. We scoped the rebuild to be accurate within that ceiling rather than implying a revenue-attribution capability the tier doesn't support.
The lead-score property already carried 52 of the 100 filters HubSpot allows. Attribution used "Original Source", which HubSpot sets once at first touch and never updates. Now workflows score each action type through a hidden trigger property, capped at five occurrences. Each lifecycle-stage change writes Latest Source and Drilldown Properties instead.
FAQ
Each trigger property caps at five occurrences per action type before it stops adding to the lead-score property, so replaying a webinar registration or resubmitting a form past that point adds nothing further. Re-enrolment stays on for new actions, so a contact who acts differently over time keeps accruing real signal instead of being frozen.
Original Source is set once at first touch and never updates, so a contact converting through a different channel months later still reports under whatever brought them in originally. Cloning the workflows onto Latest Source and Drilldown Properties lets the record update on every lifecycle-stage change, reflecting the most recent channel.
Continue reading