Neon Fundraise offers a bi-directional sync integration with Salesforce, so that data entered and changed in Salesforce gets synced to Neon Fundraise, in addition to Salesforce consuming Neon Fundraise data. This two-way sync ensures that data is consistent across both applications, regardless of where the data is entered or changed.
Records that can be synced from Salesforce to Neon Fundraise include opportunities and contacts. For the complete field mapping, please see "Field Mappings" below.
Installation
To take advantage of the bi-directional sync, you will first need to configure a Salesforce integration — click here for full instructions.
- Ensure that the latest version of Neon Fundraise / Rallybound Custom Fields package is installed (version 2.4 or later). This package is available on AppExchange.
- Install the newest version of Neon Fundraise / Rallybound Sync (version 3.1 or later).
- Configure Salesforce in Neon Fundraise and connect it to campaigns.
Once the integration is configured, enable the bi-directional sync feature in your Salesforce instance:
- Specify which Neon Fundraise Org to sync to:
- In Salesforce, enter Setup
- Navigate to Custom Code > Custom Settings (or search “Custom Settings”)
- Click Manage next to the “Sync Configuration” setting in the RallyBoundSync namespace
- Click Edit next to the Production record
- Enter your Neon Fundraise Org ID as Org Id and Save
- Authenticate your Salesforce Org with Neon Fundraise:
- In Salesforce, enter Setup
- Navigate to Security > Named Credentials (or search “Named Credentials”)
- Press Edit next to the Rallybound record
- Ensure “Start Authentication Flow on Save” is checked
- Press Save
- Follow the flow to login to Neon Fundraise and grant access to Salesforce
FAQs
Can I turn this on for individual campaigns?
No. This is a global setting impacting all campaigns associated with the specific SF instance on the org. So if you add a Salesforce sandbox as well as Production, and enable it just for the Sandbox, it just applies to campaigns associated with the Sandbox.
Failed syncs: What happens if a sync fails and how do I attempt a resync?
Visibility is present in the logs of your Salesforce Instance (as to why it failed). There is no resync ability so they would need to make the change manually to our system (or delete and re-enter opp in SF).
Deleted records: Will deleted Opportunities in Salesforce sync to Neon Fundraise?
No, while updates to opportunities will sync, deleting an opportunity will not delete the donation record in Neon Fundraise.
Custom mapping: Are custom inbound mappings supported?
Custom mappings are not supported for inbound data at this time.
What happens if a gift is made to a recipient who exists in Salesforce but not in Neon Fundraise?
A Member ID, and a contact record, is created in Neon Fundraise. The Member ID is passed back to Salesforce.
What happens if Contact Name formats differ between Neon Fundraise and Salesforce?
The integration validates incoming data in the same way as it does creating donations in the Admin.
Note: Email address, and either First or Last Name are required. Any changes made to the Account are not synced (if the information is not the same as on the Account’s Contact, such as Company Name which resides on the Account Object). If there is a validation error that passed validation in Salesforce but did not pass validation in Neon Fundraise (e.g., Salesforce is configured to not validate or require any name on the contact), the validation error will be logged on the Sync Queue Item in the Salesforce instance.
Does Neon Fundraise provide support for Salesforce accounts?
No. Issues present within your Salesforce account must be handled by your Salesforce Admin or third party consultant.
Field Mappings
Opportunity
Salesforce Field | Rallybound/NF Field | Notes |
Static Value of ‘true’ | Do_Not_Sync | |
rallybound__RallyBound_DonationID__c | Donation Id | (for updates) |
Amount | Amount | |
Description | Message | |
Campaign.rallybound__RallyBound_GoalID__c | Goal Id | |
npe01__OppPayment__r[0].npe01__Payment_Method__c | Payment Type | When npe01__Payments_Made__c is set |
npe01__OppPayment__r[0].npe01__Payment_Amount__c | Payment Amount | When npe01__Payments_Made__c is set |
Static value of ‘Cash’ | Payment Type | When npe01__Payments_Made__c is not set |
CurrencyIsoCode | Donation CurrencyKey | Multi Currency orgs that have CurrencyIsoCode |
Default Currency For User | Donation CurrencyKey | When CurrencyIsoCode is not set |
CloseDate | Payment Paid At Date (Donate Date, Payment Entered On Date) | |
Static Value of ‘true’ | Donation IsVerified | |
Static Value of ‘false’ | Payment Processed Online | (does not appear to be stored) |
For NPSP Implementations
(when npsp__Primary_Contact__c is present)
npsp__Primary_Contact__r.FirstName | Donor.First_Name |
npsp__Primary_Contact__r.LastName | Donor.Last_Name |
npsp__Primary_Contact__r.MailingStreet | Donor.Addresses[0].Address_1 |
npsp__Primary_Contact__r.MailingCity | Donor.Addresses[0].City |
npsp__Primary_Contact__r.MailingState | Donor.Addresses[0].State |
npsp__Primary_Contact__r.MailingPostalCode | Donor.Addresses[0].Zip |
npsp__Primary_Contact__r.MailingCountry | Donor.Addresses[0].Country |
For non-NPSP Implementations
(Uses the OpportunityContactRole where IsPrimary is true)
OpportunityContactRoles[0].Contact.FirstName | Donor.First_Name |
OpportunityContactRoles[0].Contact.LastName | Donor.Last_Name |
OpportunityContactRoles[0].Contact.MailingStreet | Donor.Addresses[0].Address_1 |
OpportunityContactRoles[0].Contact.MailingCity | Donor.Addresses[0].City |
OpportunityContactRoles[0].Contact.MailingState | Donor.Addresses[0].State |
OpportunityContactRoles[0].Contact.MailingPostalCode | Donor.Addresses[0].Zip |
OpportunityContactRoles[0].Contact.MailingCountry | Donor.Addresses[0].Country |
Contact
Salesforce Field | Rallybound/NF Field | Notes |
rallybound__Campaign_Member_IDs__c | Id | Split to get the first Member ID |
Title | Title | |
FirstName | First_Name | |
LastName | Last_Name | |
Static Value of ‘true’ | Addresses[0].Is_Primary | |
MailingStreet | Addresses[0].Address_1 | |
MailingCity | Addresses[0].City | |
MailingState | Addresses[0].State | |
MailingPostalCode | Addresses[0].Zip | |
MailingCountry | Addresses[0].Country | |
Phone | Phones[0].Number | |
Static Value of ‘true’ | Phones[0].Is_Primary |