Year-End Donor Campaign Segmentation in Salesforce


This documentation is intended to help nonprofits understand how to structure and run a segmented year-end or other campaign using the Salesforce platform. I’ll start with the strategy behind setting up your segmented campaign and then get into the nitty gritty of execution in your Salesforce system.

Decide what pieces of content you are going to produce

This will inform all further segmentation – at the end of the day you will segment toward something. For example, in my end of year campaign I will produce the following, specialized types of content:

  1. Letter specific to Board Members with Hand-Written Note (Board Note)
  2. Letter with a Hand-Written Note to top donors or top prospects (Top Prospect Note)
  3. General appeal letter to everyone else on our mailing list (General Appeal)
  4. Email appeal Week 1
  5. Follow-up email Week 2
  6. Phone call script

Decide your “Flow” of content for your campaign

Before you start segmenting your data, you’ll want to have a plan for how often (and when) you’ll communicate with each type of prospect via the content outlined above – and when you’ll *stop* sending them appeals or calling them (i.e. when they’ve donated). Remember that bi-weekly email appeals often get overwhelming for folks. Here’s a great reference article for how often to send:

  1. Year end hard mail letter [segmented per above]
  2. Follow-up email one week later
  3. Follow-up email two weeks, then three weeks later
  4. Phone calls to 1/3 of selected groups

Designate which pieces of Content are segmented, and which are criteria based

This is an important designation!

Segmented: Within a group of contacts different people will get different content, depending on criteria. For example – some of those recieving the year-end letter will get a hand-written note, others will get the general letter. Or some email recipients will get an ask of $500, while others will get an ask of $50. You don’t want people to get multiple year-end letters on the same day asking for different amounts. Segmenting allows you to dedupe and ensure that contacts get one, and only one, communication type for this effort.

Criteria-based: Only certain contacts will get this communication, but all those receiving the communication will get the same messaging. For example – only households who have donated over $500 get a phone call, but the phone script will be the same (either they were called, or they weren’t – there’s no nuance in what type of call was made).

Now I’ll go back to my content pieces above and designate them as a) segmented or b) criteria-based.

For this example to keep things simple all my email efforts are criteria-based (everyone on the list gets the same text) but you may decide to segment those too!

Screen Shot 2015-11-10 at 11.37.02 PM

Represent your work “Flow” in a Salesforce Campaign Hierarchy

You’ll want to create one Parent campaign in Salesforce, to hold together all the specific efforts of your year-end fundraising campaign. In this example we might have:

2015 Year End Appeal [parent campaign]

  • 2015 Year End Letter Campaign [child campaign – segmented]
  • 2015 Year End Email Campaign [child campaign – we’ll use the same one for all of our efforts]
  • 2015 Year End Phone Call Campaign [child campaign]

This way you’ll be able to see the sum total of all the donations that resulted from your efforts (Parent campaign) as well as specific donations resulting from your specific outreach efforts. In this example we used the same campaign for all email efforts, but you may decide to slice and dice even further.

Build your Campaign Segmentation in Salesforce

I’m returning to my “2015 Year End Letter Campaign” since this is the one I need to segment.

Building Segmented Campaigns in Salesforce is all about what I call the “Mayan Pyramid” approach – start from the bottom up! Layer each segment on top of the other, based upon more restrictive criteria. The following layers are examples, but each layer may have more than one criteria (and you may run multiple Salesforce reports for each).

Screen Shot 2015-11-10 at 11.38.18 PM

Map out who should be in each layer

Before you start going into Salesforce, you’ll want to map out roughly (on paper works!) who should be in each layer. It’ll be easiest to start from the top. In this case (referencing our nicknames from the content type in Step 1 above):

Board Note – current board members and board members that have retired in past year

Top Prospect Note – any board member, ever!; any donor that has given over $500 in the past 2 years, any donor that has given over $2,500 in the past 5 years; top donor prospects with an opportunity stage of “ready to ask”

General Appeal – anyone in our database without a “Do Not Contact” checkbox

Setup Your Campaign in Salesforce

You’ll want your campaign to mirror the outlines that you’ve done above. In this case, you’ll create a Campaign with the Member Status Values of “Board Note” “Top Prospect Note” and “General Appeal”


(Note: I have lots of screenshots in this and following steps that are too small for this format. Check out my file on the free Salesforce support site – requires Salesforce login)

Run Reports in Salesforce to Create your Base Layer

Remember to start at the bottom of your Mayan pyramid! You want to create the viable, minimum criteria by which someone will receive *any* year-end appeal letter. You will likely want to run multiple reports (seperately) to find this. Here are some examples:

  • All Contacts with Last Gift Date > 1/1/2011 and with “Do Not Contact” equals false
  • All Contacts with Last Volunteer Date > 1/1/2011 and and with “Do Not Contact” equals false
  • etc!

When you run your reports (with your criteria), you’ll hit the “Add to Campaign” button at the top of your report (if you don’t see the button, you’ll likely need to change your report type to one that includes Contacts – for example, instead of just an “Opportunities” report you’ll need an “Opportunities with Contact Roles”. Most reports will be done with the standard “Accounts and Contacts” report type.

For this step, You’ll add your Campaign Members with the member status of “General Appeal”

Run Reports in Salesforce to Create your Second Layer

Now is where things get interesting! Remember you will likely need to create multiple reports to find the contacts that meet the criteria you outlined above in Step 6. In each case, you will repeat this step exactly for each unique report, including for example:

  • any donor that has given over $500 in the past 2 years
  • any donor that has given over $2,500 in the past 5 years;

This time, when you hit the “Add to Campaign” button from each of your reports you’ll need to pay attention to select the stage 2 Member Status (Top Prospect), and you will want to Override whatever member status s/he had before. This is because we are working upward from the base layer of our pyramid, and we want them to get the “prospect” letter instead of the general letter. Putting all these contacts into one campaign ensures that they won’t get duplicate appeals.

Run Reports in Salesforce to Create your Top Layer

You’ll continue the approach in Step 9 to create the final reports for your top layer (or layers – continue working upwards from the base). Each time make sure to Select the new Member Status and hit the Override button.

What about my Criteria based Campaigns?

Setting up your criteria-based campaigns, as defined in Step 3 is similar to creating a segmented campaign. Instead of creating Campaign Member Statuses based on Segments, you’ll create Campaign Member statuses based on Stages.

For example for my phone call list, my Campaign Member Statuses might be:

  • Prospect
  • Called
  • Donated

Everyone who was added to this campaign (which could be via multiple different reports, as in above) would be added with the status of “Prospect”. Then when my callers came in they could mark someone as “Called” when they actually placed the call. In this case, we wouldn’t override anyone when adding them to the Campaign. Everyone who met the criteria, for example households who have donated over $500 or volunteers with more than 100 hours, would be added as a “Prospect”.

De-Segmenting (tracking Donors!)

A key piece to this campaign structure is knowing when someone has donated – i.e. you don’t want to send them the follow-up emails (or phone calls) if they’ve already donated during this giving campaign. When you log a new donation in Salesforce, it will automatically associate that transaction with the last campaign to which your contact was a part (and roll-up that money into the campaign’s summary totals). BUT it won’t mark that person’s individual campaign member status as “Donated”.

When you create a follow-up email campaign (or phone campaign) you’ll need to quickly sort out who already has the status of “Donated” in this (or your other year-end sub-campaigns) so you can use that value to sort them out.

There are many ways to go in and mark someone’s campaign member status as “Donated” – here are a few.

  1. go change the value manually every time there’s a donation by going into the campaign record and searching for that contact (and the other member of the household)
  2. run a report and search for “Accounts and Households” whose Last Household Donation Date = last 90 days, and mark those Contacts (in as many campaigns as needed) with the status of “Donated”
  3. use Anne Crawford’s Apsona trick (need the free Apsona app installed to do so):
  4. build advanced process builder functionality using Karen Fitton’s detailed process to tag campaign members automatically

Deduping by Household

But wait! What if I now have both spouses from a household in my campaign (since you can only add Contacts to a Campaign, not Accounts or Households). How can I make sure that each household only gets one letter? The developers of the Nonprofit Starter Pack have added a button at the top of the Campaign Record called “Household Mailing List”.

Once all Contacts are in your Campaign – hit this button to create your final snail mailing list.

From the default button you’ll hit the standard NPSP Campaign Household Mailing List. SAVE THIS AS another name so you don’t override the default button. Notice that the report is filtered by “Member Status does not contain Duplicate”. That’s because the Nonprofit Starter Pack code is running in the background, and adding the word “duplicate” to the campaign member status values you created if there is more than one contact from a household or account in your campaign.

You can customize this report to get the fields you want for mailing, like “Formal Greeting” or “Account Name”. Make sure you keep the filter to exclude member status values that containt “duplicate”.

Don’t see the Household Mailing List button? See next step in documentation.

Adding the “Household Mailing List Report” to the top of the Campaign

If you’re not seeing the “Household Mailing List” report at the top of your Campaign detail page, then you may need to add it. Here’s the steps (first go to Setup):

(see screenshots in Power of Us Hub documentation)

Other Apps that could Help

There are some great “apps” out there to help segment campaigns – combine campaigns into one, and view donors of another. Check out

Campaign Combiner – allows users to add campaign members from multiple campaigns into a target campaign, or exclude members who belong to multiple campaigns. Free. No current support.

Campaign Segmentation Wizard – this doesn’t do true segmentation like we’ve outlined above, but will randomly split your campaign into groups to do A/B testing. Free.

AAKonsult Campaign Status – setup a list of default status values by Campaign Type and the system automatically assigns. Free.

Thanks to TJ Warfield for these app recommendations!

Megan Himan has over fifteen years experience in the nonprofit sector and over ten years working on the Salesforce platform. She has a unique combination of deep technical skills paired with an ability to strategically convene groups, coach executives and leadership through transitions, and execute on project deliverables. She is Founder & Principal of BrightStep Partners - solutions with strategy for Salesforce success. In September 2017, she was named a Salesforce MVP.

Tagged with: , ,
Posted in Administration, Best Practice, Implementation Success, Planning, Strategy
3 comments on “Year-End Donor Campaign Segmentation in Salesforce
  1. Alastair says:

    Thanks very much for the clear & comprehensive breakdown: it’s a great primer, which I’ll be passing along to a small nonprofit I’m helping with SF fundraising implementation.


  2. Anne Crawford says:

    This one never gets old. Just passed it along yet again. Thank you for breaking down the complex topic of campaign segmentation into easily digestible steps.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Our (New!) Blog Site
Visit our new Blog location!

Visit our new Blog location!

Our Consulting Site
Follow BrightStep Partners on
%d bloggers like this: