Skip to content
Supercharge Your Pipeline
Guide to Attribution Reports in Salesforce

The Beautiful Game: A Guide to Attribution Reports with Salesforce

Download: The Definitive Guide to HubSpot & Salesforce Integration

November 3, 2020

By Dave Vacanti

Guest author Dave Vacanti is the Founder and CEO of Magic Robot.

For marketers—especially those in B2B and/or who have a long sales cycle—campaign attribution is critical to understanding which channels are winners and which are dead weight. The problem is that it’s often difficult to ascertain through a 15-month investigation and sales process exactly which marketing campaigns influenced an opportunity on its way to creation and, of course, the coveted closed won status.

Why Campaign Attribution in Salesforce Is Important

Knowing which campaign touches influenced the buying process on an account basis can be tricky because there are usually multiple contacts under the account and opportunity, and they are all being marketed to. 

There are few reliable authorities on the subject because Salesforce keeps its software vanilla and its customers are using so many marketing automation platforms.

Yet within all these touches is the holy grail of B2B KPIs: campaign ROI. Without knowing which of your campaigns are driving sales, you don’t know which marketing channels you should be adding budget to or subtracting budget from.

And the key to getting the best view of this is through multi-touch attribution models.

How to Track Attribution Using Salesforce Reporting

The answer is: not easily. Salesforce is a powerful and flexible platform, but it’s not winning any awards for its sophisticated marketing and sales reporting anytime soon. 

But fear not! There are several ways you can work to extract this critical info from the jaws of Salesforce data.

Below, we’re going to cover some of the best practices for campaign attribution that Salesforce can (mostly) do out of the box. In order of simplest to most advanced, these include:

Opportunity Lead Source

“Lead source” is a native system drop-down field on lead records. It very clearly tells you what source or channel this person came from when they entered your system.

Things get murkier when multiple leads are entered into Salesforce from the same person (email address). Accuracy and completeness will inevitably be reduced if the sales rep doesn’t follow the prescribed workflow designed by Salesforce in 1999: that a lead be directly converted into an opportunity, always, every time. 

Once the opportunity is created, the sales rep can usually change the opportunity lead source to whatever they deem appropriate. Oftentimes, the “opportunity lead source” field reflects where a lead came from, from the rep’s perspective. This, coupled with the prescribed workflow not lending itself to B2B account-based marketing (ABM), makes opportunity lead source a sometimes subjective—though always crucial—data point.

For online lead generation, the most efficient way to capture lead source for your leads is to include it on your Salesforce web-to-lead form as a hidden field. You then simply pre-set your form code to whatever source that form is hosted on. 

Learn the ins and outs of attribution reporting in our “Ultimate Guide to  Perfecting Your Marketing Attribution Reporting”

Like so:

<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8">

<!--  ----------------------------------------------------------------------  -->

<!--  NOTE: Please add the following <FORM> element to your page.             -->

<!--  ----------------------------------------------------------------------  -->

<form action="" method="POST">

<input type=hidden name="oid" value="00D60000000KdiA">

<input type=hidden name="lead_source" value="Bing">

<input type=hidden name="retURL" value="">

Also, a convenient system behavior is that when you convert a lead, it by default maps over lead source to opportunity, account, and contact. This allows you to report on it for all three objects.

Use Case

You decide to start testing ads on Bing. (I checked—it still exists! It also recommends I check out MySpace.) Your team whips up a pretty landing page that is bound to convert at 80 percent. You add “Bing” as a picklist option on the lead source field. 

Now when you create the web-to-lead form in Salesforce, you include a hidden field and pre-populate it as “Bing.”

As leads start pouring into your Salesforce, you will now know exactly how those leads came into your system. As mentioned above, this essentially becomes the first touch.

UTM Tracking

UTM tracking is like lead source tracking to the fifth power. You see UTMs all the time; they are the stuff at the end of just about every ad or tracking link you click on, and they look something like this:

As a marketer, you can pre-populate the links you create with multiple UTM_xyz tags to help you track:

  • Source
  • Medium
  • Campaign name
  • Keyword term
  • Content

We won’t dive too deep into how to create your own marketing tracking system using UTMs, but suffice it to say they provide far more data at lead entry than lead source.

In Salesforce, you will not be able to integrate UTMs natively unless you have Marketing Cloud. If you don’t, the best thing to do is create custom fields for each of them and then use the web-to-lead hidden fields on your forms to enter whatever UTM parameters you are tracking into Salesforce.

This is a handy article that will walk you through that fairly simple, albeit tedious, process.

The concept of tracking UTMs is very similar to how you track lead source, only they allow you to view more data points, such as what ad type or search term was responsible for the lead.

Use Case

Let’s get back to our Bing test. You’re cruising along and running several campaigns across lots of keyword groups. Of course, on the front end, you can see how they are performing when it comes to clicks and conversion rates. But the visibility stops there. To truly evaluate the ROI of these different campaigns, keywords, and creative tests, you need to tie it all back to won opportunities.

So you set up your custom fields in Salesforce for things like “UTM source,” “UTM campaign,” “UTM content,” and so on. Now, when a lead is converted from a campaign, you don’t just see Lead Source = Bing. Rather, you get a fuller picture that might look like:

UTM Source = Bing

UTM Medium = Display

UTM Campaign Name = Spring Special

UTM Keyword Term = healthcare payroll software

UTM Content = Test-3

Salesforce Campaigns

Our first two tracking scenarios above really speak more to a lead’s marketing source than to the concept of the multiple marketing campaigns that can influence an opportunity. In Salesforce-land, this is a technical but important distinction.

In order to gain visibility into the multiple touches that influence a lead/contact, you need to swim with the Salesforce current and use campaigns. This is the only elegant way to transcend the limited snapshot-in-time constraint of the lead source reporting above. 

When you create your campaigns, you will also attach leads/contacts as campaign members. These are either manually added upon campaign creation through API integrations (recommended), or they can be automatically inserted by a Salesforce process, flow, or custom Apex code based on lead/contact activity and behavior.  

For instance, if a lead downloads your Q4 Travel Industry Outlook white paper, you can add them to your white papers campaign (or you can be more specific and create campaigns for each white paper you produce—it’s up to you!).

And because it is a one-to-many relationship, campaigns can effectively chart every marketing campaign that a lead/contact was sent and/or responded to. All campaigns associated with the lead/contact will then be listed under the campaign history on the record.

Two of the other big advantages of campaigns are that they allow you to track member status and apply an actual cost to the campaign.

Member status is helpful when you want to calculate the response rate of a particular campaign. You then have the flexibility to use various Salesforce settings (or workflows) to trigger the member status of a campaign member. 

It’s important to note that campaign members have both a picklist “status” field and a checkbox “responded” field. 

When creating your status options, you can choose which is equal to a “response,” which will toggle the “responded” field accordingly. This makes reporting significantly easier. 

Actual cost is fairly self-evident. Just enter in your marketing expense, and then when running reports, you can easily report on the campaign ROI when applied against the won opportunity amounts.

A good rule of thumb is that as soon as you spend any money on a marketing initiative, you should create a campaign in Salesforce and enter in the actual cost. We really cannot recommend enough that you consider filling actual cost when you’re doing the setup for campaigns in Salesforce because “ROI” is an absurd calculation without it.

Primary Campaign Source

For attribution purposes, Salesforce has a notion of primary campaign source. This is a field associated with an opportunity that Salesforce will automatically append upon lead conversion and that can usually be manually added or augmented by the sales rep. 

Salesforce campaign source


Enabling Customizable Campaign Influence 

A more advanced way of handling attribution reporting with campaigns in Salesforce is by turning on Campaign Influence. As you’ll see in that link, it’s a super simple process either you or an admin can do. (Note: There is an older 1.0 version for Classic-only, but we will only address the newer Customizable Campaign Influence.)

When you turn it on, Salesforce will scan active campaigns to find members who have an opportunity contact role. It will then deem these campaigns as having influence on the opportunity. (This process ignores any notion of campaign response and just adds anyone who is a campaign member.) You can dig into more of the settings here

Out of the box, it will use the primary campaign source model, which assigns 100 percent influence to the campaign in the primary campaign source field. (As we said earlier, essentially last touch.)

You can also set up auto-associations settings to define a time frame to limit when a campaign is in a window of influence. 

Additionally, for easy reference and visibility, you can add related lists to the opportunity layout, which shows Campaign Influence—and, vice versa, you can add a similar related list for opportunities on the campaign layout.

All of the above comes with the caveat that, in my experience, Campaign Influence is not the most well-thought-out feature set in Salesforce and can be a very confusing world to enter into.

This is especially true when it comes to which settings are the domain of Pardot/Marketing Cloud and which are native to Salesforce Professional. Caveat administrator!

Use Case 

A fairly standard use case for Salesforce campaigns is when you are hosting a live event. Let’s say you’re putting on WidgetCon2030. You create the appropriate campaign. You then add the 4,000 customers, partners, and prospects whom you are going to invite as campaign members and set their status to “invited.”

When a campaign member registers for the event online, you set up a rule to update their status to “Registered,” or you use marketing automation’s native integration to Salesforce to make the update. Moving down the funnel, after you host the event, you take the final attendee roster and upload/push that list with a status of “attended.”

So now, months after the event, you can run a report of the prospects who are part of this campaign with a status of “attended” and see how many of them became won opportunities. Based on the campaign cost of the event, you can then easily see the ROI of hosting your WidgetCon by seeing which opportunities were influenced by this campaign.

How to Run A Report

Instead of running an opportunity report, you’ll go into the campaign section of reports and choose to run a campaign report along with the associated object you want to view the campaign data against.

For basic reporting, you can run a campaigns with opportunities report or a campaigns with leads and converted lead information report. 

A better option is the campaigns with influenced opportunities report. This option allows you to effectively run a report grouped by opportunity and subgrouped by contact to see which campaigns influenced which contacts. 

Alternately, you could group the report by campaigns and then opportunities to see what opportunities were influenced from a campaign perspective.

Pro tip: In any opportunity report, if you add in opportunity lead source and primary campaign as columns, you are essentially using a proxy for first touch and last touch, respectively, which might be adequate for an at-a-glance review.

One handy benefit of this report type is that you can calculate ROI by using a simple formula field, such as:


Note: As you run these reports, you will likely notice some double- and triple-counting going on. The same campaigns will be applying 100 percent of the opportunity and actual cost amounts to the ROI formula as well as including multiple contact roles, which will double the amounts. So you will need to do some work with your report filters.

Salesforce AppExchange Apps

Most organizations that have large B2B teams and multiple campaigns tend to have more sophisticated needs when it comes to attribution reporting. Because of this, they usually end up bumping their heads up against the ceiling of Salesforce’s functionality and ultimately utilize third-party AppExchange apps and/or marketing automation platforms such as Marketo, Pardot, or HubSpot.

Third-Party Apps

Magic Robot

Magic Robot is a simple but powerful app that—using the flexible settings you give to it—traverses Salesforce architecture the way you tell it to, pores through all of your historical campaign data in Salesforce, and then creates new custom objects, fields, and (optionally) opportunity contact roles based on this response data.

With these new data points in hand, you have far greater flexibility and reliability when putting together attribution reports and dashboards.

Like most of these third-party apps, you can view your response data across multiple attribution models:

  • First touch (1-to-1)
  • Last touch (1-to-1)
  • Most influential campaign (1-to-1)
  • General (even spread pre-opportunity)
  • Closers (even spread post-opportunity)
  • General and closers (full-path even spread attribution)
  • Custom weighting (on the multi-touch models)

We at Magic Robot are also very proud that in working with a few thought leader clients, we’ve created a novel and very reliable method for using “MQL dates” from contacts and leads to determine if the opportunity itself—as well as each individual influential response—was MQL-compliant, which enables weighting based on those factors in addition to others, such as position.

Overall, if you are running lots of B2B campaigns that touch several contacts across the account over a long sales cycle, Magic Robot is a tool that can significantly improve your attribution reporting inside Salesforce as well as integrated marketing automation platforms’ native reporting. The automatic opportunity contact role creation functionality eliminates false negatives and thus “flips on the lights” on your data that’s already there but just not connected.


Bizible, now part of the Adobe and Marketo family, is a major player in the B2B campaign attribution space, though it is most used for its “Google Adwords for Salesforce” replacement functionality from the time when Salesforce and Google were briefly in a fight with each other. 

Bizible attribution is viewed as an enterprise solution that requires knowledgeable staff to set up and maintain. It is built on its own Bizible platform, which can normalize your attribution data and send it into Salesforce.

Its multi-touch attribution models include:

  • First
  • Last
  • U-shaped
  • W-shaped
  • Full-path
  • Custom

Bizible is strongly focused on ABM, and it provides the type of closed-loop reporting and dashboards these kinds of marketing teams need to see. Of course, its enterprise-level customer base is reflected in the price tag. But if you are looking for a multi-touch attribution solution at a very high enterprise level, Bizible should be part of your vendor evaluation.

Full Circle Insights

Full Circle Insights is a very solid app whose CTO literally wrote the book on Salesforce customization called Advanced Apex Programming. Unlike Bizible, Full Circle Insights is a native Salesforce app (like Magic Robot), and it aims to help you optimize your marketing mix by comparing campaign performance.

Again, you get access to multiple models, including:

  • First
  • Last
  • Even spread
  • Custom

Additionally, of course, you can view attribution data in custom reports and dashboards. Full Circle has a suite of similar apps on the AppExchange, so once you determine your requirements, take a look at what other capabilities it has to offer to see if there is a fit.


LeanData is more of a full-on revenue operations platform focused on B2B growth. Besides campaign attribution, LeanData is better-known for several other key features, such as lead-to-account matching, routing, and engagement.

Depending on your business case, LeanData might supply more features than you really need, but it absolutely deserves a spot at the marketing attribution discussion table.

With LeanData, you’ll be able to use the same types of attribution models as the other apps mentioned here, plus you can automatically associate campaign members with corresponding opportunities—a very handy feature.

Use Case

A very broad use case for third-party apps like those mentioned above would be any B2B company—especially those engaged in ABM—that simply needs to better understand how the dozens of campaigns touching each account are affecting won opportunities. It’s very difficult—if not impossible—to effectively do this with Salesforce’s out-of-the-box reporting.

Up Your Campaign Attribution Game

As you can see, campaign attribution reporting in Salesforce is at best an inexact science. However, understanding how your marketing campaigns are influencing your won opportunities is critical business intelligence and something you should strive to report on as accurately as possible.

And remember: it takes a team and their combined efforts to score a goal—not just the foot kicking the ball to the back of the nylon.


The Salesforce integration is one of the most popular integrations in HubSpot’s App Marketplace. Learn how to integrate the two so that users can access critical data from both systems.

The Definitive Guide to HubSpot & Salesforce Integration

Check It Out
Topics: Marketing Attribution, Attribution Reporting, Salesforce