All posts
May 6, 2026·12 min read

Primary Campaign Source vs Campaign Influence: a practical guide for AE users

Primary Campaign Source is a single field; Campaign Influence is a junction object. They measure different things and report wildly different numbers. Practical guide to data-model differences, when to use which, and how to use both correctly.

Primary Campaign Source vs Campaign Influence is the most consequential reporting decision a Salesforce-based marketing team makes, and the one most often made by accident. Primary Campaign Source (PCS) is a single field on the Opportunity object — Opportunity.CampaignId — that pins one campaign per deal as the source. Campaign Influence is a junction object (CampaignInfluence) that distributes credit across every campaign every contact role on the deal touched. They measure different things, sit on different objects, behave differently on data ingestion, and produce wildly different revenue numbers from the same Salesforce data. This guide explains the data-model differences, the five practical implications, and the workflow that uses both correctly.

What each one is, in one paragraph

Primary Campaign Source is a lookup field on the Opportunity object pointing at a Campaign record. It captures the marketing campaign that originated the opportunity — the lead source on the deal level, the equivalent of writing "this came from the Q2 webinar" on the deal record. One opportunity, one PCS, no ambiguity. It's set when the opportunity is created — usually by the lead-conversion process if there's a campaign on the lead, manually by the SDR otherwise. It's the foundation of every "marketing-sourced pipeline" report Salesforce ships out of the box.

Campaign Influence is a junction object that connects a Campaign to an Opportunity, with a Influence percentage indicating how much credit the campaign gets for the deal. One opportunity can have many CampaignInfluence records — one per campaign that any contact role on the deal touched within an attribution window. Salesforce auto-creates these records when contact roles are added to the opportunity, against a configurable Campaign Influence Model (First Touch, Last Touch, Even, or Custom). The percentages add up to 100% per opportunity, which means the more campaigns influenced the deal, the smaller each one's slice.

Same source data, different reporting question. PCS answers "What sourced this deal?". Campaign Influence answers "Which campaigns touched this deal, and how much credit does each get?"

The data-model differences that matter

PCS is a field; CIA is a junction object

This is the single most important distinction.

PCS lives directly on the Opportunity record. To find every opportunity sourced by a campaign you query:

SELECT Id, Name, Amount FROM Opportunity WHERE CampaignId = :campaignId

One table. One filter. One row per deal.

Campaign Influence is a separate object (CampaignInfluence) with foreign keys to both Campaign and Opportunity. To find every opportunity influenced by a campaign you query:

SELECT Opportunity.Id, Opportunity.Amount, Influence
FROM CampaignInfluence
WHERE CampaignId = :campaignId

Two tables in the join. Multiple CampaignInfluence rows per opportunity. The same opportunity appears in your result set N times — once per campaign that influenced it.

This shape difference cascades into every downstream report and analysis. PCS-based reports are simple — one row per opportunity, the standard pipeline-marketing dashboards work out of the box. Campaign-Influence-based reports require aggregation logic, attribution-model awareness, and care about double-counting. Most BI dashboards quietly get this wrong.

PCS is set once; CIA recalculates on contact-role change

PCS is a single write that happens at opportunity creation. After that, it's static unless someone manually edits the field. The history of changes lives in field-tracking, not in a transaction log.

Campaign Influence is recalculated by Salesforce whenever a contact role is added, removed, or modified on an opportunity. Salesforce runs the Campaign Influence Model logic against the new contact-role set, generates CampaignInfluence records for every campaign every contact role touched within the attribution window, and deletes any records that no longer apply.

That recalculation is an asynchronous job. It runs on a queue. In high-volume orgs it can lag the opportunity update by minutes or hours. Reports built on CampaignInfluence immediately after a deal-team change can show stale data — pre-update credit, post-update opportunity stage. PCS-based reports don't have this problem because the field is on the same object and updates atomically.

PCS depends on the lead-conversion path; CIA depends on contact-role completeness

PCS gets set automatically when a lead with a campaign converts to an opportunity. The lead's most-recent campaign (or the campaign on the converting lead source field) becomes the opportunity's PCS. If the opportunity is created from scratch — a sales rep clicks "+ New Opportunity" without a converted lead — PCS is null unless someone manually sets it.

This is why most B2B orgs have 20–40% null PCS on their opportunity table. Sales-sourced deals (where the conversation started in outbound) skip the lead-conversion path entirely.

Campaign Influence depends on something different: OpportunityContactRole. CIA records are generated from contact-role campaign-membership joins. If a deal has zero contact roles assigned (sales rep doesn't add them), CIA produces zero influence records — the deal is invisible in influenced-pipeline reports. If a deal has contact roles but those contacts have no CampaignMember history, CIA also produces zero records — the contacts converted from a non-marketing source.

So PCS missing data correlates with sales-sourced deals; CIA missing data correlates with contact-role hygiene. Different fixes. The PCS audit pattern (finding null-PCS opportunities and back-filling them) won't fix CIA gaps; the contact-role hygiene fix won't fix PCS gaps.

PCS is one campaign; CIA is a portfolio per deal

PCS gives you one campaign per deal. The reporting consequence: if a deal genuinely had three meaningful marketing touches, PCS only captures the first one and pretends the other two didn't matter. The CMO loses credit for two-thirds of the actual marketing contribution.

CIA distributes credit across all campaigns, but the distribution depends on the model:

  • First Touch: earliest campaign in the contact-role campaign-history gets 100%.
  • Last Touch: most recent campaign gets 100%.
  • Even: every campaign gets 100% / N where N is the count of unique campaigns.
  • Custom: whatever your custom Apex logic returns.

Even-split is the default and the default is bad. A deal with one meaningful campaign (a webinar where the buyer attended and downloaded a follow-up) and four trivial campaigns (newsletter signups, a passive ad impression, a single-touch email open) gives the meaningful campaign 20% credit. The trivial campaigns get 80% combined. Reports show display ads driving more pipeline than the webinar that actually closed the deal.

This is the source of every "the data says X but I know in my gut Y" attribution conversation in a B2B company. The data is technically right within the model. The model is wrong. Switching to a Custom Influence Model that weights touches by Status (Attended > Downloaded > Sent + Opened) fixes 80% of the noise.

PCS is auditable; CIA is opaque

A PCS value points at a Campaign record. You can see exactly which campaign sourced each deal, and Salesforce's built-in field-history tracking tells you who set it, when, and what the previous value was. Audit trail is direct.

CIA is the output of a model running over a join. To audit "why does this opportunity have 12% influence credit on this campaign?" you have to:

  1. List the contact roles on the opportunity.
  2. List each contact role's campaign-member history within the attribution window.
  3. Apply the active Campaign Influence Model logic.
  4. Compare the result to what's in the CIA record.

If the active model is Custom, repeat the above with a copy of the model's Apex code in front of you. There's no built-in audit surface. Most orgs running Custom models don't have full confidence in their own attribution numbers because nobody can fully reproduce them on demand.

When to use which

Use PCS for: marketing-sourced pipeline reports

The CFO question is "How much pipeline came from marketing?" The defensible answer is "marketing-sourced," meaning PCS-attributed. Numbers reported on PCS are the floor of marketing's contribution — incontestable, traceable to a single Campaign record per deal, easy to audit. They're also the smallest number; usually 30–40% of marketing-influenced pipeline.

Lead with PCS when the audience is finance, the board, or anyone who's going to push back on attribution methodology. The data model is simple enough to defend in a hostile review.

Use CIA for: marketing-influenced pipeline analysis

Marketing's full contribution to pipeline includes every deal where marketing touched any contact role meaningfully. That's the CIA territory.

Use CIA-based reports for internal marketing-team analysis: which campaigns are touching the most pipeline, which audiences are showing up across multiple deal-stage transitions, which channels are lighting up in the influenced-pipeline view but absent from PCS (a sign that marketing is doing the warm-up work and sales is closing the deal without the source-tracking pointing back).

Lead with CIA when the audience is marketing leadership planning next quarter's mix.

Use both for: realistic CMO reporting

The honest report has both numbers, side by side, with the methodology footnoted. PCS-attributed pipeline as the floor, CIA-attributed pipeline as the ceiling, and a middle number — what we call Direct attribution in the Three Degrees framework — as the most defensible middle ground. Direct attribution is "PCS plus contact roles who hit a meaningful Status threshold (attended, downloaded) within the window," excluding the trivial single-touch contributions that bloat Even-split CIA.

The CMO presents three numbers: $X PCS-sourced, $Y Direct-attributed, $Z CIA-influenced. Each is correct within its own definition. The narrative is: marketing owns $X outright, materially contributed to $Y, and was present in the buying journey of $Z. Finance gets $X for the pipeline-attribution dashboard. Marketing leadership gets $Y for planning. The board narrative is the trio together.

Common mistakes that break both numbers

After working with several dozen marketing-ops teams on this, the same five mistakes show up:

Mistake 1 — Treating null PCS as zero marketing contribution. Null-PCS opportunities aren't "deals marketing didn't touch"; they're "deals that bypassed the lead-conversion flow." The PCS audit pattern finds the missing data and back-fills it from contact-role campaign history.

Mistake 2 — Reporting Even-split CIA without footnote. Even-split makes a passive ad impression look as influential as a webinar attendance. Numbers that come out of an Even-split CIA report should be presented with the model called out explicitly, or replaced with a weighted Custom model.

Mistake 3 — Showing PCS and CIA as if they were the same number. They aren't. PCS is sourced; CIA is influenced. A dashboard that mixes them as if they were comparable will produce a number that's neither.

Mistake 4 — Missing roll-up across campaign hierarchies. A parent campaign with five children should sum the children's PCS attributions and the children's CIA attributions. Most teams forget this and report the parent's PCS as zero because PCS is set on the children. The fix is to query the campaign hierarchy and aggregate at the parent level.

Mistake 5 — Re-running CIA against a stale Campaign Influence Model. Salesforce only recalculates CIA records when a contact role changes. If you change the Campaign Influence Model itself, existing records keep the old model's percentages until something on each opportunity triggers a recalc. Most orgs that switch from Even to Custom have months of lag in their reports until every opportunity has been re-touched.

How crm.care handles both

crm.care reads PCS and CIA simultaneously from your live Salesforce data. The Three Degrees of Attribution view computes Absolute (PCS), Direct (PCS + meaningful contact-role touches), and Indirect (any campaign-member history) — the floor, the defensible middle, and the ceiling, on one screen, per campaign. The PCS audit catches the null-PCS opportunities from Mistake 1 and proposes back-fills. The campaign-hierarchy roll-up handles Mistake 4 automatically. None of it requires you to change Salesforce config; we read what's there and present it correctly.

For B2B marketing teams currently picking between PCS-only reports (defensible but undercounting) and CIA-only reports (complete but noisy), the Three Degrees view is the third option that gets used in practice. The free 7-day trial connects to Salesforce + AE in about 90 seconds; attribution lights up the moment your first campaign hits in-progress.

For more on the surrounding pieces, see Three Degrees of Attribution in Salesforce for the full attribution framework, crm.care vs Jasper for the comparison with the AI-copy tool that doesn't talk to your CRM, or the features page for what else lives in the workspace.

Keep reading

Run the loop yourself.

Free 7-day trial. Full feature set. No credit card. Ship a real campaign in 30 minutes.

Start free trial