Best practices for storing campaign data

Storing campaign data - overarching philosophy and specifics for each CRM

The automated reporting system in the Dataro app requires that campaign data is stored in a standard manner. Additionally, the performance of your models can be improved by storing campaign data in this same structured way. Our recommendations below are based on the best examples we have seen across all the clients and systems we work with.

Not only will implementing these recommendations improve your experience with Dataro, it will also serve as the basis for any future reporting that you may wish to do.

N.b. If you are not receiving automated reporting in the App this does not mean the Dataro Scores or Ranks are impacted.

How to accurately structure your data

Structuring fundraising data is essential to ensuring that results are measured accurately. We expect that everyone who was solicited as part of a campaign is assigned to the campaign and that every gift that was donated as a result is linked to the same campaign.

Note that these structures have different names in each CRM (for instance Campaign Member in Salesforce is equivalent to the Assigned Appeal in Blackbaud NXT).


A common mistake we see many charities make is not making a record of everyone who was solicited to a campaign and only recording that a Gift has been made. This makes it impossible to calculate key metrics like response rate, net return and ROI. Additionally, it makes it difficult to demonstrate how the Dataro models are impacting the fundraising effort.

Campaign Membership

There are a few key pieces of information that we require in the Campaign Member -- the contact ID, the campaign ID, the date and the response.


Campaign hierarchy (structure)

Dataro always assumes a two level hierarchy - i.e. a Parent campaign and a Child Campaign. The automatic reports in the Dataro app are generated at the Parent level, and include the include the details of all the linked child campaigns. 

Some CRMs allow for many more levels in the hierarchy, however Dataro will only look at the two lowest levels of the hierarchy.

For instance, for an mail appeal, the top level is the appeal & then the number of waves and other channels are recorded in the children (i.e. child campaign or package). Here is one typical example: 

  • The Parent Campaign = the overall campaign
  • The Child Campaigns = the breakdown of the Appeal eg. W1 & W2 etc 

Problematic structures

1. Not using the Parent/Child structure correctly

It is bad practice to store data in the following ways;

  • Not using child campaigns. By attaching every communication and gift to a single campaign, you are losing the granular understanding of each separate effort i.e. it's impossible to delineate between wave 1 & 2 or between mail and email components of the campaign. Although you will still get high level metrics with only a Parent Campaign, the additional information you will want to report on such as additional waves and different channels will not be seen and you will not see an accurate reflection of your results.
  • Using multiple parents for the same campaign. Splitting a campaign across multiple parents is not ideal and will result in multiple separate reports in the Dataro campaign analyser.

2. Having one campaign for communications and a separate campaign for gifts

This is bad practice because there is no link between the two. You will not be able to reconcile and your reporting will be incorrect.

CRM specific campaign storage instructions