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_id | string | The 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_external | string | In some systems users may see a different identifier on the front-end. For instance, the records.constituent_id in Raiser's Edge. | |
date_added | date | The 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_modified | date | The date when this record was last updated. Currently, we do not require the time-part of this field if it is present. | |
age | numeric | The contact's age in years. | |
birth_date | date | The 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_name | string | The contact's first name. This is used as a proxy when age or gender is not supplied. | |
last_name | string | The contact's last name. This is used for presentation in the web app and for building campaigns. | |
is_inactive | boolean | Some 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_deceased | boolean | Boolean flag to indicate whether a contact is currently deceased. | |
deceased_date | date | The date at which the contact was deceased (or notified as deceased). | |
gender | string | The gender of the contact as per the recorded value in the system. | |
postal_code | string | The postal code (or zip code) of the contact's residential address. | |
country | string | The country in which the contact is currently residing. | |
is_individual | boolean | Boolean flag to indicate whether the record is for an individual or organisation. | |
has_address | boolean | Boolean flag to indicate whether the record has a current mailing address in the system. | |
has_phone | boolean | Boolean flag to indicate whether the record has a current phone number in the system. | |
phone_type | string | The type of number (e.g. work, home, etc.) of the contact's preferred phone number. | |
phone_is_valid | boolean | Some 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_mobile | boolean | Boolean flag to indicate whether the preferred number is a landline or mobile. | |
has_email | boolean | Boolean flag to indicate whether the record has a current email address in the system. | |
address | string | The contact's mailing address. | |
phone_number | string | The contact's primary phone number. | |
email | string | The contact's primary email address. |
Revenue
| Field | Type | Description | Required |
|---|---|---|---|
revenue_id | string | The 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_id | string | The 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_external | string | In some systems users may see a different identifier on the front-end. | |
amount | numeric | The 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 |
date | date | As 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_rg | string | If 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_id | string | The system identifier for the recurring gift commitment record. In Salesforce NPSP, this is: Opportunity.npe03__Recurring_Donation__c. | |
campaign_id | string | The 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_added | date | The 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_modified | date | The date when this record was last updated. Currently, we do not require the time-part of this field if it is present. | |
raw_status | string | The description of the status of the revenue as it appears in the system, e.g. Successful, Failed, Rejected, Refunded, etc. | |
raw_payment_method | string | The 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_id | string | The 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_id | string | The 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 |
amount | numeric | The current amount for each recurring payment. | |
start_date | date | The date at which the commitment was established (if known) or the date of the first scheduled payment. | |
end_date | date | If the commitment has been completed or terminated, the date at which it was terminated or the date of the final payment. | |
raw_status | string | The current status of the commitment as it appears in the source system, e.g. Active, Terminated, Paused, Held, Cancelled, etc. | Yes |
raw_frequency | string | The 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_id | string | The 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_id | string | In 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. | |
category | string | The category field on the campaign. In Blackbaud Raiser's Edge we use the appeal and package.category, in Salesforce this is the Campaign.Type. | |
description | string | The description field on the campaign. In Blackbaud Raiser's Edge we use the appeal and package.category, in Salesforce this is the Campaign.Description. | |
name | string | The 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_date | date | The start date of the campaign. | |
end_date | date | The end date of the campaign. | |
date_added | date | The date when the record was added to the system. | |
date_modified | date | The date when the record was last updated. |
Campaign Members
| Field | Type | Description | Required |
|---|---|---|---|
campaign_member_id | string | The system identifier for each unique combination of contact_id, campaign_id & date. In Salesforce this is CampaignMember.Id. | Yes |
contact_id | string | The 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_id | string | The 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 |
date | date | The date when the contact was added to the campaign. | Yes |
raw_response | string | Especially 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 |
|---|---|
| Contacts | The table of individuals and organisations. In Blackbaud Raiser's Edge this is the Records table, in Salesforce it is the Contact and Account objects. |
| Revenue | The core donation or gift structure. In Blackbaud Raiser's Edge this is the gift table, in Salesforce this is the NPSP Opportunity object. |
| Commitments | Primarily used to record recurring donation schedules. |
| Campaigns | The 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 Members | The 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 |
|---|---|
| string | A sequence of characters. |
| date | A date. |
| numeric | A decimal number, which can be null. E.g. 2.5, 25.23. |
| boolean | A True or False value. |