We're hiring! View open positions →
DonorAtlas for Salesforce

Technical Administration Guide

Last Updated: March 2026 · Package Version: 1.2 · Namespace: donoratlas

1. Product Overview

DonorAtlas for Salesforce is a managed package that integrates the DonorAtlas platform with your Salesforce org. It allows organizations to enrich their Contact, Lead, and Account (Person Account) records with comprehensive donor research data (wealth information, giving history, board affiliations, education, work experience, private foundation connections, political affiliations, and more).

How It Works

  1. An admin installs the package and configures field mappings that tell DonorAtlas which Salesforce fields to use for matching (name, address, employer, school)
  2. Users sync individual Contact/Lead/Account records or bulk-sync from list views and campaigns
  3. DonorAtlas matches the Salesforce record to its database and creates a child Donor record (and child records for donations, education, work experience, etc.) in Salesforce with enriched data.

2. Prerequisites and System Requirements

Salesforce Edition

  • Required: Enterprise, Unlimited, or Developer Edition
  • Not Supported: Essentials, Professional (unless API access is enabled). Please contact our team if you'd like to use the integration and are on these Salesforce editions!

Required Salesforce Features

  • Salesforce API access must be enabled (this is enabled by default on Enterprise, Unlimited, and Developer Edition orgs).
  • Lightning Experience must be enabled (the package uses Lightning Web Components)

Per-User Authentication

DonorAtlas uses OAuth to authenticate each individual Salesforce user. This means every user who wants to sync records must log in with their own DonorAtlas account through the integration. Users who are not logged in (or don't have a DonorAtlas account) will see a “Log In” button when they view the DonorAtlas component.

Because of this, we recommend that you only activate the DonorAtlas sync components to users who have DonorAtlas accounts. You can control this by assigning DonorAtlas permission sets only to users who should interact with the integration, and only activating the components for those users (see instructions for activating components for only some users in section). Users without DonorAtlas accounts can still benefit from the data: they can view the underlying Donor records, child records, and run reports on DonorAtlas data, as long as they have the Viewer permission set or equivalent object access.

Important: The first user to connect to DonorAtlas must be a Salesforce Admin (or have the Customize Application or Manage Custom Permissions permission in Salesforce). This is required because the initial connection writes Custom Settings that require elevated permissions.

Browser Compatibility

Follows standard Salesforce browser support. Lightning Experience is required.

3. Installation

Installation Steps

  1. Navigate to the installation URL provided by DonorAtlas.

    If your org has a sandbox, we recommend installing in your sandbox first to test the integration before rolling it out to production. If you don't have a sandbox, installing directly in production is perfectly fine. Each DonorAtlas team can be linked with exactly one Salesforce Sandbox/Scratch environment and one Production environment.

  2. Choose Install for Admins Only (recommended) or Install for All Users.
  3. Click Install and wait for the installation to complete. You will receive an email confirmation.
  4. If you installed in a sandbox first, repeat the process for your production org once you've verified everything works.

Environment Limits

Each DonorAtlas team can be linked to one sandbox and one production Salesforce environment. You'll see both on your DonorAtlas profile page. If you try to link a second sandbox or production environment to a DonorAtlas team that already has one connected, you'll receive an error.

To switch to a different sandbox or production Salesforce environment, go to your DonorAtlas profile page, open the Configure page for that environment, and uninstall it. This frees up the slot so you can link a new sandbox or production org. If you need to link multiple production or sandbox environments, please contact our team!

What Happens During Installation

The package includes a post-install script (DonorAtlas_PostInstall) that automatically assigns the DonorAtlas_Integration_Admin permission set to the user who installs the package. .

Upgrading

  • The installer receives the Admin permission set if not already assigned
  • If you have a sandbox, test the upgrade there before upgrading production

4. Post-Installation Configuration

Quick Setup Checklist

  • Assign permission sets to users
  • Add the DonorAtlas component to Contact, Lead, and Account (Person Account) record pages
  • Add the DonorAtlas component to Campaign record pages (optional)
  • Add the "Sync with DonorAtlas" button to Contact, Lead, and Account list views (optional)
  • Configure field mappings via the DonorAtlas Configuration tab
  • Log in to DonorAtlas by clicking the "Log In" button in the sync component on any Contact/Lead/Account record

Adding the Sync Component to Record Pages

  1. Navigate to a Contact record page
  2. Click the gear icon > Edit Page to open Lightning App Builder.
  3. Scroll down to the Custom Components section and look for donorAtlasSync.
  4. Drag it onto the record page layout (recommended: above the activity section on the right, but outside the white box which contains the activity section).
  5. (Recommended) Set component visibility so the component only appears for users with a DonorAtlas permission set:
    1. Click on the component you just placed, then click Set Component Visibility in the properties panel on the right
    2. Add a filter with type Advanced
    3. Click Select under Field, then search for Permissions Custom Permission DonorAtlas_Can_View
    4. Click Done
  6. Click Save and Activate the page
  7. Repeat for Lead and Account (Person Account) record pages
  8. For Campaign pages, add the donorAtlasCampaignSync component in a similar way (with the same visibility filter).

Adding the Bulk Sync Button to List Views

  1. Go to Setup > Object Manager > Contact > List View Button Layout
  2. Edit the layout and add “Sync with DonorAtlas” to the Custom Buttons section.
  3. Save the layout
  4. Repeat for the Lead and Account objects

Configuring Field Mappings

  1. Navigate to the DonorAtlas Configuration tab (visible to users with the Admin permission set).
  2. Log in to DonorAtlas by clicking the “Log In” button. If you do not have a DonorAtlas account, please contact our team. We are able to add Configuration-only DonorAtlas accounts which do not count towards your team's usage of DonorAtlas seats. You must have a DonorAtlas account and be a member of your organization's DonorAtlas team to continue.
  3. A new browser tab opens and takes you to DonorAtlas. Sign in with your DonorAtlas credentials.
  4. DonorAtlas will ask you to authorize access to your Salesforce org. Click Allow.
  5. Once complete, you'll see a confirmation. Return to Salesforce.
  6. Select the Contact, Lead, or Account Field Mapping tab
  7. Configure which Salesforce fields DonorAtlas should use for matching:
    • Name Fields (required)
    • Addresses (highly recommended)
    • Employers, Occupations, and Schools
  8. For each field, you can select fields from related objects (for example, you can select Account.Name for Employers if you store employers in Salesforce Account objects)
  9. Click Save to persist the mapping, then Submit to push it to DonorAtlas.
Tip: The more fields you map, the better the match quality. See for recommendations and defaults.

5. Authentication Architecture

DonorAtlas uses a two-way OAuth authentication model that establishes trust in both directions: Salesforce needs credentials to call the DonorAtlas API, and DonorAtlas needs credentials to call back into Salesforce (for writing sync results and automatic data refreshes). Each user completes this setup individually.

Authentication Flow

The setup flow handles both directions in a single login experience:

Step 1
User clicks "Log In" in DonorAtlas component
Step 2
Browser opens DonorAtlas setup page
Step 3
User authenticates with their DonorAtlas credentials
Step 4
DonorAtlas initiates a Salesforce OAuth flow
User authorizes DonorAtlas to access their Salesforce org
Step 5
DonorAtlas receives Salesforce OAuth credentials
Via the External Client Application registered by the package
Step 6
DonorAtlas writes a JWT token back to Salesforce
Using the Salesforce credentials from Step 4
Step 7
Setup complete. Two-way trust established

After setup, communication flows in both directions:

  • Salesforce > DonorAtlas: When a user syncs a record, Salesforce sends the request to the DonorAtlas API with the JWT token (Authorization: Bearer <jwt_token>).
  • DonorAtlas > Salesforce: When DonorAtlas finishes processing a match or performs an automatic data refresh, it uses the Salesforce OAuth credentials to write Donor records and child records back into the user's Salesforce org. When a Salesforce user triggers a sync, resync, unsync, or any other DonorAtlas action from Salesforce, DonorAtlas uses that user's OAuth credentials for all calls to Salesforce. For automatic periodic data refreshes, DonorAtlas uses the same user who initially synced the relevant Salesforce records.
Note: DonorAtlas may update the DonorAtlas_Auth_Token__c custom setting record with a new JWT token at any time for increased security, using the OAuth credentials from Step 4.

JWT Token Write & Credential Fallback

In Step 6 above, DonorAtlas writes a JWT token back to Salesforce as a DonorAtlas_Auth_Token__c Custom Setting record. Creating Custom Settings requires the Customize Application or Manage Custom Permissions permission in Salesforce. If the current user does not have this permission, the write will fail.

When this happens, DonorAtlas falls back and retries the write using the OAuth credentials of each other connected user, in order of when they were initially connected to DonorAtlas. If no connected user has the necessary permission, the authentication flow will fail entirely.

Important: At least one Salesforce Admin (or a user with the Customize Application or Manage Custom Permissions permission) must be connected to DonorAtlas at all times. This ensures there is always a user whose credentials can be used to write Custom Settings when other users lack the required permission.

External Client Application

The package includes a registered External Client Application (DonorAtlas) that enables the Salesforce OAuth flow in Step 4 above. This is a standard Salesforce mechanism for allowing external systems to securely access your org's API.

  • OAuth Scopes: Api (API access) and RefreshToken (long-lived access for automatic re-syncing)
  • Distribution: Packaged with the managed package — no manual Connected App setup required

Token Storage

Tokens are stored in the DonorAtlas_Auth_Token__c Hierarchy Custom Setting. Because JWT tokens can be longer than 255 characters, the token is split across five text fields (Token_1__c through Token_5__c), supporting tokens up to 1,275 characters.

This is a per-user setting, meaning each Salesforce user has their own token and their own DonorAtlas session.

This splitting and re-combining is done automatically by the DonorAtlas API and the installed package.

Users (and admins) are unable to see these tokens, for security purposes. You can verify their existence by looking in Custom Settings in Salesforce Setup for DonorAtlas Auth Token.

API Communication

All API calls are made to the DonorAtlas API at https://api.donoratlas.com/v1/integrations/external/sf via HTTPS. The package includes a Remote Site Setting for api.donoratlas.com to enable secure callouts.

6. Permission Sets and Security

DonorAtlas includes three permission sets: DonorAtlas_Integration_Admin, DonorAtlas_Integration_User, and DonorAtlas_Integration_Viewer. These are managed package permission sets and cannot be modified by subscribers.

Permission Set Summary

CapabilityAdminUserViewer
View Donor records
Sync, resync, and unsync records
Access DonorAtlas Configuration tab

DonorAtlas Integration Admin

API Name: DonorAtlas_Integration_Admin

Full access to all DonorAtlas features, data, and configuration. Automatically assigned to the user who installs the package.

Grants:

  • The DonorAtlas_Can_Sync and DonorAtlas_Can_View custom permissions
  • Visibility to the DonorAtlas Configuration tab

Assign to: Salesforce administrators and users who need to configure field mappings.

DonorAtlas Integration User

API Name: DonorAtlas_Integration_User

Full access to donor data and sync operations, but no access to configuration.

Grants:

  • The DonorAtlas_Can_Sync and DonorAtlas_Can_View custom permissions

Assign to: Regular users who need to sync and work with donor data.

DonorAtlas Integration Viewer

API Name: DonorAtlas_Integration_Viewer

Read-only access to donor data. Cannot sync, resync, or unsync records.

Grants:

  • The DonorAtlas_Can_View custom permission

Assign to: Users who only need to view donor intelligence data but should not trigger syncs, unsyncs, or resyncs.

Custom Permission: DonorAtlas Can Sync

API Name: DonorAtlas_Can_Sync

Controls whether a user can initiate sync, resync, and unsync operations. Included in Admin and User permission sets, but NOT in Viewer.

Custom Permission: DonorAtlas Can View

API Name: DonorAtlas_Can_View

Indicates that a user has access to DonorAtlas components. Included in all three permission sets (Admin, User, and Viewer). This permission is useful for controlling component visibility on record pages — see for how to set up component visibility filters using this permission.

How to Assign Permission Sets

  1. Go to Setup > Permission Sets
  2. Click the desired permission set (e.g., DonorAtlas_Integration_User)
  3. Click Manage Assignments > Add Assignment
  4. Select the users and click Assign

Sharing Model

ObjectInternal SharingExternal Sharing
Donor__cRead/WritePrivate
Board_Affiliation__cControlled by Parent (Donor)Controlled by Parent
Donation__cControlled by Parent (Donor)Controlled by Parent
Education__cControlled by Parent (Donor)Controlled by Parent
Private_Foundation__cControlled by Parent (Donor)Controlled by Parent
Work_Experience__cControlled by Parent (Donor)Controlled by Parent
Note: Child objects inherit their sharing from the parent Donor record via Master-Detail relationships.

7. Security and Privacy

Data Handling

  • Salesforce-to-DonorAtlas: When you sync a Contact, Lead, or Account (Person Account), only the record ID is sent to DonorAtlas. DonorAtlas then fetches the Contact, Lead, or Account record and uses the data you specify in the field mappings to match the record to a DonorAtlas donor profile. No other Salesforce data leaves your org. The information you send to DonorAtlas is used according to our Terms and Conditions: we will never disclose any of your data to third parties nor will we use your information on DonorAtlas profiles. See our full trust portal here.
  • DonorAtlas-to-Salesforce: Enriched donor data is written to custom objects within your Salesforce org. This data is governed by your org's standard Salesforce security model, including sharing rules, permission sets, and field-level security.

8. Data Model

The diagram below shows the DonorAtlas data model. The Donor object is the central entity, with five child objects linked via Master-Detail relationships, and three lookup relationships to standard Contact, Lead, and Account (Person Account) objects.

Entity Relationship Diagram

Contact

Standard Object

FirstName

LastName

Email

Lead

Standard Object

FirstName

LastName

Email, Company

Account

Standard Object (Person Account)

FirstName

LastName

PersonEmail

Lookup

Lookup

Lookup

Donor__c

Central Custom Object

Donor_Atlas_ID__c

Full_Name__c, Age__c

Net_Worth_Min__c / Max__c

Contact__c, Lead__c, Account__c

Master-Detail

Master-Detail

Master-Detail

Master-Detail

Master-Detail

Donation__c

Recipient_Name__c

Amount_Min/Max__c

Year_Start/End__c

Education__c

Institution_Name__c

Degree__c

Graduation_Year__c

Work_Experience__c

Company_Name__c

Job_Title__c

Start/End_Date__c

Board_Affiliation__c

Organization_Name__c

Title__c

Year_Start/End__c

Private_Foundation__c

Foundation_Name__c

Assets__c

Revenue__c

Relationship Summary

RelationshipTypeFromToRelationship Name
Contact to DonorLookupDonor__c.Contact__cContactDonor__r
Lead to DonorLookupDonor__c.Lead__cLeadDonors__r
Account to DonorLookupDonor__c.Account__cAccountDonors__r
Donor to Board AffiliationMaster-DetailBoard_Affiliation__c.Donor__cDonor__cBoard_Affiliations__r
Donor to DonationMaster-DetailDonation__c.Donor__cDonor__cDonations__r
Donor to EducationMaster-DetailEducation__c.Donor__cDonor__cEducations__r
Donor to Work ExperienceMaster-DetailWork_Experience__c.Donor__cDonor__cWork_Experiences__r
Donor to Private FoundationMaster-DetailPrivate_Foundation__c.Donor__cDonor__cPrivate_Foundations__r

Internal / Configuration Objects

ObjectTypePurpose
DonorAtlas_Auth_Token__cHierarchy Custom SettingStores per-user JWT authentication tokens (split across 5 fields)
DonorAtlas_Configuration_Setting__cHierarchy Custom SettingStores field mapping configuration (50 Contact mappings + 50 Lead mappings + 50 Account mappings)
DonorAtlas_Env__mdtCustom Metadata TypeEnvironment configuration (API base URL, frontend URL) — internal use only

9. Field-Level Data Dictionary

Donor__c (Donor)

The central object that stores enriched donor data from DonorAtlas. Linked to a Contact, Lead, or Account (Person Account) via lookup relationships.

Record Name: Text field (displays DonorAtlas ID) • Sharing Model: Read/Write • Reports Enabled: Yes

Identification Fields

API NameLabelTypeDescription
Donor_Atlas_ID__cDonorAtlas IDText(255)Unique identifier from the DonorAtlas platform. External ID.
Related_Record__cRelated RecordText(18)Stores the Salesforce ID of the linked Contact, Lead, or Account. External ID, Unique.
Contact__cContactLookup(Contact)Lookup to the associated Contact record.
Lead__cLeadLookup(Lead)Lookup to the associated Lead record.
Account__cAccountLookup(Account)Lookup to the associated Account (Person Account) record.
Donor_Atlas_URL__cDonorAtlas URLURLDirect link to the donor’s full profile on DonorAtlas.

Name Fields

API NameLabelTypeDescription
First_Name__cFirst NameText(100)Primary given name.
Last_Name__cLast NameText(100)Family name or surname.
Middle_Name__cMiddle NameText(100)Middle name or initial.
Full_Name__cFull NameFormula(Text)Auto-generated full name.
Title__cTitleText(50)Honorific or professional title.
Suffix__cSuffixText(50)Generational suffix.

Demographic Fields

API NameLabelTypeDescription
Age__cAgeNumber(3,0)Donor’s age in years.
Sex__cSexPicklistValues: M, F, O.
Religion__cReligionText(100)Religious affiliation.
Is_Deceased__cIs DeceasedCheckboxDefault: false.

Address Fields

API NameLabelTypeDescription
Street_Address__cStreet AddressText(255)Primary street address.
Street_Address_Line_2__cStreet Address Line 2Text(255)Secondary address line.
City__cCityText(100)City name.
State__cStateText(50)State or province abbreviation.
Zip_Code__cZip CodeText(20)ZIP or postal code.

Financial / Net Worth Fields

API NameLabelTypeDescription
Net_Worth_Min__cNet Worth MinCurrency(18,2)Lower bound of estimated net worth range.
Net_Worth_Max__cNet Worth MaxCurrency(18,2)Upper bound of estimated net worth range.

Nonprofit Giving Fields

API NameLabelTypeDescription
Nonprofit_Capacity__cNonprofit CapacityCurrency(18,2)Estimated giving capacity to nonprofits.
Nonprofit_Avg_Amount__cNonprofit Avg AmountCurrency(18,2)Average amount per nonprofit donation.
Nonprofit_Total_Amt_Min__cNonprofit Total Amount MinCurrency(18,2)Lower bound of total nonprofit giving.
Nonprofit_Total_Amt_Max__cNonprofit Total Amount MaxCurrency(18,2)Upper bound of total nonprofit giving.

Political Giving Fields

API NameLabelTypeDescription
Political_Capacity__cPolitical CapacityCurrency(18,2)Estimated capacity for political donations.
Political_Avg_Amount__cPolitical Avg AmountCurrency(18,2)Average amount per political donation.
Political_Total_Donations__cPolitical Total DonationsNumber(10,0)Total number of political donations.

Other Fields

API NameLabelTypeDescription
Top_Issues__cTop IssuesLong Text(1000)Key issues and causes the donor supports.
Date_Last_Updated__cDate Last UpdatedDateWhen the donor’s record was last updated in DonorAtlas.
Date_Last_Synced__cDate Last SyncedDateTimeWhen this Salesforce record was last synced.

Donation__c (Donation)

Record Name: AutoNumber (DON-{0000}) • Sharing: Controlled by Parent
API NameLabelTypeDescription
Donor__cDonorMaster-Detail(Donor__c)Parent Donor record.
Recipient_Name__cRecipient NameText(255)Name of the nonprofit organization.
Amount_Min__cAmount MinCurrency(18,2)Lower bound of amount range.
Amount_Max__cAmount MaxCurrency(18,2)Upper bound of amount range.
Year_Start__cYear StartText(4)Year the donation was made.
Year_End__cYear EndText(4)Year the giving period ended.
Donor_Atlas_URL__cDonorAtlas URLURLLink to recipient in DonorAtlas.

Education__c (Education)

Record Name: AutoNumber (EDU-{0000}) • Sharing: Controlled by Parent
API NameLabelTypeDescription
Donor__cDonorMaster-Detail(Donor__c)Parent Donor record.
Institution_Name__cInstitution NameText(255)Name of the educational institution.
Degree__cDegreeText(100)Type of degree.
Graduation_Year__cGraduation YearText(4)Year completed.
Start_Date__cStart DateDateEnrollment start date.
End_Date__cEnd DateDateGraduation or end date.
Donor_Atlas_URL__cDonorAtlas URLURLLink to institution in DonorAtlas.

Work_Experience__c (Work Experience)

Record Name: AutoNumber (WORK-{0000}) • Sharing: Controlled by Parent
API NameLabelTypeDescription
Donor__cDonorMaster-Detail(Donor__c)Parent Donor record.
Company_Name__cCompany NameText(255)Name of the employer.
Job_Title__cJob TitleText(255)Position or role held.
Start_Date__cStart DateDateEmployment start date.
End_Date__cEnd DateDateEmployment end date.
Donor_Atlas_URL__cDonorAtlas URLURLLink to company in DonorAtlas.

Board_Affiliation__c (Board Affiliation)

Record Name: AutoNumber (BA-{0000}) • Sharing: Controlled by Parent
API NameLabelTypeDescription
Donor__cDonorMaster-Detail(Donor__c)Parent Donor record.
Organization_Name__cOrganization NameText(255)Name of the board or org.
Title__cTitleText(255)Role on the board.
Year_Start__cYear StartText(4)Year board service began.
Year_End__cYear EndText(4)Year board service ended.
Donor_Atlas_URL__cDonorAtlas URLURLLink to organization in DonorAtlas.

Private_Foundation__c (Private Foundation)

Record Name: AutoNumber (PF-{0000}) • Sharing: Controlled by Parent
API NameLabelTypeDescription
Donor__cDonorMaster-Detail(Donor__c)Parent Donor record.
Foundation_Name__cFoundation NameText(255)Name of the foundation.
Relationship__cRelationshipLong Text(32000)Donor’s relationship to the foundation.
Assets__cAssetsCurrency(18,2)Total assets held.
Revenue__cRevenueCurrency(18,2)Annual revenue.
Donor_Atlas_URL__cDonorAtlas URLURLLink to foundation in DonorAtlas.

10. Field Mappings

When you sync a Contact, Lead, or Account (Person Account) with DonorAtlas, the integration needs to know which fields on your Salesforce record to send for matching. For example, DonorAtlas needs a person's name and one other piece of information to match them to a DonorAtlas donor. Field mappings are the configuration that tells DonorAtlas where to find these values on your Contact, Lead, and Account records.

The more information you provide, the better the match quality. It is highly recommended to map at least First Name, Last Name, and an address. Adding Employers and Schools further improves accuracy, and you can configure as many of each as you have available.

Recommended Mappings

We recommend the following mappings for standard Salesforce fields. You can configure these from the DonorAtlas Configuration tab after installation.

Contact:

DonorAtlas FieldSalesforce Field
First NameContact.FirstName
Last NameContact.LastName
Middle NameContact.MiddleName (if enabled in org)
AddressesContact.MailingAddress, Contact.OtherAddress
PhonesContact.Phone, Contact.MobilePhone
EmailsContact.Email
EmployersContact.Account.Name

Lead:

DonorAtlas FieldSalesforce Field
First NameLead.FirstName
Last NameLead.LastName
Middle NameLead.MiddleName (if enabled in org)
AddressesLead.Address
PhonesLead.Phone, Lead.MobilePhone
EmailsLead.Email

Account (Person Account):

DonorAtlas FieldSalesforce Field
First NameAccount.FirstName
Last NameAccount.LastName
Middle NameAccount.MiddleName (if enabled in org)
AddressesAccount.PersonMailingAddress, Account.PersonOtherAddress
PhonesAccount.Phone, Account.PersonMobilePhone
EmailsAccount.PersonEmail
Note: Account field mappings are only applicable for orgs that have Person Accounts enabled. Person Accounts merge the Account and Contact standard objects into a single record.

Mapping Categories

CategoryDescriptionSupports MultipleExample Fields
First NameThe donor’s first/given nameNo (single field)FirstName
Last NameThe donor’s last/family nameNo (single field)LastName
Middle NameThe donor’s middle name or initialNo (single field)MiddleName
PhonesReserved for future useYes (up to 50)Phone, MobilePhone, HomePhone
EmailsReserved for future useYes (up to 50)Email, npe01__HomeEmail__c
EmployersEmployer/company names for matchingYes (up to 50)Account.Name, Company
SchoolsEducational institutions for matchingYes (up to 50)Custom fields for alma mater
AddressesPhysical addresses for matchingYes (up to 50)MailingAddress, OtherAddress
Phone and email mappings are included in the configuration interface but are not currently used for matching. They are reserved for future use and may be enabled in a later release. You can configure them now so they're ready when support is added.

Related Object Mappings

You can map fields from related objects:

  • Account.Name — The Contact's Account name (for employer matching)
  • ReportsTo.Name — The Contact's “Reports To” contact name
  • Any lookup relationship accessible from the Contact, Lead, or Account

Storage

Mappings are stored in DonorAtlas_Configuration_Setting__c using 50 Contact mapping fields, 50 Lead mapping fields, and 50 Account mapping fields. Each stores the format: category::subcategory::FieldApiName

11. Data Synchronization

Sync Architecture

DonorAtlas sync is a two-way data synchronization between Salesforce and the DonorAtlas platform:

  1. When a Salesforce user syncs a Contact, Lead, or Account, Salesforce sends only the record ID to DonorAtlas via an API call.
  2. DonorAtlas uses the user's Salesforce OAuth credentials to fetch the relevant fields from the Contact/Lead/Account record using the Salesforce API.
  3. DonorAtlas uses this information to find a match or research the donor to produce a final DonorAtlas donor profile.
  4. If a match is found, a Donor__c record is created in Salesforce with the enriched data. If no match is found, no Donor__c record is created, and a “No Match” message is displayed on the Salesforce record.
  5. After a record has been synced, DonorAtlas automatically keeps the Donor record and its child records (Donations, Education, Work Experience, Board Affiliations, Private Foundations) up to date. By default, this happens every 7 days. Contact our team if you would like to change this interval.

Credit Usage

ActionCredit Cost
Syncing a new Contact, Lead, or Account1 DonorAtlas import
Resyncing a previously synced record0 (free)
Unsyncing a record0 (free)
Automatic re-syncing by DonorAtlas0 (free)
Only the initial sync of a new record uses a DonorAtlas import credit. All subsequent data refreshes — whether manually triggered via Resync or automatically performed by DonorAtlas — do not incur any additional import credits.

User-Initiated Sync Methods

Single Record Sync

  1. Navigate to a Contact, Lead, or Account (Person Account) record page
  2. In the DonorAtlas component, click Sync with DonorAtlas.
  3. The component sends the record's ID to DonorAtlas via an API call
  4. DonorAtlas processes the match asynchronously
  5. The component polls for status updates (10s, then 30s, then 2m intervals, up to 30 minutes).
  6. When complete, the Donor record and child records are created/updated in Salesforce (or a “No Match” message is displayed on the Salesforce record).

Bulk Sync from List Views

  1. Navigate to a Contact, Lead, or Account list view
  2. Select the records you want to sync (checkbox selection).
  3. Click the “Sync with DonorAtlas” button.
  4. Record IDs are sent in batches of up to 1,000 to the DonorAtlas API.

Campaign Sync

  1. Navigate to a Campaign record page
  2. In the DonorAtlas Campaign Sync component, view sync status for Contacts and Leads separately.
  3. Click Sync with DonorAtlas for Contacts, Leads, or both
  4. All Campaign Members of the selected type are synced in bulk via an API call. This method supports an unlimited number of Contact and Lead records at once (the integration simply sends the Salesforce Campaign ID to DonorAtlas, which DonorAtlas uses to find all Contact or Lead IDs to sync).

Sync Statuses

StatusDescription
Not SyncedThe record has not been synced with DonorAtlas
Pending / ProcessingThe record has been sent to DonorAtlas and is being processed
SyncedA match was found and the Donor record and child records have been created/updated in Salesforce
No MatchDonorAtlas could not find a matching donor profile

Resync

Resync refreshes the data for a previously synced record. Use this when DonorAtlas has updated its database and you want the latest data.

Unsync

Unsync removes the underlying Donor record and its child records from Salesforce, and unsyncs the Contact/Lead/Account from DonorAtlas. Use this when the match is incorrect or you wish to remove the Donor record and its child records from Salesforce.

12. UI Components

DonorAtlas Sync Component (Contact/Lead/Account Pages)

Component: donorAtlasSync
Placement: Contact, Lead, and Account (Person Account) record pages
Description: Displays the sync status of a Contact, Lead, or Account record and provides controls to sync, resync, unsync, and navigate to the DonorAtlas profile.

StateWhat the User Sees
Not authorizedDonorAtlas logo and a “Log In” button.
Authorized but not configuredMessage directing the user to configure field mappings.
Not synced“Sync with DonorAtlas” button to initiate sync.
ProcessingSpinner with “Pending...” status.
SyncedLink to DonorAtlas profile, “Resync” and “Unsync” buttons, and View Record button to navigate to the Donor record in Salesforce.
No match“No match found” message with option to Unsync

DonorAtlas Campaign Sync Component (Campaign Pages)

Component: donorAtlasCampaignSync
Placement: Campaign record pages
Description: Shows sync status for all campaign members, separated by Contacts and Leads. Displays progress (e.g., “3/10 Contacts synced”) and provides bulk sync/resync for campaign members.

DonorAtlas Configuration (App Page)

Component: donorAtlasConfiguration
Placement: Dedicated app page accessible via the DonorAtlas Configuration app (which you can find in the App Launcher)
Visibility: Only visible to users with the Admin permission set
Description: Field mapping configuration tool with three tabs (Contact, Lead, and Account). Provides drag-and-drop style mapping of Salesforce fields to DonorAtlas matching categories. The Account tab is used for Person Account field mappings.

Component Architecture

The sync components use a Visualforce iframe architecture. The host LWC embeds a Visualforce page via iframe, which in turn loads a Lightning Out application containing the actual sync component.

Lightning Record Page
└── donorAtlasSync (LWC – host wrapper)
└── iframe (Visualforce page)
└── donorAtlasSyncApp (Aura Lightning Out app)
└── donorAtlasSync (LWC – actual component)

Communication between the iframe and host uses the postMessage API for resize events, toast notifications, and navigation.

This architecture ensures that the DonorAtlas component never interferes with the rest of your Contact/Lead/Account/Campaign pages and never makes them load slower. The DonorAtlas component is essentially loaded as a separate page entirely. Sometimes, this causes it to take an extra second to load the DonorAtlas component.

13. Reports and Report Types

In Salesforce, a report type defines which objects and relationships are available when building a report. DonorAtlas ships with four report types that cover common use cases, and you can create your own if you need different combinations of objects.

Included Report Types

The package includes four report types out of the box:

Report TypeObjects IncludedUse This When You Want To…
DonorsDonor onlyReport on DonorAtlas data by itself — net worth, giving capacity, demographics, etc. — without needing Contact, Lead, or Account fields.
Contacts with DonorsContact → DonorCombine Contact fields (name, email, account, etc.) with DonorAtlas donor data. This is the most commonly used report type.
Leads with DonorsLead → DonorSame as above, but for Leads instead of Contacts.
Contacts with Donors with EducationContact → Donor → EducationReport on Contacts and their donor data alongside DonorAtlas education records. Use this to filter or group by institution, degree, or graduation year (e.g., find all alumni of a specific university).
All joins are inner joins, meaning Contacts/Leads without a linked Donor will not appear in your report results.

Running a Report Using an Included Report Type

  1. Go to the Reports tab and click New Report
  2. In the report type picker, search for “Donor” to find the DonorAtlas report types
  3. Select the report type that fits your needs (e.g., “Contacts with Donors”)
  4. Click Start Report
  5. Add columns from the available sections — for “Contacts with Donors,” you'll see both Contact fields and Donor fields
  6. Add filters as needed. Common Donor filters include:
    • Net Worth Min / Net Worth Max — filter by estimated net worth
    • Nonprofit Capacity — filter by estimated giving capacity
    • State / City — filter by location
    • Age — filter by age
  7. Click Save & Run
Tip: Include the DonorAtlas URL column in your report for quick access to full donor profiles on the DonorAtlas platform.

Example Reports

The package installs three example reports in the DonorAtlas Example Reports folder to help you get started:

ReportReport TypeDescription
High Net Worth Contacts in NYContacts with DonorsContacts with estimated net worth >= $5M located in New York
Senior Donors High Nonprofit CapacityContacts with DonorsOlder donors with high nonprofit giving capacity
High Net Worth Ohio State Alumni NYContacts with Donors with EducationHigh net worth contacts who attended Ohio State and are in NY

You can clone these reports and modify them to fit your needs, or use them as references when building your own.

Creating a Custom Report Type

The four included report types cover some common scenarios, but you may need a custom report type if you want to report on other Donor child objects — for example, Donations, Work Experience, Board Affiliations, or Private Foundations. You might also want a report type that combines a child object with Contacts, Leads, or Accounts (e.g., “Contacts with Donors with Board Affiliations”).

Here are the Donor child objects available for custom report types:

Child ObjectRelationship NameExample Use Case
Donation (Donation__c)DonationsReport on nonprofit giving history by recipient, amount, or year
Education (Education__c)EducationsReport on educational background by institution or degree
Work Experience (Work_Experience__c)Work ExperiencesReport on employment history by company or job title
Board Affiliation (Board_Affiliation__c)Board AffiliationsReport on board memberships by organization
Private Foundation (Private_Foundation__c)Private FoundationsReport on foundation relationships, assets, or revenue

To create a custom report type:

  1. Go to Setup > search for Report Types > click New Custom Report Type
  2. Set the Primary Object — choose the object you want as the starting point:
    • Use Contact, Lead, or Account if you want Contact/Lead/Account fields alongside Donor data
    • Use Donor (Donor__c) if you only need Donor data and its children
  3. Give it a name, description, and choose a category (e.g., “Other”)
  4. Set Deployment Status to Deployed
  5. Click Next to define object relationships:
    • If your primary object is Contact, Lead, or Account, add Donor (Donor__r) as the next level
    • Then add the child object you need (e.g., Donations, Board Affiliations)
    • Salesforce supports up to 4 levels of object relationships in a report type
  6. For each join, choose whether records without the related object should be included (outer join) or excluded (inner join)
  7. Click Save, then use the Edit Layout button to choose which fields from each object are available to report builders

14. Troubleshooting and FAQ

Sync says “Pending” or “Processing” for a long time

Cause: DonorAtlas can take some time to process a sync request, especially if you're syncing a large number of records.

Resolution: If it's been more than 15 minutes when syncing a single record, contact DonorAtlas support, and include the ID of the Contact, Lead, or Account!

DonorAtlas component isn't showing up on the record page

Cause: The component hasn't been added to the page layout, it hasn't been activated for this user, or the user lacks the required permissions.

Resolution:

  1. Verify the user has one of the three DonorAtlas permission sets assigned (DonorAtlas_Integration_Admin, DonorAtlas_Integration_User, or DonorAtlas_Integration_Viewer)
  2. Edit the Contact/Lead/Account record page in Lightning App Builder:
    • Click the gear icon > Edit Page
    • Search for donorAtlasSync in the Components panel
    • Drag it onto the page layout
    • Click Save and Activate
  3. For Campaign pages, add donorAtlasCampaignSync
  4. Make sure the page activation applies to the correct app, record type, and/or profile. Click Activation in the Edit Page dialog to see where it's activated and for which users.

Sync returned “No Match”

Cause: DonorAtlas could not find a matching donor profile based on the information provided.

Resolution:

  1. Verify the Contact/Lead/Account has sufficient data for matching (at minimum: first name, last name, and one other piece of information)
  2. Check that the field mappings are correctly configured in the DonorAtlas Configuration app
  3. Ensure the mapped fields actually contain data on the record being synced
  4. Unsync and then Sync the Contact, Lead, or Account again to retry the match.
  5. If the issue persists, contact DonorAtlas support, and include the ID of the Contact, Lead, or Account!

My component says “refused to connect”

File not found

myorg.vf.force.com refused to connect.

Cause: Your Salesforce environment has clickjack protection enabled, and your Salesforce domain is not configured as a trusted domain. Therefore, Salesforce is blocking the component from loading.

Resolution:

  1. Navigate to SetupSession SettingsTrusted Domains and click Add Domain.
  2. Enter the domain in the browser URL bar where you are logged into Salesforce and using Lightning Experience (e.g. myorg.lightning.force.com).
  3. Select Visualforce Pages for iFrame Type, and click Save.
  4. Go back to the component and check again!

15. Limits and Considerations

Salesforce Governor Limits

  • SOQL Query Limit: As a verified managed package, DonorAtlas runs under its own separate SOQL query limit
  • Callout Limit: Each sync operation makes HTTP callouts. Salesforce allows 100 callouts per transaction. Bulk syncs batch records in groups of 1,000
  • Storage: Plan for approximately 1 Donor record + 5-20 child records per synced Contact/Lead/Account

DonorAtlas API Limits

  • Metered based on your subscription plan
  • When credits are exhausted, the API returns an HTTP 402 error
  • Contact DonorAtlas to upgrade your plan

16. Uninstallation

Before Uninstalling

Warning: Complete these steps before uninstalling to avoid data loss.
  1. Export your data — run reports on Donor records first
  2. Remove DonorAtlas components from page layouts
  3. Remove list view buttons
  4. Remove permission sets from users

Uninstallation Steps

  1. Go to your DonorAtlas profile page and click on the Salesforce integration Configure button.
  2. Click the Uninstall button and wait a few minutes. This will unsync all records from Salesforce and delete all DonorAtlas data from your Salesforce org.
  3. Back on Salesforce, go to Setup > Installed Packages and find DonorAtlas and click Uninstall.
  4. Review the components that will be removed and click Uninstall.

17. Glossary

TermDefinition
DonorA DonorAtlas Donor record (Donor__c) containing enriched data. Linked to a Contact, Lead, or Account (Person Account).
SyncSending a Contact/Lead/Account's info to DonorAtlas for matching and enrichment.
ResyncRefreshing data for an already-synced record.
UnsyncRemoving the link between a Contact/Lead/Account and its Donor record. Does not delete the Donor.
Field MappingConfiguration telling DonorAtlas which Salesforce fields to read for matching.
Nonprofit CapacityEstimate of how much a donor is likely to give to nonprofits next year.
Political CapacityEstimate of how much a donor is likely to give to political causes.
Net WorthEstimated total net worth, provided as a range (min/max).
DonorAtlas IDUnique identifier for a donor in DonorAtlas. Stored in Donor_Atlas_ID__c.
DonorAtlas URLDirect link to the donor's full profile on DonorAtlas.
JWT TokenJSON Web Token for authenticating API calls. Stored per-user.
Hierarchy Custom SettingSalesforce setting type allowing different values at org, profile, and user levels.
Master-Detail RelationshipTight parent-child relationship where deleting the parent deletes all children.
2GPSecond-Generation Managed Package. Modern Salesforce packaging with namespace isolation.