Dataro Reference Schema

Last updated: September 28, 2026

The tables below document the structure of the reference schema.

N.b. it is not necessary or required that we have all fields with complete data. It is quite common for some data to not be available (i.e. full contact details) and in other cases to be incomplete (i.e. only a subset of the records have a birth_date). Furthermore, there can be good reasons why certain tables may not be present at all, i.e. if an organization has no recurring giving program, then we do not expect to have any data for commitments.

Jump to a table: Contacts | Revenue | Commitments | Campaigns | Campaign Members | Key

Contacts

Field Type Description Required
contact_idstringThe system identifier for an individual. This ID is used to join to the other tables. This is the Contact.Id in Salesforce or records.id in Blackbaud Raiser's Edge. This can refer to a person or organisation in some systems, but should be delineated using is_individual.Yes
contact_id_externalstringIn some systems users may see a different identifier on the front-end. For instance, the records.constituent_id in Raiser's Edge.
date_addeddateThe date when this record was added to the system. Currently, we do not require the time-part of this field if it is present.
last_modifieddateThe date when this record was last updated. Currently, we do not require the time-part of this field if it is present.
agenumericThe contact's age in years.
birth_datedateThe contact's date of birth. Currently, we are resolving this date to age, so year of birth can be supplied (as "01-01-YYYY").
first_namestringThe contact's first name. This is used as a proxy when age or gender is not supplied.
last_namestringThe contact's last name. This is used for presentation in the web app and for building campaigns.
is_inactivebooleanSome systems allow records to be marked as inactive, yet remain in the system. We use this flag to remove scores from the modelling output (although they are used in the model training).
is_deceasedbooleanBoolean flag to indicate whether a contact is currently deceased.
deceased_datedateThe date at which the contact was deceased (or notified as deceased).
genderstringThe gender of the contact as per the recorded value in the system.
postal_codestringThe postal code (or zip code) of the contact's residential address.
countrystringThe country in which the contact is currently residing.
is_individualbooleanBoolean flag to indicate whether the record is for an individual or organisation.
has_addressbooleanBoolean flag to indicate whether the record has a current mailing address in the system.
has_phonebooleanBoolean flag to indicate whether the record has a current phone number in the system.
phone_typestringThe type of number (e.g. work, home, etc.) of the contact's preferred phone number.
phone_is_validbooleanSome users may be using another service to validate contact phone numbers. If this information is captured we can use this data in the models as a boolean flag.
phone_is_mobilebooleanBoolean flag to indicate whether the preferred number is a landline or mobile.
has_emailbooleanBoolean flag to indicate whether the record has a current email address in the system.
addressstringThe contact's mailing address.
phone_numberstringThe contact's primary phone number.
emailstringThe contact's primary email address.

Revenue

Field Type Description Required
revenue_idstringThe system identifier for a revenue record. This corresponds to an instance of a gift or donation. In Blackbaud Raiser's Edge this is the gift.id, in Salesforce NPSP this is the Opportunity.Id.Yes
contact_idstringThe system identifier for an individual. This ID is used to join the revenue to the contact. In cases where the revenue is attributed to an organisation or household, then please supply the contact_id of the primary contact.Yes
revenue_id_externalstringIn some systems users may see a different identifier on the front-end.
amountnumericThe dollar amount of the realised donation in local currency. Ideally, failed gifts are shown with a zero value and records representing a refund are shown with a negative value.Yes
datedateAs best as can be determined, the date at which the donation was given by the donor. If not recorded, then the date received, debit date or post-date may be used (in order of preference). In Blackbaud Raiser's Edge this is gift.dte, in Salesforce NPSP this is Opportunity.CloseDate.Yes
one_off_or_rgstringIf recorded explicitly, a text field denoting whether the transaction is a single gift ("One-off") or an instance in a recurring payment sequence ("Regular-Gift").Yes
commitment_idstringThe system identifier for the recurring gift commitment record. In Salesforce NPSP, this is: Opportunity.npe03__Recurring_Donation__c.
campaign_idstringThe system identifier for the originating campaign for the revenue. This is used to determine the properties of the origin of the revenue e.g. whether it was part of a Mail Appeal or spontaneous online donation. In Salesforce this is Opportunity.CampaignId. In Blackbaud Raiser's Edge we use the Appeal & Package Ids of the first gift split.Yes
date_addeddateThe date when this record was added to the system. Currently, we do not require the time-part of this field if it is present.
last_modifieddateThe date when this record was last updated. Currently, we do not require the time-part of this field if it is present.
raw_statusstringThe description of the status of the revenue as it appears in the system, e.g. Successful, Failed, Rejected, Refunded, etc.
raw_payment_methodstringThe description of the payment method of the revenue as it appears in the system, e.g. Cash, Credit Card, Cheque, etc.

Commitments

Field Type Description Required
commitment_idstringThe system identifier for the recurring gift commitment record. Used to link gifts to their 'master' recurring gift schedule. In Salesforce NPSP, this is: npe03__Recurring_Donation__c.Id, in Blackbaud Raiser's Edge it is the gift.id for type==30.Yes
contact_idstringThe system identifier for an individual. This ID is used to join the commitment to the contact. In cases where the commitment revenue is attributed to an organisation or household, then please supply the contact_id of the primary contact.Yes
amountnumericThe current amount for each recurring payment.
start_datedateThe date at which the commitment was established (if known) or the date of the first scheduled payment.
end_datedateIf the commitment has been completed or terminated, the date at which it was terminated or the date of the final payment.
raw_statusstringThe current status of the commitment as it appears in the source system, e.g. Active, Terminated, Paused, Held, Cancelled, etc.Yes
raw_frequencystringThe current frequency of payments for the commitment as it appears in the source system, e.g. Monthly, Four-Weekly, Yearly, etc.Yes

Campaigns

Field Type Description Required
campaign_idstringThe system identifier for the campaign. In Salesforce this is Campaign.Id. In Blackbaud Raiser's Edge we use the concatenation of all Appeal & Package Ids combinations.Yes
parent_campaign_idstringIn systems with a hierarchical campaign structure, ideally revenue and members are linked to the lowest level of the campaign (i.e. the leaf nodes). Where this is the case, this field connotes the parent campaign of the campaign to which the revenue or member is attached. In Blackbaud Raiser's Edge, this is the appeal.id, in Salesforce NPSP this is Campaign.ParentId.
categorystringThe category field on the campaign. In Blackbaud Raiser's Edge we use the appeal and package.category, in Salesforce this is the Campaign.Type.
descriptionstringThe description field on the campaign. In Blackbaud Raiser's Edge we use the appeal and package.category, in Salesforce this is the Campaign.Description.
namestringThe name field on the campaign. In Blackbaud Raiser's Edge we use the appeal and package.description, in Salesforce this is the Campaign.Name.Yes
start_datedateThe start date of the campaign.
end_datedateThe end date of the campaign.
date_addeddateThe date when the record was added to the system.
date_modifieddateThe date when the record was last updated.

Campaign Members

Field Type Description Required
campaign_member_idstringThe system identifier for each unique combination of contact_id, campaign_id & date. In Salesforce this is CampaignMember.Id.Yes
contact_idstringThe system identifier for an individual. This ID is used to join the campaign members to the contact. In cases where the member is an organisation or household, then please supply the contact_id of the primary contact.Yes
campaign_idstringThe system identifier for the campaign. In Salesforce this is CampaignMember.CampaignId. In Blackbaud Raiser's Edge we use the concatenation of all Appeal & Package Ids combinations in constituent_appeals.Yes
datedateThe date when the contact was added to the campaign.Yes
raw_responsestringEspecially for telemarketing, the non-financial aspects of the interaction should be captured. Especially important for reporting in these cases is some indication of whether or not the contact received the call. These responses should be provided as they appear in the system or as they are provided by the telemarketing partner.

Key

Table Description
ContactsThe table of individuals and organisations. In Blackbaud Raiser's Edge this is the Records table, in Salesforce it is the Contact and Account objects.
RevenueThe core donation or gift structure. In Blackbaud Raiser's Edge this is the gift table, in Salesforce this is the NPSP Opportunity object.
CommitmentsPrimarily used to record recurring donation schedules.
CampaignsThe table of campaigns. Used primarily for grouping marketing efforts and attributing revenue. In Blackbaud Raiser's Edge this is the Appeals and Package tables, in Salesforce it is the Campaign object.
Campaign MembersThe table recording which donors were solicited as part of which marketing efforts. In Blackbaud Raiser's Edge this is the constituent_appeals table, in Salesforce it is the CampaignMember object.
Type Description
stringA sequence of characters.
dateA date.
numericA decimal number, which can be null. E.g. 2.5, 25.23.
booleanA True or False value.