Wednesday, December 26, 2012

Combining, Segmenting and Managing Salesforce Campaigns with AppExchange Apps

Recently, I faced a rather daunting task to launch a 2-part multi-segment marketing campaign of around 14,000 members.
It is possible to use out-of-the-box tools plus a few free apps to create segmented campaigns and get your sales team involved in campaign planning.

In our org, we've been managing our campaigns for 5+ years using the standard Campaign object, but we're definitely feeling the need for a marketing automation tool that would make this process a whole lot easier.

But for now, we've got Campaigns.

I thought I'd share my process if you too are not in a position to invest in a marketing automation tool.

Step 1: Define criteria to add contacts to campaign. 

We wanted to pull in active contacts (custom picklist field) based on the most recently won Opportunity for the Account that they belong to (custom rollup field on account). So, I created a report with those criteria. Then, I added them all to one big "For Review" campaign using the 'Add to Campaign' button. You'll find out why in Step 3.

Step 2: Combine existing campaigns.

I had 6 recent campaigns with members that I wanted to make sure were included (regardless of whether they met the criteria in Step 1). I used the Campaign Combiner app from Groundwire to add them all to my "For Review" campaign.

Step 3: Get feedback from sales.

We want to make sure that all of our sales staff get a chance to review their list of contacts included in the campaign, and give them the ability to remove them without a lot of hassle. I used the Campaign Membership Manager from Salesforce Labs to do this.

I tweaked the app to allow for updating the members status to 3 specific options - 'Include in Campaign 1', 'Include in Campaign 2', 'Include in Campaign 1 AND 2' (Note: I had actual campaign names here). I created 3 custom Campaign Member Status options that corresponded to those options. I also wanted to give them the ability to mark someone for removal from the campaign but not actually remove them. So, I added a Campaign Member Status of 'Removed' for my "For Review" campaign, along with a 'Remove from BOTH' button.

To make updating a bit easier, I increased the number of campaign members shown in the Campaign Membership Manager app to 100 per page and added a filter to only show campaigns that had a checkbox of 'Use with Campaign Membership Manager' checked (custom checkbox field).

I ran into some trouble with the controller and test data generator class, but thankfully the Salesforce Twitter community (specifically: @SNUGSFBay) came to my rescue. If you're going to do some tweaking and you're a Button Click Admin like me, leveraging the support of the community by posting the code you're having trouble with is a great way to get help.

Using Clarify to create a detailed tutorial with screencaptures, I sent an email to our sales staff with about a week deadline to make their changes. This method of getting sales involved was quite successful.

Step 4: Segment the campaign.

After getting feedback in my "For Review" campaign, I was ready to start splitting the members up. I ran a report on all campaign members, filtered by status and then used the 'Add to Campaign' button on the report to add them to a new campaign I had created for the members that were approved to add. I now had my clean campaign member list.

But, I needed to segment the campaign into 3: 2 A/B testing campaigns, plus the main segment after determining which was more successful.

Enter the Campaign Segmentation Wizard from Salesforce Labs. I split my campaign into 2 smaller groups for A/B testing of about 1,000 members each and then added the remaining members to a third larger campaign.

Step 5: Launch and review.

I launched my A/B campaigns (which involved an email - we use Vertical Response). Based on the response, I customized the email for my main segment and launched it. Vertical Response provides clicks, bounces, opens, etc and passes them back to my campaign in Salesforce.

Step 6: Follow up as necessary.

My current campaign workflow involves creating a parent campaign and several child campaigns. It usually looks like this:
  • Parent Campaign
    • Child campaign: Email
    • Child campaign: Responses (eg: landing page submissions)
    • Child campaign: Data cleanup (bounces)
    • Child campaign: Clicks/Opens (for potential followup or future nurturing)

Tip: If you haven't added the 'Campaign Hierarchy' related list to your Campaign layout, definitely do! It lets you see total responses, Opportunity value, cost and much more. (See what it looks like in my org here.) Find out how to set up campaign hierarchies here. To add it as a related list on your campaign page layout, review this tutorial.

The Campaign Call Down Manager from Salesforce Labs is a great tool to use to allow sales staff to follow up on campaign results and easily update member status and log calls. I usually use it with a child campaign (like my Responses grouping) that has custom member status options like 'Pending Followup' (default) , 'Scheduled Meeting', 'Left Voicemail', etc.

Tip: I used to customize campaign member status options manually for each campaign. But then I discovered the Campaign Status Defaults from AAkonsult. The app makes it easy to define defaults based on Campaign Type. So, if you have a Type of 'Email', you can configure the status options to be: Clicked, Opened, Bounced, Unsubscribed, Enrolled, etc. Or if you have a Type of 'Cold Calling', you could use Called, Left Voicemail, No Forwarding Information, etc. This saves a lot of time! You can also choose to append those values to any existing values (handy if you want to apply changes to an existing campaign - which you can do by changing the type and then changing it back) or replace existing values.


There are a few other tools I use, such as the Campaign Member Summary using Google Charts from Scott Hemmeter from Arrowpointe (warning: it doesn't work well out-of-the-box when you have over a few thousand campaign members - ignore the pie chart in that case, pay attention to the values).

I also have created quite a few custom reports that receive parameters via the url and placed those on the Campaign page layout. Examples: 'Campaign Member Summary by Owner', 'Campaign Member Mailing List'.

If this seems like a rather complicated process, that's because it is. But, it shows that it is possible to use out-of-the-box tools plus a few free apps to create segmented campaigns and get your sales team involved in campaign planning.


Jenna Baze is a rather geeky girl with average social skills and an affinity for: Google Apps,, Pinterest, natural light photography and finding creative ways to avoid doing dishes (which includes updating a handful of blogs).
Email: | Twitter: @RatherGeeky | Facebook: Rather Geeky Tips


  1. This is a goldmine of information. Now sharing with my team.

    Thank you Jenna!

  2. You did a great job of breaking down a complex process and showing how you used the tools you had at your disposal! Well done Jenna!