Table of Contents
- Why Copy Attribution Data to Salesforce?
- Best Practices for Integrating Attribution with Salesforce
- How To Integrate Attribution - What You’ll Need
- The Custom Object: CM Attribution
- The Custom Object Page Layout: CM Attribution
- The Custom Report Types
- The Related Lists
- The Rollup Fields
- The Permission Sets
- The Reports
- The Dashboard
Replicating CaliberMind Attribution Data to Salesforce
Updated by Nic Zangre
- Why Copy Attribution Data to Salesforce?
- Best Practices for Integrating Attribution with Salesforce
- How To Integrate Attribution - What You’ll Need
- The Custom Object: CM Attribution
- The Custom Object Page Layout: CM Attribution
- The Custom Report Types
- The Related Lists
- The Rollup Fields
- The Permission Sets
- The Reports
- The Dashboard
Why Copy Attribution Data to Salesforce?
For decades, revenue operations professionals have been striving to make Salesforce the single source of truth. One of the core motivations for this is to increase adoption. If the reports we need are in our CRM, suddenly we have executive teams logging into the product, which increases their aptitude for enforcing usage with their teams.
The main reasons we hear marketers ask us to support them in transferring attribution data into Salesforce are:
- They want to build trust with their sales team by surfacing how attribution is being split across specific activities on their opportunities
- They want the sales team to see the different touchpoints marketing is curating with the brand across their account
- They want executives who are used to getting their reports in their CRM to not have to navigate to another system
All of these are great reasons to push attribution into your CRM. This documentation is meant to help you create the permissions, related lists, custom object, and report types needed to get the most out of attribution in your CRM. This strategy can also be used when switching attribution vendors to CaliberMind-- we can replicate the previous vendor's schema in SFDC to ease the disruption of switching.
Best Practices for Integrating Attribution with Salesforce
One of my most painful memories as a Salesforce administrator was acting as arbiter whenever departments reported conflicting metrics. Inevitably, one team was using a different filter than the other, or they ran their numbers on different days, and something had legitimately changed. A simple conflict in filters created an exaggerated conflict between teams in a down quarter (picture your VP of sales challenging whether or not a marketing leader’s team actually contributed 50% of pipeline – it gets messy fast!).
If your company has historically used Salesforce for their first and last touch attribution (otherwise known as “lead source” or “opportunity source” reporting), we don’t recommend pushing these models from CaliberMind into your CRM. The data points will be different because CaliberMind is not looking just at the primary contact associated with your opportunity – CaliberMind looks across the account, including leads. You can read more about why the data is different here.
We recommend focusing on a single multi-touch attribution model, and it should be the model you use when you report on attribution in front of other departments. Using a single model will reduce the chances that your Salesforce users accidentally bloat the pipeline or bookings number because they’re using more than one model, and it cuts down on the chance that they will use a different model in an attempt to debate the validity of your team’s reports.
How To Integrate Attribution - What You’ll Need
In order to migrate attribution data into your CRM from CaliberMind, you’ll need to work with your Customer Success team at CaliberMind and your Salesforce Administrator. You’ll need full administrative rights in Salesforce because you will need to:
- Create a Custom Object
- Create Custom Report Types
- Update existing page layouts
- Create summary or roll-up fields on your existing objects
- Create Permission Sets
- Create a Dashboard with Reports
We’ve linked Salesforce documentation above to help give background on how to do these things. The following documentation assumes your admin has experience with each of these items, so we focus on describing what needs to be done for this project.
The Custom Object: CM Attribution
The custom object in Salesforce will not only house your touchhpoint details and attribution dollar allocation – it will also contain lookups that allow you to see and summarize data by Campaign, Account, Opportunity, and person records (both lead and contact). We recommend creating the fields listed below, then thinking through which fields would be most helpful for your different profiles when setting up related lists or page layouts.
FIELD LABEL | FIELD NAME | DATA TYPE | Description |
CaliberMind Attribution Name | Name | Auto Number | Primary Key |
Campaign | Campaign__c | Lookup(Campaign) | A lookup relationship to the Salesforce campaign (if applicable), based on the Campaign Id |
Campaign ID (18) | campaign_id__c | Text(255) | The unique ID of the campaign either generated by your CRM, advertising platform, or CaliberMind depending on the type of touch. |
Campaign Name | campaign_name__c | Text(255) | The CRM or ad platform campaign name. |
Campaign Type | campaign_type__c | Text(255) | The type of campaign designated in your CRM or mapping logic in CaliberMind. |
Company ID (18) | company_id__c | Lookup(Account) | A lookup relationship to the Salesforce Account (if applicable), based on the Company Id associated with the attributable event touch. |
Contact | Contact__c | Lookup(Contact) | A lookup relationship to the Salesforce Contact (if applicable), based on the Person Id associated with the attributable event touch. |
Days to Value | days_to_value__c | Number(18, 0) | Number of days that passes between the activity date and the date the attribution record was created (opportunity open date). |
Event Detail | event_detail__c | Long Text Area(32768) | A detailed description of the event associated with the record. |
Event System | event_system__c | Text(255) | Which system the event was generated whether that be your CRM, MAP, or ad platform. |
Influence | influence__c | Percent(3, 2) | The percentage of the opportunity's total amount allocated to this touch. |
Is Won | is_won__c | Checkbox | A True/False flag that indicates the associated opportunity record is marked Closed Won in your CRM. |
Lead | Lead__c | Lookup(Lead) | A lookup relationship to the Salesforce Lead (if applicable), based on the Person Id associated with the attributable event touch. |
Campaign Member ID (18) | member_id__c | Text(255) | The ID in your CRM or generated by CaliberMind when a record is created because a person interacts with a campaign. |
Model Name | model_name__c | Text(255) | The name of the attribution model used to calculate the value associated with the record. |
Model Type | model_type__c | Text(255) | Whether the opportunity associated with the record is Lost, Won, or Open according to its stage. |
Opportunity | opportunity__c | Lookup(Opportunity) | A lookup relationship to the Salesforce Opportunity associated with the attributable event touch. |
Opportunity Create Date | opp_create__c | Date | Allows admins to report on pipeline generated when using a campaign report type. |
Opportunity Close Date | opp_close_c | Date | Allows admins to report on bookings generated when using a campaign report type. |
Opportunity ID (18) | Opportunity_Id__c | Text(18) | The unique ID generated for the opportunity in your CRM. |
Person | person__c | Text(255) | The email address associated with the person that is associated with the event. |
Pre-Opportunity (y/n) | pre_opp__c | Checkbox | A true/false indicator that is true when the event took place prior to the opportunity creation date and is false when the activity took place between opportunity creation and close. |
Primary Campaign (y/n) | primary_campaign__c | Checkbox | Whether or not the attributable event touch was the associated Opportunity’s primary campaign. |
Response Date/Time | response_datetime__c | Date/Time | The date and time the touch took place. |
Source | source__c | Text(255) | The system the touch was generated in whether it be CRM, LinkedIn, MAP, or other platform. |
Total Value | total_value__c | Currency(10, 2) | The total dollar amount associated with the opportunity. |
Touch Value | touch_value__c | Currency(10, 2) | The portion of the total amount "credited" to this touch. |
Weighted Touch Value | weighted_value__c | Number(10, 2) | The touch value multiplied by the probability of the opportunity closing. |
If you choose to port over multiple models, we recommend not creating the Model Name, Model Type and weight fields and changing Touch Value to [Model 1 Name] Value, and adding a field per additional model. We suggest doing the same for the Weight values. For example, if I choose to migrate even-weighted data, chain-based data, and a first-touch model data – the field values would look something like the following on the CM Attribution page layout:
- Even-Weighted Touch Value
- Even-Weighted Touch Weighted
- Chain-Based Touch Value
- Chain-Based Touch Weighted
- First Touch Value
- First Touch Weighted
The Custom Object Page Layout: CM Attribution
We recommend creating two page layouts on a single record type. One page layout should be for non-admin users and should only contain the most essential information such as any linked objects, a description of the event, and the model touch value. The admin page layout should contain all fields to make troubleshooting simpler.
The Custom Report Types
Once you create the CM Attribution object, we recommend creating a minimum of four custom report types:
- Opportunities with and without CM Attribution
- Opportunities without CM Attribution
- Campaigns with and without CM Attribution
- Campaigns without CM Attribution
The report types without CM Attribution are meant to make troubleshooting easier. If you can see which records do not have attribution, this may flag an issue in the system. We recommend including all fields on the opportunity object and CM Attribution object so that you can create extensive reports meant to help with troubleshooting.
Optionally, you can also create report types with accounts, leads, or contacts and CM attribution, but we find the greatest utility in reporting against opportunities and campaigns.
The Related Lists
Related lists are an easy way to display key information about attribution to your Salesforce users without forcing them to click into each child record. We recommend that you meet with your key stakeholders to determine which data they would like to see, but have provided some suggestions by each object.
Opportunity
FIELD LABEL | FIELD NAME | DATA TYPE |
Touch Date | touch_date | Date |
Person | person__c | |
Campaign Type | campaign_type__c | Text(255) |
Campaign Name | campaign_name__c | Text |
Pre-Opportunity (y/n) | pre_opp__c | Checkbox |
Touch Value | touch_value__c | Currency(10, 2) |
Weight | weight__c | Number(10, 2) |
Campaign
FIELD LABEL | FIELD NAME | DATA TYPE |
Touch Date | touch_date | Date |
Person | person__c | |
Company | company__c | Lookup |
Opportunity | opportunity__c | Lookup |
Pre-Opportunity (y/n) | pre_opp__c | Checkbox |
Touch Value | touch_value__c | Currency(10, 2) |
Weight | weight__c | Number(10, 2) |
Account
FIELD LABEL | FIELD NAME | DATA TYPE |
Touch Date | touch_date | Date |
Person | person__c | |
Campaign Type | campaign_type__c | Text(255) |
Campaign Name | campaign_name__c | Text |
Opportunity | opportunity__c | Lookup |
Pre-Opportunity (y/n) | pre_opp__c | Checkbox |
Touch Value | touch_value__c | Currency(10, 2) |
Weight | weight__c | Number(10, 2) |
If you would like, you can also add related lists to your Contact and Lead page layouts.
The Rollup Fields
Rollup or Summary fields require a master-detail relationship between the object you want to display the summary data on and your CM Attribution custom object. We find that marketers prefer this to take place on the Campaign object. This allows marketers to summarize the total attributed dollars on the campaign, pre-opportunity dollars, and post-opportunity dollars for both pipeline and bookings data. This will allow your marketing team to get a sense of ROI and understand how their campaigns impact pipeline and bookings.
The Permission Sets
It’s possible to control object-level and field-level access at the Profile level, but we recommend creating permission sets. This allows you to assign access at a granular level and remove it quickly should you ever need to. We recommend creating two permission sets:
- CM Attribution Admin
- CM Attribution Read Only
The Admin level profile should only be given to system administrators and your integration user for CaliberMind. This profile should allow full access to the CM Attribution object. The majority of profiles should only need read permission to allow visibility of all fields but not allow edit, create, or delete permissions.
The Reports
We recommend starting with six reports and building on that foundation. Use your discretion. If your business is primarily interested in certain opportunity types or thinks of the summarized data differently than outlined below, please feel free to change or add additional reports to support your dashboard.
Report 1: Pipeline Generated by Campaign Type
These instruction steps take place in Salesforce:
- Start by creating a report with report type Opportunities with and without CM Attribution.
- The filter should show all opportunities owned by all people and be organized by created date (or your opportunity qualification date - whatever is used by your sales organization to run pipeline generation reports). We recommend setting the filter to THIS FISCAL QUARTER, LAST 4 FISCAL QUARTERS.
- We recommend setting the Group Rows to Create Date and updating it to group by Fiscal Quarters. Then group the report by Campaign Type.
- We recommend adding the Pre-Opp column to Group Columns.
- Make sure the touch value is summarized and not the opportunity amount fields.
- Add a stacked column chart. This should mirror the Attribution 2.0 dashboard in CaliberMind with the Chart and Table set to group by Campaign Type:
- Save your report to a public folder so users can access the visualization.
Report 2: Bookings by Campaign Type
These instruction steps take place in Salesforce:
- Start by creating a report with report type Opportunities with and without CM Attribution.
- The filter should show all opportunities owned by all people and be organized by close date. We recommend setting the filter to THIS FISCAL QUARTER, LAST 4 FISCAL QUARTERS. Also add a filter for Is Won IS TRUE.
- We recommend setting the Group Rows to Close Date and updating it to group by Fiscal Quarters. Then group the report by Campaign Type.
- We recommend adding the Pre-Opp column to Group Columns.
- Make sure the touch value is summarized and not the opportunity amount fields.
- Add a stacked column chart. This should mirror the Attribution 2.0 dashboard in CaliberMind with the Chart and Table set to group by Campaign Type:
- Save your report to a public folder so users can access the visualization.
Report 3: Bookings by Campaign
These instruction steps take place in Salesforce:
- Start by creating a report with report type Campaigns with and without CM Attribution.
- The filter should show all campaigns, minus operational or other campaign types that are not eligible for attribution. If you are diligent about your campaign start and end dates, you may use that to limit the data to a certain period. Also, add a filter for Is Won (on the CM Attribution object) IS TRUE.
- We recommend setting the Group Rows to Campaign Name.
- We recommend adding the Pre-Opp column to Group Columns.
- Make sure the touch value is summarized and not the Campaign Influence fields. Then sort the table by Touch Value in Descending order.
- Save your report to a public folder so users can access the visualization.
Report 4: Pipeline Generated by Campaign
These instruction steps take place in Salesforce:
- Start by creating a report with report type Campaigns with and without CM Attribution.
- The filter should show all campaigns, minus operational or other campaign types that are not eligible for attribution. If you are diligent about your campaign start and end dates, you may use that to limit the data to a certain period.
- We recommend setting the Group Rows to Campaign Name.
- We recommend adding the Pre-Opp column to Group Columns.
- Make sure the touch value is summarized and not the Campaign Influence fields. Then sort the table by Touch Value in Descending order.
- Save your report to a public folder so users can access the visualization.
Report 5: Opportunities Created with Attribution
The purpose of this report is to display attribution for opportunities that are generated in the current quarter. This will help your team demonstrate how attribution is calculated and give specific examples of attribution to the sales team to help build buy-in of your model.
These instruction steps take place in Salesforce:
- Start by creating a report with report type Opportunities with and without CM Attribution.
- The filter should show all opportunities owned by all people and be organized by created date (or your opportunity qualification date - whatever your sales organization uses for pipeline generation reports). We recommend setting the filter to THIS FISCAL QUARTER.
- We recommend setting the Group Rows to Opportunity Name. Then group the report by Campaign Type.
- We recommend adding the Pre-Opp column to Group Columns.
- Make sure the touch value is summarized and not the opportunity amount fields.
- Save your report to a public folder so users can access the visualization.
Report 6: Opportunities Closed Won with Attribution
The purpose of this report is to display attribution for opportunities that are closed won in the current quarter. This will help your team demonstrate how attribution is calculated and give specific examples of attribution to the sales team to help build buy-in of your model.
These instruction steps take place in Salesforce:
- Start by creating a report with report type Opportunities with and without CM Attribution.
- The filter should show all opportunities owned by all people and be organized by either your created date or the qualification date your organization uses for pipeline reports. We recommend setting the filter to THIS FISCAL QUARTER.
- We recommend setting the Group Rows to Opportunity Name. Then group the report by Campaign Type.
- We recommend adding the Pre-Opp column to Group Columns.
- Make sure the touch value is summarized and not the opportunity amount fields.
- Save your report to a public folder so users can access the visualization.
The Dashboard
These instruction steps take place in Salesforce:
To start, your dashboard will have 4 components:
- Pipeline Generated by Campaign Type
- Bookings by Campaign Type
- Top 10 Pipeline Generating Campaigns
- Top 10 Bookings Campaigns
- Add a Stacked Column Chart component and add your Pipeline Generated by Campaign Type report and mirror the chart in the source report.
- Add a Stacked Column Chart component and add your Bookings by Campaign Type report and mirror the chart in the source report.
- Add a Lightning Table component and add your Pipeline Generated by Campaign report and limit rows to 10.
- Add a Lightning Table component and add your Bookings by Campaign report and limit rows to 10.
- Save your dashboard and share it with whoever is interested.