We are currently rethinking the way we track marketing-generated leads in HubSpot, and we are looking for best-practice advice on how to build a scalable and accurate tracking setup across contacts, companies, and deals.
What we need:
Stakeholders want clear monthly insights into:
How many marketing leads we generate
How many net new companies come from those marketing leads
How many deals originate from those marketing leads
How many of those marketing-sourced deals eventually become customers
This means we don’t just need to count contacts — we need a complete view of how marketing leads progress across the full HubSpot object model.
Our Challenges
Right now, HubSpot can show that a deal is associated with a contact, but association alone is not enough. A contact might have been created two years ago through marketing, but the deal created today might have nothing to do with marketing efforts.
We need a way to clearly document:
When a contact becomes a marketing lead
When a company is created or influenced by that marketing lead
When a deal is created because of a new marketing lead (not just linked to someone who originally came from marketing long ago)
In other words, we need a reliable attribution mechanism so we can say:
“This specific deal exists because of this marketing lead,” not simply “this deal happens to be associated with a contact that originally came from marketing.”
What We’re Looking For
We would like advice on best-practice HubSpot architecture to track:
1. Marketing leads at the Contact level
How should we define a “Marketing Lead”?
What properties should we create?
How do we document the month a contact becomes a marketing lead?
2. Marketing leads at the Company level
How should we track companies generated from new marketing contacts?
Should this be based on workflow rollups, association logic, or dynamic lists?
What is the recommended approach to avoid double counting?
3. Marketing-originated deals
How can we reliably document that a deal was created as a direct result of a marketing lead?
What data model or workflow setup should we use so deals are attributed correctly?
How do we avoid incorrectly attributing deals to very old marketing contacts?
4. End-to-end reporting
What reports or dashboard structure would best show:
Monthly marketing contacts
Monthly marketing companies
Marketing-originated deals
Marketing-originated customers
What properties and workflow triggers should power these reports?
Our Goal
Ultimately, we want a clean, automated, scalable tracking framework that gives us accurate monthly numbers for:
Marketing contacts
Marketing companies
Marketing deals
Marketing customers
…and connects all three objects in a reliable way that stands up to stakeholder scrutiny.
If anyone has implemented this before, or has guidance on HubSpot best practices for multi-object lead tracking and deal attribution, we would really appreciate your expertise.
Dec 1, 20253:05 AM - last edited on Dec 2, 20257:58 AM by BérangèreL
Contributor | Diamond Partner
Hello @NT_ , great question — and yes, this is 100% possible in HubSpot, but you’re right that it can’t be done reliably with native source fields and associations alone. You need to introduce a time-based “marketing origin” model across Contacts, Companies, and Deals so attribution is locked at the moment something actually happens.
Here’s the cleanest way we’ve seen this implemented in the real world:
1. Marketing Leads at the Contact Level
Instead of relying on Original Source, define a true “Marketing Lead” moment.
Create these properties on Contacts:
Marketing Lead Status (Yes/No)
Marketing Lead Date (Date)
Marketing Lead Month (YYYY-MM, for reporting)
Marketing Lead Campaign / Source Type (optional but useful)
Workflow logic: When a contact meets your MQL / high-intent criteria for the first time:
Set Marketing Lead Status = Yes
Stamp Marketing Lead Date = Today
Stamp Marketing Lead Month
This gives you a clean monthly count of new marketing leads, independent of when the contact was first created.
2. Marketing Companies (Net New from Marketing)
This should be company-centric, not list-based.
Company properties:
Marketing Company Origin (Yes/No)
First Marketing Lead Date
First Marketing Lead Month
How it works:
When a contact becomes a Marketing Lead:
If their associated company does not yet have a First Marketing Lead Date → stamp it.
If the company was created from that contact → set Marketing Company Origin = Yes.
This prevents double counting and ensures each company is only ever attributed once.
3. Marketing-Originated Deals (This is the critical piece)
This is where most attribution models break — simply being associated to a marketing contact is not enough.
You need to decide at deal creation time whether the deal is truly marketing-sourced.
Deal properties:
Marketing Sourced Deal (Yes/No)
Marketing Deal Origin Date
Marketing Deal Origin Month
Primary Marketing Lead (contact reference)
Deal creation workflow (best practice): When a deal is created:
If an associated contact exists
AND that contact is a Marketing Lead
AND their Marketing Lead Date is within the last X days (e.g. 60–90 days)
→ Then:
Set Marketing Sourced Deal = Yes
Stamp Marketing Deal Origin Date & Month
Capture the Primary Marketing Lead
Otherwise, mark it as Not marketing sourced.
This is the key that allows you to confidently say:
“This deal exists because of this marketing lead.”
4. Marketing-Originated Customers
Once deals are cleanly tagged, customers are easy:
Report on:
Deals where Marketing Sourced Deal = Yes
AND Deal Stage = Closed Won
Group by Close Month
5. Monthly Reporting Structure
Once the properties and workflows are in place, your core dashboard becomes:
Monthly Marketing Leads: Contacts where Marketing Lead Month = this month
Monthly Marketing Companies: Companies where First Marketing Lead Month = this month
Marketing-Originated Deals: Deals where Marketing Sourced Deal = Yes and Marketing Deal Origin Month = this month
Marketing-Originated Customers: Closed-won deals where Marketing Sourced Deal = Yes
These numbers will now tie together across all three objects and stand up to stakeholder scrutiny.
This post was created with the assistance of AI tools.
Hi folks, great conversation! Just a reminder to please disclose if any AI tools were used to generate or modify your posts in any way as per the community guidelines.
Tom Mahon Technical Consultant | Solutions Engineer | Community Champion Baskey Digitial
Dec 1, 20253:05 AM - last edited on Dec 2, 20257:58 AM by BérangèreL
Contributor | Diamond Partner
Hello @NT_ , great question — and yes, this is 100% possible in HubSpot, but you’re right that it can’t be done reliably with native source fields and associations alone. You need to introduce a time-based “marketing origin” model across Contacts, Companies, and Deals so attribution is locked at the moment something actually happens.
Here’s the cleanest way we’ve seen this implemented in the real world:
1. Marketing Leads at the Contact Level
Instead of relying on Original Source, define a true “Marketing Lead” moment.
Create these properties on Contacts:
Marketing Lead Status (Yes/No)
Marketing Lead Date (Date)
Marketing Lead Month (YYYY-MM, for reporting)
Marketing Lead Campaign / Source Type (optional but useful)
Workflow logic: When a contact meets your MQL / high-intent criteria for the first time:
Set Marketing Lead Status = Yes
Stamp Marketing Lead Date = Today
Stamp Marketing Lead Month
This gives you a clean monthly count of new marketing leads, independent of when the contact was first created.
2. Marketing Companies (Net New from Marketing)
This should be company-centric, not list-based.
Company properties:
Marketing Company Origin (Yes/No)
First Marketing Lead Date
First Marketing Lead Month
How it works:
When a contact becomes a Marketing Lead:
If their associated company does not yet have a First Marketing Lead Date → stamp it.
If the company was created from that contact → set Marketing Company Origin = Yes.
This prevents double counting and ensures each company is only ever attributed once.
3. Marketing-Originated Deals (This is the critical piece)
This is where most attribution models break — simply being associated to a marketing contact is not enough.
You need to decide at deal creation time whether the deal is truly marketing-sourced.
Deal properties:
Marketing Sourced Deal (Yes/No)
Marketing Deal Origin Date
Marketing Deal Origin Month
Primary Marketing Lead (contact reference)
Deal creation workflow (best practice): When a deal is created:
If an associated contact exists
AND that contact is a Marketing Lead
AND their Marketing Lead Date is within the last X days (e.g. 60–90 days)
→ Then:
Set Marketing Sourced Deal = Yes
Stamp Marketing Deal Origin Date & Month
Capture the Primary Marketing Lead
Otherwise, mark it as Not marketing sourced.
This is the key that allows you to confidently say:
“This deal exists because of this marketing lead.”
4. Marketing-Originated Customers
Once deals are cleanly tagged, customers are easy:
Report on:
Deals where Marketing Sourced Deal = Yes
AND Deal Stage = Closed Won
Group by Close Month
5. Monthly Reporting Structure
Once the properties and workflows are in place, your core dashboard becomes:
Monthly Marketing Leads: Contacts where Marketing Lead Month = this month
Monthly Marketing Companies: Companies where First Marketing Lead Month = this month
Marketing-Originated Deals: Deals where Marketing Sourced Deal = Yes and Marketing Deal Origin Month = this month
Marketing-Originated Customers: Closed-won deals where Marketing Sourced Deal = Yes
These numbers will now tie together across all three objects and stand up to stakeholder scrutiny.
This post was created with the assistance of AI tools.