Skip to main content

Configuring FinDock for Fundraising

info

The FinDock for Fundraising package is in pilot and not automatically updated. Please manually install the latest version using the FinDock Installer.

This article assumes you have already gone through the main Salesforce NPC setup.

Prerequisites

  • FinDock Core installed and configured
  • Working ProcessingHub connection
  • Working WebHub connection

Fundraising minimum configuration

  • Enable the Person Account feature Salesforce Setup
  • Enable the Fundraising feature in Salesforce Setup
    • Assign Fundraising permissions
    • Create Recurring Schedule Transaction must be set to True
    • Set up Schedule a Gift Commitment Batch Processing Job (to enable gift transaction creation from gift commitments)

Set up the rest of Fundraising as needed for your specific case

Install and activate FinDock for Fundraising

Follow the standard procedures for installing and activating the Fundraising source connector package.

Assign the FinDock for Fundraising permission set to admins and other non-integration users, along with standard FinDock permissions configuration. For the integration user profile, assign the FinDock Fundraising Integration permission set to the FinDock Integration User Group.

Required configuration

The FinDock for Fundraising source connector has a few required configuration steps. There are several more advanced configuration options (see below) that should also be modified. However, you can start using the package with the minimum required configuration and the advanced configuration defaults.

Core general settings

Set default source for FinDock to be the Fundraising connector.

  1. Go to the FinDock Setup
  2. Go to General settings.
  3. Set default source connector to FinDock-for-Fundraising.

Layout configuration

To make use of FinDock, several fields are required on the Gift Transaction, Gift Commitment and Gift Commitment Schedule layouts. Since Gift Commitment Schedules are managed through Flow screens accessible from buttons and components on the Gift Commitment, FinDock fields also need to be present on these screens.

Please note that FinDock does not use the standard Payment Method field on Fundraising objects. This is a required field, though, so we recommend creating a Flow or other solution to update the value of that field to match the FinDock payment method value from Installment. The Salesforce field is a restricted picklist, so you will first need to add FinDock payment method values before building the update mechanism.

Page layouts

Update the Gift Transaction and Gift Commitment Schedule layouts with the following FinDock fields (field names ending with __c):

  • Gift Transaction:
    • Payment Method
    • Payment Processor
    • Target
    • Mandate
    • Payment Profile
  • Gift Commitment Schedule:
    • Payment Method
    • Payment Processor
    • Target
    • Mandate
    • Payment Profile

Gift Entry template

If you are going to use Gift Entry, ensure that payment-related fields used by FinDock are included in your Gift Entry template. For example, you should include at least Payment Method and Payment Processor on the template, preferably with default values.

Flow configuration

Two important flows are required to manage gift commitment schedules for gift commitments. These flows are:

  • Manage Gift Commitment Schedule
  • Update Recurring Gift Commitment Schedule

These two are essential to FinDock for Fundraising since most data required for payment collection is on the Gift Transaction record, including FinDock fields. This information can also be found on the Gift Commitment Schedule record related to the gift transaction.

caution

Please read the next bit carefully!

Adjusting screens in flows provided by Salesforce requires the flow to be cloned. This also means if Salesforce makes changes to the provided flows, the updates from Salesforce are not automatically applied to your cloned version.

Please make sure to keep your cloned flows up to date by incorporating changes to the original flow from Salesforce. For example, create a standard operating procedure you can follow when a Salesforce or FinDock flow update arrives.

Also note that when you create a clone, links from Lightning Web Components to flows like the Manage Gift Commitment component on the Gift Commitment Lightning page and all buttons linking to Flows are also lost. These need to be re-created and linked to the new cloned flow.

Flow configuration through FinDock Labs

For your convenience, FinDock supplies versions of the two gift commitment schedule flows and related components through FinDock Labs on GitHub. These can be installed by simply clicking Deploy to Salesforce in the README and authenticating your environment. Alternatively, you can clone the repository and deploy the metadata through SFDX.

The following types of components are provided unmanaged:

  • Gift Commitment Schedule Management flows
  • A Lightning Record page with a Manage Gift Commitment LWC component with parameterized buttons you can use in different (custom) flows to replace the Salesforce component pointing to the Salesforce Gift Commitment Schedule Management flows
  • Lightning Actions linked to the right places of the flows for your layouts. These can also be used in the Action Launcher deployments based on Lightning actions (for instance on the Account layout).

For a detailed list of components and instructions on how to use them, please visit the README in the GitHub repository. Since these components are provided unmanaged, you may adjust them as you see fit to tailor them to your environment.

note

All terms and conditions of FinDock Labs apply. No official support is provided for components installed through FinDock Labs. Components are open source under MIT License and community contributions are encouraged.

Manual flow configuration

If you would like to create your own custom flows from scratch, you can clone and manually configure the Gift Commitment Schedule flows yourself. Once cloned, you need to adjust the flow screens and add specific fields. Make sure to map these fields to their values on Gift Transaction through the flows variables:

  • Manage Gift Commitment Schedules:
    • Create Recurring Gift Commitment Schedule
      • Payment Method
      • Payment Processor
      • Target
      • Payment Profile
      • Mandate
  • Update Recurring Gift Commitment Schedule
    • Update Payment Method
      • Payment Method
      • Payment Processor
      • Target
      • Payment Profile
      • Mandate
    • Upgrade Downgrade
      • Payment Method
      • Payment Processor
      • Target
      • Payment Profile
      • Mandate

Once you’ve completed your configuration of the flows, make sure to update all references, like quick action buttons, to these flows.

Advanced configuration

Though not required, we strongly recommend adjusting the defaults provided by FinDock in the advanced configuration areas of FinDock for Fundraising. The defaults can be used to familiarize yourself with features and capabilities, but most real cases require further configuration and customization.

Person Account record types

Record types are always important, but they take on additional significance with the use of person accounts. So, do take time to plan and set default org and profile record types.

We recommend explicitly setting the record type for online payment collection. With Giving Pages, that means adding the Person Account record type Id to the payment form as an additional input field. For information about using record types in payment intent messages, please see the Payment API Reference.

IMPORTANT

The Person Account object has its own record types. These are the values you need to use, not the person account record type of the Account object.

Deduplication considerations

Accounts are not deduplicated with Person Accounts, so you need to specify record types in your deduplication rules.

Field mapping

To maintain synchronized data between FinDock and Fundraising objects, FinDock uses managed and custom field mappings.

The extension settings include Custom Mapping and FinDock Managed Mapping. The latter is provided as reference of the mapping details maintained by FinDock. The Custom Mapping table is where you can add your own mappings as needed.

For each mapping relation, you need to specify the Salesforce object and field, the FinDock object and field, as well as the sync direction. The direction setting is particularly important and should be carefully considered. The syncing options are:

← Only sync when the field changes on FinDock object
→ Only sync when the field changes on the Salesforce object
⇆ Sync when the field changes on either the FinDock or Salesforce object

Status mapping

The status mapping between Gift Commitment and Installment is pre-defined by FinDock . The mapping table is included in the FinDock for Fundraising setup for reference only.

The status mapping needs to be rigid to prevent payment management flows from inadvertently breaking the status update rules for Gift Commitment. For further information about Gift Commitment Status, please refer to Salesforce Help Gift Transaction.

Campaign and Outreach Source Code

With Salesforce Fundraising, Outreach Source Code has a central role in campaign fundraising management. You can still use Campaign Ids when setting up new donations through the FinDock Payment API or Giving Pages (and PayLinks), but the value of the Source Code field on Outreach Source Code should be included to enable easy evaluation of outreach efforts for a given campaign.

To leverage Source Code, you need to first add the Source Code field to the Installment object. Then, with the custom field mapper in FinDock for Fundraising, map the Installment SourceCode field to the Gift Transaction OutreachSourceCodeId field. The sync direction depends on the use case, but bi-directional syncing is recommended.

To use Source Code on a Giving Pages or PayLinks payment form, simply add it as a hidden input field on the form. For instructions, see Add additional form fields.

Using the FinDock Payment API, the Source Code needs to be passed in the SalesforceFields section of a OneTime or Recurring message block. For example:

{
"OneTime":{
"Amount": 10.0,
"SalesforceFields": {
"SourceCode__c": "a-unique-code-value"
}
}
}

API considerations and examples

There are two characteristics of the Salesforce Fundraising features that require additional attention when using the FinDock Payment API:

  • Fundraising uses Person Accounts: more information on how to use Person Accounts with our API can be found in our API reference.
  • Since recurring donations are defined by two objects, Gift Commitment and Gift Commitment Schedule, a prefix GiftCommitment is required to set SalesforceFields on the Gift Commitment object. Fields without prefix are assumed to be set on the Gift Commitment Schedule object.
    Example: GiftCommitment.GiftVehicle is set on the Gift Commitment, while GiftVehicle would be set on the Gift Commitment Schedule if available.

Example of a one-time gift from an individual donor

{
"SuccessURL": "https://www.example.com/success",
"FailureURL": "https://www.example.com/error",
"Payer": {
"Account": {
"RecordTypeName": "PersonAccount",
"SalesforceFields": {
"FirstName": "John",
"LastName": "Johnson",
"PersonEmail": "johnjohnson@test.com"
}
}
},
"OneTime": {
"Amount": "50"
},
"PaymentMethod": {
"Name": "Creditcard",
"Processor": "PaymentHub-Stripe"
},
"Settings": {
"SourceConnector": "FinDock-for-Fundraising"
}
}

Example of a one-time gift from a business donor

{
"SuccessURL": "https://www.example.com/success",
"FailureURL": "https://www.example.com/error",
"Payer": {
"Account": {
"RecordTypeName": "Business",
"SalesforceFields": {
"Name": "MyBusiness"
}
},
"Contact": {
"SalesforceFields": {
"FirstName": "John",
"LastName": "Johnson",
"Email": "johnjohnson@test.com"
}
}
},
"OneTime": {
"Amount": "50"
},
"PaymentMethod": {
"Name": "Creditcard",
"Processor": "PaymentHub-Stripe"
},
"Settings": {
"SourceConnector": "FinDock-for-Fundraising"
}
}

Example of a recurring donation from an individual donor

{
"SuccessURL": "https://www.example.com/success",
"FailureURL": "https://www.example.com/error",
"Payer": {
"Account": {
"RecordTypeName": "PersonAccount",
"SalesforceFields": {
"FirstName": "John",
"LastName": "Johnson",
"PersonEmail": "johnjohnson@test.com"
}
}
},
"Recurring": {
"Amount": "50",
"Frequency": "Monthly",
"StartDate": "2023-03-12"
},
"PaymentMethod": {
"Name": "Creditcard",
"Processor": "PaymentHub-Stripe"
},
"Settings": {
"SourceConnector": "FinDock-for-Fundraising"
}
}

FinDock Payments (MOTO) for Fundraising

note

The FinDock MOTO component currently only supports Stripe.

With the FinDock Payment component component, agents can accept credit card payments directly from Salesforce by manually entering the donor details into the component. For a full explanation of the setup, please refer to Configuring FinDock MOTO. For information on how to use the component, see Using FinDock MOTO.

Using the component with Salesforce Fundraising, the component can be effectively leveraged when added, for example, to Gift Transaction and Gift Commitment.

When using the component, there are two key implications to keep in mind:

  • Recurring requires a schedule: to use MOTO with Gift Commitment, the commitment record must have an active Gift Commitment Schedule record.
  • Future gift transactions change: changes made via the component on Gift Commitment automatically update related Gift Commitment Schedule records and change future Gift Transaction records accordingly.

Gift Aid and Fundraising

The Gift Aid for FinDock package is compatible with Salesforce Fundraising with some important caveats.

While the Gift Aid data model remains the same, the Account object takes on the main role in Fundraising (with record type Person Account). Therefore, the Gift Aid Declaration component should be added to record layouts for Person Account.

Please also keep in mind Person Account considerations when using Gift Aid package actions via the Payment API, such as explicitly declaring Record Type.

note

If Person Accounts are enabled in the org, the Gift Aid Distribution cannot be used at this time.