Connecting Funraisin to Salesforce

by Scott Dilley - CTO 12 Sep 2019

Overview
Configuration
Package Installation
Mapping
Web to Lead Forms

Overview

The Funraisin Salesforce integration comprises of a one-way sync from Funraisin to Salesforce that operates on a schedule. This schedule can be altered to accommodate different volumes, with common schedules being anywhere from daily, bi-daily to every 30 minutes.

As part of the standard integration you will be required to install a managed package (See below), we can provide links for the package installation or you can provide us with access to your Salesforce account and we can install it on your behalf.

For custom integrations this might not be needed.

Version & Compatibility

The Funraisin integration is compatible with the Salesforce Not for Profit pack using household accounts. If you do not support this or do not support household accounts we are still able to sync but we will create accounts automatically for all contacts. The current version is 1.6

De-Duping

As records sync, de-duping will occur for all Contacts and Accounts to try to avoid duplicate records. De-duping on Contacts will check for an existing match on First name, Last name and Email address. De-duping on Accounts will check on Account name.

ID Handling

All Funraisin objects support a field known as “External CRM ID” which is used to store the IDs from external data sources. As data syncs to Salesforce, the Salesforce ID for each object is stored in our own External CRM ID for that object so that you are at any time able to edit an ID within your Funraisin platform.

Limits

The Funraisin > Salesforce sync uses the Salesforce SOAP API so each record that is synced will use at least 1 API call but often a single record will require 2-3 API calls depending on the data being synced.

A site catering for example 10,000 transactions per day could typically require up to 30,000 API calls per day.

Should an API limit be hit when syncing, the sync will retry later which depending on the schedule this could be with an hour or the next day.

Support

For all Salesforce related support enquiries please pop in a support ticket in your Funraisin admin.

^ Back to top

Configuration

To setup your integration you will need to create a user account with a non-expiring password. Login to your Funraisin platform and navigate to the Salesforce module and within the configuration option you will need to enter your account email address, account password, account security token and also upload your enterprise WSDL.

Sandboxes

Syncing to a sandbox prior to launch can be catered for, simply by providing your Sandbox details in the above step.

Then once the site is ready to sync to a production environment we would simply clean all data from Funraisin by removing any existing Salesforce IDs so that data can be re-synced.

Configuration Setttings

Step 1. Navigate to Funraisin > Salesforce when logged in to your platform and you will asked to configure your account. Enter the username, password and security token of the account you want to connect as, as well as specifying what Funraisin objects you want to have synced to Salesforce.

Step 2. Next upload your Enterprise WSDL into Funraisin

That is all that is needed on the platform side, you now need to install our managed package.

^ Back to top

Package Installation

Data from your Funraisin platform will map to most standard Salesforce objects as details further below, however some data captured requires additional Fields and Objects be created on your Salesforce account.

Before syncing data from your Funraisin platform you will be required to install our Managed Package.

https://login.salesforce.com/packaging/installPackage.apexp?p0=04t7F000005EtDZ

This will install the following:

Additional Fields

The following Salesforce objects have these additional fields applied

Campaign Member

Fundraising target Currency
History Type Picklist (online,offline,diy)
Is Active Picklist (Y,N)
Is Archived Picklist (Y,N)
Number Seats Number
Seat Number Number
Fundraising ID Number

Contact

Is Donor Checkbox
Is Fundraiser Checkbox
Funraisin ID Number (ID)

Campaign

Allow Entries Picklist (Y,N)
Allow Tables Picklist (Y,N)
Campaign Type Picklist (event,page,team,raffle)
Event Type Picklist (online,offline,diy)
Created By Fundraiser Lookup(Contact)
Entry Fee Currency
Entry Limit Number
Entry Type Picklist(rsvp,ticketed,registration)
Event Target Currency
Street Address Text
City Text
Country Text
Is Fundraising Event Picklist(Y,N)
Minimum Tickets Number
Maximum Tickets Number

Opportunity

Primary Contact Lookup(Contact)
Fundraiser Lookup(Contact)
Refund Reason Text
Source Opportunity Lookup(Opportunity)
Fundraiser Lookup(Contact)
Order Number Text
Tracking Number Text
Donation Type Text
Payment Method Text

Record Types

Record types can be defined within Funraisin simply navigate to Funraisin > Salesforce > Recordtypes. This will allow you to control record types for various transaction types on Opportunities. For other objects e.g. Campaigns, these can be controlled from within the modules that sync to Campaigns which are Funraisin > Events and Funraisin > Pages

Existing Data

Once connected, Funraisin will only sync new data to your Salesforce account. We will not import or alter your existing data in any way.

Technical Notes

Funraisin uses “Funraisin” as its namespace prefix. All custom field names referenced below should include ‘Funraisin__’ as the prefix if they are referenced via an API.

^ Back to top

Mapping

Objects Mapping

The following  list shows how Funraisin objects are mapped to Salesforce objects

Events map to Campaigns
Donation pages map to Campaigns
Teams map to Campaigns
Donors map to Contacts / Accounts
Fundraisers map to Contacts / Accounts
Registrations
map to Campaign Members
Transactions map to Opportunities

Field Mapping

The below tables show the standard field mapping from Funraisin to Salesforce.

Contacts

All donors, fundraisers, shop customers sync to the Contacts object using the following mapping.

Field API Name Description
First Name FirstName  
Last Name LastName  
Email Email  
Mobile MobilePhone  
Phone Phone  
Gender Gender  
DOB DOB  
Title Salutation  
Address Unit MailingStreet  
Address Street Number MailingStreet  
Address Street MailingStreet  
Address Line 2 MailingStreet  
Address Suburb MailingCity  
Address Postcode MailingPostalCode  
Address State MailingState  
Address Country MailingCountry  
Optin Funraisin__Optin__c  

Accounts

All donors, fundraisers, shop customers sync to the Accounts object using the following mapping when organisation data is provided. Note that if no organisation data is provided then household accounts will be used.

Field API Name Description
Organisation Name Name  
Phone Phone  

Campaigns

All events, donation pages and teams sync to the Campaigns object using the following mapping.

Field API Name Description
Name Name  
Description Description  
IsActive IsActive  
Status Status  
Event Type Funraisin__Event_Type__c online,offline,diy
Event vs Page Funraisin__Campaign_Type__c Event or Page
Event Date StartDate  
Event End Date EndDate  
Country Funraisin__Country__c  
City Funraisin__City__c  
State Funraisin__State__c  
Postcode Funraisin__Postcode__c  
Address Funraisin__Street_Address__c  
Entry Limit Funraisin__Entry_Limit__c  
Entry Fee Funraisin__Entry_Fee__c  
Online and DIY events Funraisin__Is_Fundraising_Event__c  
Event Target Funraisin__Event_Target__c  
Entry Type Funraisin__Entry_Type__c Ticketed, registration, rsvp
Member Funraisin__Created_By_Fundraiser__c Contact ID of member who created the event

Campaign Members

All participants in an event including offline event guests sync to the Campaign Members object.

Field API Name Description
Event CampaignID  
Member (participant) ContactID  
Event Type Funraisin__History_Type__c  
Is Active Funraisin__Is_Active__c  
Is Archived Funraisin__Is_Archived__c  
Fundraising Target Funraisin__Fundraising_Target__c  
Number Tickets Funraisin__Number_Seats__c  
Team Funraisin__Team__c Lookup to Team Object ID

 

Opportunities

All financial transactions sync to the Opportunities object.

Field API Name Description
Event, Team or Page CampaignId  
Member or Donor

AccountId

Funraisin__Primary_Contact__c

npsp__Primary_Contact__c

 
Amount Amount  
Transaction Date

CloseDate

Funraisin__Payment_Date__c

 
StageName StageName Closed Won
Donation Type Funraisin__Donation_Type__c  
Payment Method Funraisin__Payment_Method__c  
Member Sponsored Funraisin__Fundraiser__c  
Team Sponsored Funraisin__Team__c  
Related Transaction Funraisin__Source_Opportunity__c  
Refund Reason Funraisin__Refund_Reason__c  

Soft Credits (optional)

A note on Soft credits when donating to a fundraiser. When a donation is related to a fundraiser,  we create an Opportunity Contact Role for the Fundraiser with a role of Soft Credit.

Teams

All teams link to the Campaign object which are a sub-campaign of the Event that they are participating in. All opportunities made to a team are then linked to the Team Campaign instead of the Event Campaign.

Field API Name Description
Team Name Name  
Status Status  
Event ParentId Campaign
IsActive IsActive  
Captain Funraisin__Created_By_Fundraiser__c Contact

Products (beta)

All merchandise sync to the Products object.

Field API Name Description
Product Name Name  
Product Code ProductCode  

A note on pricebooks. A Standard pricebook called Funraisin Pricebook will be created for use with all products.

Order and OrderItems (beta)

All merchandise sales sync to the Order and OrderItems objects as well as the Opportunity object.

Orders

Field API Name Description
ContactID BillToContactId  ID from the synced customer
ContactID ShipToContactId  ID from the synced customer
Po Number OrderReferenceNumber  our own PO number
OpportunityID OpportunityId  ID from the synced opportunity
Status Draft  
Order Date EffectiveDate  Date of Sale

OrderItems

Field API Name Description
OrderID OrderId ID from the synced order (above)
ProductID Product2Id ID from the synced product (above)
Quantity Quantity  

^ Back to top

Web to Lead Forms

Webforms are forms that are created by admins via the Funraisin interface therefore their structure is unknown. Each webform is able to be synced to any Salesforce object with each field within the form having its own mapping to individual Salesforce fields.

Syncing Webforms

1. Choose Object.
Edit your webform and specify which Salesforce Object you want it to sync to by adding in the Object API name.
If this form is part of an event registration flow you can specify which field in your object relates to the ContactID of the fundraiser / donor
Also if this form is part of a registration entry flow you can set the object behaviour to Update, whereas for standard in-page forms that aren't linked to any donor or fundraiser leave it set to insert

2. Sync Fields
After specifying the object we sync to and it's behaviour you will need to map each field in your form to the fields in your object. Simply choose "Form fields" from your webform and then edit each field that you want mapped to Salesforce. Under the "CRM Options" field enter in your field's API name.

For webforms used within event registration or donation journeys, the submission will be linked to the relevant Contact ID however for standard page based forms e.g. contact us forms the submissions can only be linked to a single object.