Marketing-Sourced Pipeline: How to Track It Without a RevOps Team
Your CEO asks it in a hallway on a Tuesday: what share of pipeline did marketing source last quarter? Somewhere between your CRM, your analytics, a spreadsheet, and four campaign names nobody standardized, an answer exists. You do not have a RevOps person to assemble it.
Worth knowing before you panic: marketing sourced pipeline does not require an attribution platform, a data warehouse, or a headcount req. It takes five decisions and two standard CRM fields: HubSpot’s Original Traffic Source, a default contact property, and Salesforce’s Primary Campaign Source, a standard opportunity field defined, in Salesforce’s wording, “only for those organizations that have the campaign feature Campaigns enabled.” This post is the setup work - the method that produces a number you can defend in a room full of people who would enjoy disputing it.
Two companion posts bracket this one. The marketing-sourced pipeline benchmarks post tells you what number is normal for your motion; the marketing report for the board post tells you how to present it. This one is how to produce it. Every vendor behavior below was checked on July 29, 2026.
Sourced vs influenced: the definition table your CEO will accept
Most sourced-versus-influenced arguments go nowhere because both sides argue from principle. The fast way to end one is to quote the systems you already pay for, because your CRM has already picked a definition and written it into a field.
| Convention | How it defines the source | What it credits | Where the definition comes from |
|---|---|---|---|
| Marketing-sourced, ZoomInfo’s definition | Marketing generated the initial lead | First touch, binary: the deal is marketing’s or it is not | ZoomInfo |
| Marketing-influenced, ZoomInfo’s definition | Marketing touched the opportunity but did not originate it | Multi-touch, shared credit | ZoomInfo |
| HubSpot Original Traffic Source | ”The first known web source through which a contact interacted with your business” | One of nine source values, set automatically at the contact level | HubSpot Knowledge Base |
| Salesforce Primary Campaign Source | The single campaign marked primary on the opportunity | 100% of the attribution to that one campaign | Salesforce Help |
| Forrester’s objection | Single-touch credit no longer reflects the journey | Recommends replacing sourcing with revenue lift | Forrester |
Two things fall out of that table. First, sourced is first touch and both major CRMs already agree: HubSpot ships a first-known-source field by default, and Salesforce’s default Customizable Campaign Influence model, Primary Campaign Source, “assigns 100% influence to the campaign noted in the Primary Campaign Source field on an opportunity”. You are not inventing a convention; you are naming the one your stack already runs on.
Second, the metric is flawed and you should say so before someone else does. Forrester reported sourcing metrics on 47% of B2B marketing leadership dashboards in 2020, down from 70% in 2015, with buyers averaging 27 interactions per journey. Crediting one of 27 touches with a whole opportunity is a convention, not a measurement. Report it anyway, because the room expects it, but state the method. What the number should be is a separate question, and the ranges live in the benchmarks post.
The five-step setup without RevOps
Everything in this section is work you do in your own systems: your links, your CRM fields, your reporting rules. No tool does it for you, including ours. That is the honest frame, and it is also why this is an afternoon rather than a quarter.
Step 1: Write the definition down in one paragraph
Before you touch a field, write the rule in plain language and get sales to nod at it: an opportunity is marketing-sourced when the primary contact’s first recorded touch was a marketing-owned channel, measured on [field], with the campaign recorded in [field]. One paragraph, dated, in the same doc as your other reporting definitions. Every dispute you will have next quarter is a definitional dispute wearing a data costume.
Step 2: Tag every link with the same three parameters
Google is the standard here and it is short. Per Google Analytics Help, you “should always use utm_source, utm_medium, and utm_campaign,” where source is the referrer (google, newsletter4), medium is the marketing medium (cpc, banner, email), and campaign is the product, slogan or promo code. utm_id is recommended, utm_term and utm_content are optional, and Google notes that utm_creative_format and utm_marketing_tactic “aren’t currently reported in Google Analytics properties.” Follow those definitions literally: medium is the channel type, source is the referrer. Teams that stuff the tactic into medium (“webinar”, “nurture”) break their own reporting fast, because medium is the axis every downstream system groups by.
On HubSpot, use the tracking URL builder rather than hand-typing. It requires a campaign name plus utm_campaign and utm_source, and carries one caveat worth pinning to the wall: the destination “can be the URL of any page with the HubSpot tracking code installed.” Point a tracked link at an untracked page and the visit does not report. HubSpot also auto-generates a unique campaign UTM value per campaign, so reuse it rather than minting a parallel scheme.
Step 3: Pick the one field that carries first touch
One field. Not three, and not a blend.
In HubSpot it is Original Traffic Source, a default contact property HubSpot sets automatically. Its nine values are Organic search, Paid search, Email marketing, Organic social, Paid social, Referrals, AI Referrals, Other campaigns, and Direct traffic, per HubSpot’s documentation. The Other campaigns drill-down is derived from the utm_campaign parameter in the URL, which is exactly why step 2 comes first. HubSpot has also deprecated the Offline sources value in favor of the Record Source property, which covers imports, the mobile app and integrations - read that field rather than forcing those contacts into a traffic source. (AI Referrals is the newest value on that list. Analytics tools describe their own AI buckets separately: GA4’s AI Assistant channel excludes AI Overviews and AI Mode and scatters single-source traffic, and we pulled GA4’s side apart in tracking AI traffic in GA4.)
In Salesforce it is the campaign marked as Primary Campaign Source on the opportunity - under the hood, the standard Opportunity.CampaignId lookup, documented in the Salesforce Object Reference only as “ID of a related Campaign” and defined “only for those organizations that have the campaign feature Campaigns enabled.” Salesforce’s help is explicit that “only one campaign in a related list can be marked as the primary campaign source, because it allocates 100% of the attribution to the selected campaign.” That is your sourced field, and with Campaigns on it costs nothing to start using today.
Check your lead conversion mapping while you are in there. Salesforce maps standard fields automatically on conversion - Lead Source flows to Account Source and to Lead Source on the contact and opportunity - but “if you use custom fields, your admin specifies the fields that they map to.” Unmapped custom source fields are the most common reason a sourced number evaporates at the conversion boundary.
Step 4: Freeze the rule for what counts as a touch
In Salesforce this is a real decision. CampaignMember represents the relationship between a campaign and a lead or contact, its Status field “controls the HasResponded flag on this object” (read-only, so you cannot set it directly), and FirstRespondedDate marks when a member first reached a Responded status. Salesforce also notes that “Campaign Influence considers every campaign member, regardless of their member status.”
So your campaign member statuses are your definition of a marketing touch, and influence models will count members who never responded to anything. Pick which statuses count, write them into the step 1 paragraph, and stop changing them mid-year. A flawed rule applied consistently produces a real trend; a good rule that keeps moving produces nothing.
Step 5: Attach the dollars
Group opportunity amount by the field from step 3, filtered to opportunities created in the period: an opportunity report grouped by Primary Campaign Source in Salesforce; in HubSpot, a custom report built from deals and their associated contacts, since Original Traffic Source is a contact property. Sum, divide by total pipeline created, and you have a sourced percentage with a reproducible recipe under it.
GA4 cannot be your system of record for this. Google states that “the first click, linear, time decay, and position-based attribution models are no longer available as of November 2023” - GA4 now offers three models, none of them first touch. GA4’s key event lookback window tops out at 90 days for non-acquisition key events (30 days for acquisition events), while Dreamdata’s 2022 GTM benchmarks measured an average B2B SaaS journey of 233 days and 34 touches from a sample of 414 accounts - one vendor’s dataset, so treat the figure as directional. The shape is the point: the window expires long before the deal does. GA4’s user-scoped “First user” dimensions do persist, but they are tied to a browser, not a person.
Reading pipeline from your CRM once the fields exist
Here is the part nobody tells first marketing leaders, and it is why this feels like a RevOps problem when it is not.
HubSpot’s packaged attribution reports are gated above where most Series A and B teams sit. Per HubSpot, attribution reports require Marketing Hub or Content Hub Professional or Enterprise, and the deal-create and revenue attribution report types are Marketing Hub Enterprise only. On Professional you get contact-create attribution and nothing further down the funnel. That sounds like a wall until you notice you never needed the packaged report: Original Traffic Source is a default property, and HubSpot’s custom report builder (Professional and Enterprise) analyzes “a primary data source with related objects or data sources,” which is how you build the rollup: deals as the primary source, their associated contacts alongside. You assemble it by hand rather than pulling a packaged report, and it gets you a defensible sourced number with no upgrade.
If you do have the attribution reports, HubSpot’s First Interaction model “attributes 100% of the contact credits to the contact’s first interaction in the conversion path” - that is your sourced view. The rest on that page (U-shaped at 40/40/20, W-shaped at 30/30/30 with the rest spread across the other interactions, Full path, Time decay with a 7-day half-life) are influenced views. W-shaped appears only in the deal-create and revenue reports and Full path only in the revenue reports, both Enterprise-only report types. Do not mix the two views on one slide.
Salesforce is the same story in different clothes. Reporting opportunities by Primary Campaign Source needs no setup at all. Customizable Campaign Influence, which unlocks the richer models, has to be deliberately turned on: it is available in Professional, Enterprise, Performance, Unlimited and Developer editions and requires a Sales Cloud, Service Cloud or CRM User permission set license plus the Customize Application permission. An admin conversation, not an engineering project - but still a conversation, so start with the standard field. Five documented traps in the CRM plumbing to know before you build on any of it:
| Trap | What actually happens | Source |
|---|---|---|
| Hand-editing HubSpot’s original source | The value can be changed manually, but “if you change a record’s traffic source, the drill-down properties will be cleared” | HubSpot |
| Writing campaign influence via the API | ”Records added to the Primary Campaign Source model via the API are deleted when the model is recalculated” | Salesforce Object Reference |
| Deactivating a model to tidy up | Deactivating a model deletes its campaign influence records | Salesforce Object Reference (CampaignInfluenceModel) |
| Adding contacts to campaigns late | Auto-association “ignores contacts who are added to campaigns after the related opportunity is created” | Salesforce Help |
| Expecting credit after the deal closes | ”After an opportunity’s stage is closed (won or lost), influence records are no longer created” | Salesforce Help |
One reporting caveat rather than a trap: HubSpot’s attribution reporting applies sampling on high-interaction records, processing up to 100,000 interactions per deal so outliers do not skew results.
And the caveat that holds this section together: everything above is a modeled layer. UTM parameters, a first-touch field, an influence model - conventions applied to a journey your systems only partly saw. Not a reason to skip them; a reason to know what they are, which is the argument in traced attribution vs modeled attribution.
Message-level attribution: linking dollars to the exact send
Underneath the modeled layer sits a smaller, harder number: the pipeline you can point at a specific record for. Not “email sourced 34% of pipeline” but “this message went to this person on this date, they replied, and that thread became this deal.”
That is the slice Marqeable covers, and the scope is narrow on purpose. Our revenue attribution ties dollars to the exact message for campaigns and journeys sent through Marqeable - SMS and email - with SMS replies landing in the conversations inbox so the thread stays intact instead of scattering into personal inboxes. The dollars are linked to the exact message that produced the reply, so the receipt exists whether or not anyone tagged a link.
What it is not, because this is where marketing tools usually overstate:
- It does not build your UTM parameters or set them on your links.
- It does not write back to HubSpot’s Original Traffic Source or Salesforce’s campaign influence objects. CRM integration is audience sync coming in, not attribution going out.
- It does not read your opportunity or closed-won data, connect to GA4, or run multi-touch models across ads, content and events.
- It measures its own sends. Your paid, organic, event and partner touches are yours to instrument with the five steps above.
So the practical arrangement is two layers: a modeled first-touch layer you maintain in your CRM, covering everything and approximately right, and a traced floor underneath it covering the conversations you hold receipts for, smaller and exactly right. Report both, labeled. The board conversation goes better when you volunteer the gap than when someone else finds it.
What to show the board and what to leave out
The board report post covers the format in full, so this is only the measurement half of that page.
Show pipeline dollars generated, absolute, against target - harder to argue with than a share of credit, and it is what the market reports. Per the Benchmarkit B2B marketing benchmarks, pipeline generated is the top marketing metric at 62%, ahead of opportunities generated (51%) and new ARR bookings (36%). Then the sourced percentage with its method in one sentence (“first touch, measured on Original Traffic Source, frozen since April”). Then the traced floor, with receipts you can open in the meeting.
Leave out:
- Influenced numbers presented as sourced. Influenced is always the bigger number. Show it if you want, labeled, on its own line.
- The methodology lecture. State the method in a sentence; keep the reasoning in an appendix.
- Any number you cannot reproduce next quarter. A one-off export with a dozen judgment calls in it will not survive the follow-up question three months from now.
- GA4 screenshots as pipeline evidence. Traffic sources are not opportunities, and given the lookback limits above, GA4 was never going to remember the touch that started a 233-day deal.
Two prerequisites, because this does not work in a vacuum. Opportunity amounts have to be populated at creation, or a sourced-pipeline dollar figure has nothing to sum. And in Salesforce, someone in sales has to add contact roles to opportunities: campaign influence records join campaign members to deals through fields including OpportunityContactRoleId, so no contact roles means no influence records, however clean your UTMs are.
There is also a point where a human takes this over. Once the taxonomy is set, somebody owns it: approving campaign names, catching medium drift, deciding what a new channel maps to. Budget an hour a month for it, and it is the difference between a method that holds for a year and one that quietly rots by Q4. Not a RevOps hire. Just a named person.
Frequently asked questions
How do you track marketing-sourced pipeline without a RevOps team?
Write the definition down, tag every link with a consistent utm_source, utm_medium and utm_campaign, pick the one CRM field that carries first touch (HubSpot’s Original Traffic Source or Salesforce’s Primary Campaign Source on the opportunity), freeze the rule for what counts as a marketing touch, then group opportunity amounts by that field. Both are standard fields rather than add-ons, and Salesforce documents its opportunity campaign field as defined only in orgs that have Campaigns enabled, so no attribution platform or extra headcount is required.
Which CRM field carries marketing-sourced pipeline?
In HubSpot it is Original Traffic Source, which HubSpot defines as the first known web source through which a contact interacted with your business. In Salesforce it is the campaign marked as Primary Campaign Source on the opportunity, stored in the standard Opportunity.CampaignId field. Salesforce’s campaign influence documentation states that only one campaign can be marked primary because it allocates 100% of the attribution to the selected campaign.
Can you report marketing-sourced pipeline in HubSpot without Enterprise?
Yes, but not with HubSpot’s deal or revenue attribution reports - HubSpot documents those as Marketing Hub Enterprise only. On Professional you have contact-create attribution plus the custom report builder, which HubSpot documents as analyzing a primary data source with related objects, so the practical route is a report built from deals and their associated contacts, where Original Traffic Source lives. It is a manual rollup rather than a packaged attribution report.
Can GA4 tell you marketing-sourced pipeline?
No. Google removed the first click, linear, time decay and position-based models from GA4 as of November 2023, and GA4’s lookback window for non-acquisition key events tops out at 90 days while B2B SaaS journeys run far longer. GA4 is useful for traffic sources, but first touch has to live on a CRM record that does not expire.
The bottom line
Marketing-sourced pipeline looks like a RevOps project and is actually five decisions and two standard fields. Write the definition, tag links to Google’s three required parameters, put first touch in Original Traffic Source or Primary Campaign Source, freeze what counts as a touch, and group opportunity amounts by it. That gets you a modeled number that is approximately right and reproducible every quarter. Underneath it, keep a traced floor of the sends you hold receipts for, and report both with labels. The ranges that say whether your number is any good are in the benchmarks post; the slide that carries it is in the board report. The method in between takes an afternoon, and nobody else can build it for you.
See it live: Marqeable’s revenue attribution links dollars to the exact message for the campaigns and journeys it sends, SMS replies land in the conversations inbox so the thread stays intact, and the AI website chat answers buyer questions and captures leads on the pages your tracked links point at.
Marqeable runs your campaigns, answers every visitor, text, and email in seconds, and turns them into booked jobs and meetings - even at 9pm on a Saturday. We’re in private beta with a small early cohort. Get early access
