Skip to main content
The Contact mapping between WeGive and Salesforce is a fundamental component of the integration, enabling seamless synchronization of individual donor information between the two platforms. This mapping ensures that all aspects of donor contacts, from basic personal details to complex relationship management, are properly tracked and maintained across both systems.

Sync Process Overview

Contact-Level Synchronization

WeGive syncs individual donors at the Contact level in Salesforce, ensuring that all related information and relationships are properly maintained. This includes not only the basic contact information but also the complex web of relationships between contacts, accounts, and other related records. The integration handles both individual contacts and household members, with special consideration for the different types of relationships that may exist.

Pulling Data from Salesforce

When pulling data from Salesforce, WeGive queries Contacts based on the last modified date and. The integration pulls comprehensive data from the Contact record, including all standard and custom fields that have been mapped. This data is used to create or update the corresponding WeGive Donor record, maintaining all the necessary relationships and attributes.

Pushing Data to Salesforce

When a Donor record is created or updated in WeGive, the integration compiles a payload for the Salesforce Contact object. This payload includes all mapped fields and ensures that the Contact record is properly created or updated in Salesforce. The integration also handles the creation and maintenance of relationships between contacts and other related records, such as accounts and opportunities.

Field Mappings

Salesforce Object: Contact
WeGive Model: Donor (type: individual)

How Contact Data Syncs

This table shows all fields that sync between WeGive and Salesforce for individual donors. Direction:
  • Import from Salesforce - Data imports from Salesforce into WeGive only
  • Export to Salesforce - Data exports from WeGive to Salesforce only
  • Both Ways - Data syncs in both directions
Mapping Types:
  • Configurable - Can be customized via integration settings
  • Hard-coded - Built into the integration logic and cannot be changed

Standard Field Mappings

Salesforce FieldWeGive FieldWeGive API FieldDirectionTypeNotes
IdSalesforce IDsalesforce_idImport from SalesforceHard-codedSalesforce’s unique identifier for this contact
AccountIdSalesforce Account IDsalesforce_account_idBoth WaysConfigurable import
Hard-coded export
Links contact to their Salesforce Account Household
CreatedDateCreated Atcreated_atImport from SalesforceHard-codedWhen the contact was created in Salesforce
FirstNameFirst Namefirst_nameBoth WaysConfigurable import
Hard-coded export
Defaults to “FNU” if empty when sending to Salesforce
MiddleNameMiddle Namemiddle_nameBoth WaysConfigurable
LastNameLast Namelast_nameBoth WaysConfigurable import
Hard-coded export
Defaults to “LNU” if empty when sending to Salesforce
BirthdateBirthdatebirthdateBoth WaysConfigurable
Gender__CGendergenderBoth WaysConfigurable
EmailPrimary EmailDynamic based on preferred_emailExport to SalesforceHard-codedWeGive determines which email to use based on “Preferred Email” setting
npe01__HomeEmail__cEmail 1email_1Both WaysConfigurable
npe01__WorkEmail__cEmail 2email_2Both WaysConfigurable
npe01__AlternateEmail__cEmail 3email_3Both WaysConfigurable
npe01__Preferred_Email__cPreferred Emailpreferred_emailBoth WaysConfigurableControls which email is used as the primary Email field
MobilePhoneMobile Phonemobile_phoneBoth WaysConfigurable
HomePhoneHome Phonehome_phoneBoth WaysConfigurable
OtherPhoneOffice Phoneoffice_phoneBoth WaysConfigurable
FaxFaxfaxBoth WaysConfigurable
npe01__PreferredPhone__cPreferred Phonepreferred_phoneBoth WaysConfigurable
MailingStreetMailing Address - Streetmailing_address.address_1Both WaysConfigurable import
Hard-coded export
When exporting, Address 1 and Address 2 are combined
MailingCityMailing Address - Citymailing_address.cityBoth WaysConfigurable import
Hard-coded export
MailingStateMailing Address - Statemailing_address.stateImport from SalesforceConfigurableWhen exporting, Address 1 and Address 2 are combined
MailingPostalCodeMailing Address - Zip Codemailing_address.zipBoth WaysConfigurable import
Hard-coded export
MailingCountryMailing Address - Countrymailing_address.countryImport from SalesforceConfigurableWhen exporting, Address 1 and Address 2 are combined
OtherStreetBilling Address - Streetbilling_address.address_1Both WaysConfigurable import
Hard-coded export
When exporting, Address 1 and Address 2 are combined
OtherCityBilling Address - Citybilling_address.cityBoth WaysConfigurable import
Hard-coded export
OtherStateBilling Address - Statebilling_address.stateImport from SalesforceConfigurableNot sent to Salesforce (to avoid picklist validation issues)
OtherPostalCodeBilling Address - Zip Codebilling_address.zipBoth WaysConfigurable import
Hard-coded export
OtherCountryBilling Address - Countrybilling_address.countryImport from SalesforceConfigurableNot sent to Salesforce (to avoid picklist validation issues)
npsp__Do_Not_Contact__cDo Not Contactdo_not_contactBoth WaysConfigurable

WeGive Package Fields

(Requires WeGive Salesforce Package Installation)
Salesforce FieldWeGive FieldWeGive API FieldDirectionTypeNotes
WeGive_Id__cWeGive Donor IDidBoth WaysConfigurableWeGive’s unique identifier for this donor
WeGive_Type__cDonor TypetypeBoth WaysConfigurableDonor type in WeGive (e.g., individual, company)
WeGive_Status__cDonor StatusstatusBoth WaysConfigurableDonor status in WeGive
WeGive_Created_Date__cWeGive Created Datecreated_atBoth WaysConfigurableWhen the donor was created in WeGive
WeGive_Modified_Date__cWeGive Modified Datemodified_atBoth WaysConfigurableWhen the donor was last modified in WeGive

Important Notes

WeGive Salesforce Package

The fields in the “WeGive Package Fields” section are only available if your organization has installed the WeGive Salesforce Package. These fields provide additional tracking and synchronization capabilities:
  • WeGive_Id__c - Stores the WeGive donor ID for quick reference and lookup
  • WeGive_Type__c - Tracks whether this is an individual or company donor in WeGive
  • WeGive_Status__c - Reflects the donor’s status in WeGive (active, inactive, etc.)
  • WeGive_Created_Date__c - Preserves the original creation date from WeGive
  • WeGive_Modified_Date__c - Tracks when the donor was last modified in WeGive
If these fields are not visible in your Salesforce org, contact WeGive support about installing the WeGive Salesforce Package.

Email Logic

When sending donor data to Salesforce, WeGive automatically selects which email to populate in the main “Email” field based on the donor’s “Preferred Email” setting (Email 1, Email 2, or Email 3). This is hard-coded logic.

Required Fields

  • Last Name is required in Salesforce. If a donor doesn’t have a last name in WeGive, it will be set to “LNU” (Last Name Unknown) - hard-coded logic
  • First Name defaults to “FNU” (First Name Unknown) if empty - hard-coded logic

Address State & Country Fields

State and Country fields are only imported from Salesforce, not exported. This prevents validation errors with Salesforce picklists that may have specific allowed values configured in your Salesforce org.

Address Concatenation

When sending addresses to Salesforce, if you have both Address Line 1 and Address Line 2 in WeGive, they are combined into a single Street field in Salesforce. This is hard-coded logic.

Understanding Configurable vs Hard-coded

  • Configurable mappings can be customized through integration settings if needed for your organization’s specific field setup
  • Hard-coded mappings are built into the integration’s core logic and handle special business rules (like email selection, name defaults, and address formatting)

Contact Matching & Create/Update Logic

When WeGive exports a donor to Salesforce, the integration uses the following logic to determine whether to create a new Contact or update an existing one:

Step 1: Check for Existing Salesforce ID

The integration first checks if the WeGive donor already has a salesforce_id stored:
  • If Salesforce ID exists: The integration will UPDATE the existing Contact record in Salesforce using this ID
  • If no Salesforce ID exists: The integration proceeds to Step 2

Step 2: Search by Email Address

If there’s no Salesforce ID, the integration searches Salesforce for an existing Contact with a matching email address:
  • If NO email match found: The integration creates a NEW Contact in Salesforce
  • If email match IS found: The integration proceeds to Step 3 to verify availability

Step 3: Verify Contact Availability

If a Salesforce Contact is found by email, the integration checks whether that Contact is already connected to a different WeGive supporter:
  • If the Contact is available (not connected to another WeGive supporter):
    • The integration LINKS this WeGive donor to the existing Salesforce Contact
    • Updates the Contact with the donor’s information
    • Stores the Salesforce ID in WeGive for future syncs
  • If the Contact is already connected to another WeGive supporter:
    • The integration creates a NEW Contact in Salesforce to avoid conflicts
    • This prevents two WeGive supporters from being mapped to the same Salesforce Contact record

Why This Matters

This matching logic prevents data conflicts and ensures:
  • Each WeGive supporter maps to exactly one Salesforce Contact
  • Existing Salesforce Contacts are reused when appropriate
  • Multiple WeGive supporters don’t accidentally share the same Salesforce Contact record