I’ve seen people approach Campaign organization in salesforce.com in several ways. Some consultants advocate a Campaign structure with multiple levels of Campaign hierarchy, but that approach may be unnecessarily complex for most organizations. You can achieve nearly all of the same benefits by categorizing your Campaigns using custom fields and single parent-child hierarchy.
Segmenting Campaigns Using the Campaign Type Field
The Campaign Type standard field on Campaigns is a great way to organize your Campaigns based on channel. This is where you would mark a Campaign as a “Webinar” or a “Conference”. If you find that you want more granularity here, you can create a custom sub-type pick list and make the values dependent on the type pick list.
You may also want to create other custom pick list fields such as product line, audience or region to further segment your Campaign performance.
Segmenting Your Campaigns by Date
Many people recommend using the built-in start and end dates on the Campaign to segment Campaigns by date. This approach can work, but the major drawback is that some Campaigns can run for long periods of time and an accurate start and end date for a generic web form Campaign may not offer anything meaningful. To work around this, some organizations create time specific versions of the same Campaign. Typically this is done yearly because there is a fair amount of overhead in changing all of the systems that add Leads and Contacts to Campaigns.
Using this method you still cannot compare performance of your Campaigns on periods shorter than the duration that you have split the Campaign. So instead reporting from a date field on the Campaign itself, I find that most people are better off reporting based on a date field on the Campaign Member record instead.
This gives marketers visibility in to the Campaign responses that were truly generated during a given time period, rather than relying on the fact that the Campaign itself was scheduled for a specific point in time.
Grouping Related Campaigns Together
In some cases it makes sense to group Campaigns together using hierarchy, specifically if you have a campaign that has multiple aspects. A good example is a webinar that may be presented live as well as recorded for future consumption. In this case the parent would be the overall webinar and there would be “live” and “recorded” child Campaigns.
The rollup fields on the parent Campaign can show the overall performance of the webinar and is a good way to assess how well the Campaign did. If you are measuring performance against Campaign cost you could use the overall numbers on the parent Campaign to get a good idea of how well the money was spent.
We recommend limiting the Campaign hierarchy to a single parent-children relationship. While salesforce.com supports up to 5 levels of hierarchy, the reporting capabilities become limited the more levels you add.
Bringing it all Together
Using custom and standard pick list fields on the Campaign allows you to segment and compare your campaigns and their performance against each other. Segmenting based on dates on the Campaign Member allows you to compare performance for a specific time period, either within a single Campaign or across many different Campaigns. Finally limiting the use of campaign hierarchies so they only represent a single parent-children relationship allows you to see summary values on the parent Campaign, as well as compare Campaign performance against other Campaigns by sorting by Parent Campaign Name and then by Campaign Name.
I’ll be the first to admit that each situation is unique and different business requirements may need a different approach, however, I have noticed a tendency to over engineer Campaign structure to the point where it can be frustrating to work with the data and in general recommend starting with something simple and flexible and adjusting to accommodate special cases from there.
Looking to better track campaigns in Salesforce through UTM codes? Download our “Definitive Guide to Tracking UTM Parameters in Salesforce.”

Luke was previously Director of Product Management at Full Circle Insights, responsible for product strategy, vision, and roadmap. He is a Salesforce.com Certified Administrator and previously he worked at Nuvation Research Inc integrating IT and Marketing tools.
[Ebook] Definitive Guide to Tracking UTM Parameters in Salesforce
This ultimate guide contains all of the best practices for measuring the success of your marketing campaigns using UTM parameters inside Salesforce.
Hello,
In this article you mentioned, “Using this method you still cannot compare performance of your Campaigns on periods shorter than the duration that you have split the Campaign. So instead reporting from a date field on the Campaign itself, I find that most people are better off reporting based on a date field on the Campaign Member record instead.” Can you please expand on this? How can the date on the marketing members be used to track down the active campaigns or the campaign influence for the lead conversation and opportunity creation? Thank you.
Hi Tina,
Great question and sorry for the delayed response, the short answer is you can’t. If you are reporting on campaign members rather than campaigns the “Campaign Statistics” don’t make sense in reports. Each row will be a Campaign Member rather than a Campaign, putting the statistics fields in that report, while possible, won’t make much sense. Those fields can be useful on a Campaign report, but they can also be a misleading.
The problem is that the statistics fields likely don’t have accurate data, especially when trying to segment by time.
1. Its possible for campaign members to be added despite a campaign being inactive, or completed. When this happens the information in the campaign, and the metrics your are reporting on become out of sync. This can be prevented with code, but that typically is not in place.
2. If you solve #1, you’re still not able to segment by date ranges that are smaller than the total time the campaign was running because the values in the statistics fields will always be for the whole campaign. So if you want to look at campaign performance week over week you would either have to create new campaigns for the same tactic each week, or not use those summary metrics.
Typically, companies don’t change out the campaigns for a given tactic more frequently than yearly because there is quite a bit of technical overhead in making the change in salesforce as well as marketing automation tools and any other relevant integrations or processes that might need to switch to the new campaign(s). Therefore, the metrics are only valid for year over year comparison and not for periods smaller than the overall time the campaign exists.
The reason I suggest using a Campaign Member report when attempting to segment by time periods is because you are typically looking for trends. How are our Campaigns performing month over month, week over week? Basing this report on the Campaign Member date fields will naturally ensure that you are looking at campaigns that were “active” during that time period. While you can’t get to the number of opportunities this way, you can see response volume, lead volume, lead converted volume, contact volume, and member status progression over time. With our Response Management application we expand on this to allow you to also report on funnel velocity, conversion rates, and campaign influence from these same reports.
The Campaign Statistics, numbers of opportunities in particular, can be useful when determining whether a specific campaign was successful. It works really well when analyzing individual campaigns or looking at reports across campaigns without a time component. A quick word of warning though, without custom code, you have to be careful with how the Primary Campaign Source on the opportunity is set, otherwise the metric will be unreliable.
This is just the tip of the iceberg in terms of what data validity issues occur using the out of the box Campaign Statistics and Campaign Influence reporting. The data can be incredibly powerful if is accurate, but I wouldn’t recommend relying on it unless you are willing to put considerable effort into enforcing clean and accurate data. If this is something your interested in doing, I strongly encourage you to reach out to us for a personalized demonstration.
Can you elaborate on this, please? “The rollup fields on the parent Campaign can show the overall performance of the webinar and is a good way to assess how well the Campaign did.” Where on a parent campaign can you see ANY aggregate data from all the child campaigns??? To my knowledge, Salesforce’s reporting capabilities on Parent Campaigns are severely limited. I have had more luck grouping campaigns by type, as you also suggested. I have a Parent Campaign of “Marketing Webinars” and then for each individual webinar, a child campaign with a unique name, which includes the date. Nothing ‘rolls up’ into the Parent Campaign: number of leads, number of contacts, number of opps, etc. Nothing. What am I missing?
Hi Amy,
There are two sets of statistics fields on the campaign, one set is specifically for that campaign, while the other will show you results for the whole hierarchy. For example the “Total Contacts” field will show you the total number of contacts added to that specific campaign, whereas the “Total Contacts in Hierarchy” field will show you all of the contacts in that campaign and child campaigns.
If you can’t see the hierarchy fields, you probably need to adjust the Field-level visibility. By default I believe they are set to “hidden” and won’t be available on the page layout creator or in reports.
I’d like to use campaign type and sub type as you suggested and allow SFDC users to add leads/contacts to sort by these fields when adding leads/contacts to a campaign. However, when a user clicks “add to campaign” from the lead/contact screen they’re presented with a lookup window that displays every campaign sorted by campaign name. Is there a way to allow users to filter/sort by the campaign type field?
Thank you!
Hi Tyler,
I don’t believe you can do this without creating a custom visual force interface to do the filtering. However, I often see people include important campaign dimensions like type in their naming convention. In your case, that would allow reps to search using the lookup field to bring up campaigns of a certain type.
Hope that helps,
Luke
Hi
In salesforce campaign hierarchies its is possible that parent campaign being an aggregate of the children campaign?
For example I have campaign P1 is a parent campaign of P2 and P3.
If i add 20 contacts and 10 leads in P2 and 5 contacts and 5 Leads in P3.
In Campaign P1 contain 25 contact(P2+P3) and 15 Leads(P2+P3).
Does this works in this way?