CRMs are useful because they let you see everything centrally. Make sure your Fundraise Up data is showing up in DonorPerfect in the fashion you'd expect!

Get your DonorPerfect API key

A DonorPerfect API key is a permission token to send data in to your specific DonorPerfect account as a particular user.

DonorPerfect recommends creating a new User ID designated specifically for use with the Fundraise Up integration, and to put "Fundraise Up" in the Location field of this new user to make it clear that this account is specifically for use with the API.

You can view and create users in your DonorPerfect system through the User Management screen.

Having a designated DonorPerfect user for this purpose should help reduce the likelihood of accidental deletion of this User ID, as well as making it clearer which user is connected via Fundraise Up's DonorPerfect Integration.

Once you know which DonorPerfect user you'd like an API Key for, you can reach out to DonorPerfect support and provide them the User ID and email address of that user, and they will provide you the needed API Key you'll use to connect Fundraise Up's DonorPerfect Integration.

Go to the Integrations page

In your Fundraise Up dashboard, click your name in the top right, and then choose the Settings option from the dropdown.

In the left-hand menu of the Settings area, choose the Integrations option, found towards the bottom of the list.

Add the DonorPerfect Integration

Click the Add Integration button, and choose the DonorPerfect option from the list, either by scrolling or searching in the list of available Integrations.

On the DonorPerfect Integration page, click the Connect DonorPerfect button.

In the Connect DonorPerfect popup, enter your API key, and then click the Connect My DonorPerfect Account button.

The Integration is paused when first connected - once you're happy with your Integrations' setup, don't forget to scroll to the bottom and click the Enable Automatic Sync button so that new donations start syncing in real-time!

In practice, you likely want to spend some time customizing your DonorPerfect Integration rather than clicking that button immediately, so that you can make sure the data we sync over to DonorPerfect matches your organization's data structure.

Configure the integration

Now that you've connected your DonorPerfect Integration, you can customize it further and start automatically syncing donations from your DonorPerfect Integration settings page, available by clicking into Settings -> Integrations -> DonorPerfect:

Review the Integration's default behavior + Enable Automatic Sync

Once you Enable Automatic Sync from the bottom of the Integration screen, our Integration's sync will run after every successful donation made via Fundraise Up, including for installments of recurring donation plans.

To the extent that we can, we seek to make our CRM Integrations fill in every standardized field and create every standardized record that's expected.


The integration makes Gifts in DonorPerfect to represent all Donations, and fills in certain key fields by default like amount and date.

For Anonymous Gifts, where the donor would like a particular gift to not be acknowledged in any public listing, DonorPerfect has documented instructions to add a particular field to the Gift object. If you create that field accordingly, we'll make sure to mark it appropriately!


When a Donation is synced in and creates a Gift in DonorPerfect, the integration attempts to find an existing Donor based on your "Match Account" setting, for which the possible values are:

  • By Email
  • Name and Phone
  • Name and Address

If it does find a matching Donor, it associates the Gift with that Donor. If it doesn't, it makes a new Donor, and associates the Gift with the new Donor.

In both cases, we update any stock personal or contact information fields for which the Donation had updated information, such as name, email address, phone number, and physical address.


The integration can make Pledges in DonorPerfect to represent any synced Recurring Plan. This behavior is controlled by the Make pledges for recurring plans checkbox in the integration's General Settings, and is enabled by default.

If the Pledge creation behavior is enabled, Gifts made that represent installments of a plan get applied as Pledge Payments towards the appropriate Pledge.

Created Pledges inherit certain mapping rules or special rules you set up, specifically anything in the integration that sets General Ledger, Campaign, Solicit Code, and Sub Solicit Code values.

Known Limitations

Fundraise Up integrations are API-based, meaning that the software suite that data is being synced into controls how records can be made, whether they can be edited, and so forth. Before using the DonorPerfect integration, we recommend reviewing the following known limitations:

  • Additionally, API updates to Gifts currently do not appear to count as “saves” on Gifts in a way that can activate DonorPerfect’s “Smart Actions” automation feature.

Set your defaults using General Settings & Mapping Rules

The DonorPerfect Integration page has four sections:

  • the header, which shows you what account you connected,
  • the tabbed area, which lets you set your sync behavior,
  • the sync log, which shows you records that've synced into DonorPerfect,
  • and the footer, with options to run historical syncs or deactivate this Integration.

It's good to start in the tabbed area (with tabs labeled General Settings, Mapping Rules, and Special Rules) so that you can cover your most common donation scenarios. Any changes you make in any of the tabbed sections are not saved until you hit the Save Changes button at the bottom of that area.

Look over your General Settings

The screen will have the General Settings tab open by default, as shown here:

Within General Settings, you'll find a few checkboxes and a few dropdowns. There's only one required field in this area, and it's filled in with the most common selection by default.

Checkbox options:

  • Sync test data
  • Unicode support
  • Sync subaccounts
  • Make pledges for recurring plans
  • Update receipt fields if PDF receipt was made by Fundraise Up

Dropdown options:

  • Receipt delivery preference
    • This field will only appear if "Update receipt fields if PDF receipt was made by Fundraise Up" is checked, and allows orgs to select which receipt delivery preference should be set in DonorPerfect for any donations where we didn't send a receipt email already.
  • Match Account:
    • This is set to "By Email" by default, and that's our recommended best practice, as people have names, addresses, and phone numbers in common more regularly, and change them more often. Setting this value to "By Email, in our experience, results in the least amount of account deduplication required.
  • Receipting Preference (optional)
    • This controls what will be set for this field in DonorPerfect if Fundraise Up didn’t make a PDF for a donation.
  • Thank you letter (optional)
    • This controls what will be set for this field in DonorPerfect if Fundraise Up didn’t make a PDF for a donation.
  • Type of gift (optional)

Make some Mapping Rules

The second tab is labeled Mapping Rules - it allows you to make 1-to-1 mappings of fields in Fundraise Up to fields in DonorPerfect.

As covered above, some mappings are already built-in by default (i.e. donation amount to donation amount), so this area is really for defining what additional things should be true most of the time.

To add a rule here, you'll click the Add Rule button to start choosing what Fundraise Up object the mapping should start with.

You can modify existing rules by clicking on any of the object or field buttons that represent the mapping, or delete them by clicking the grey x on the right-hand side of that rule's row.

When talking about mappings, we'll follow the format:

Object in Fundraise Up: Field in Fundraise Up -> Object in DonorPerfect: Field in DonorPerfect

The available Fundraise Up entities to map data from are:

  • Campaign
  • Designation
  • Checkout Question
  • Custom Field
  • UTM Parameter
  • Static Value
    • This allows you to enter a specific value to pass in for every Donation.

The available DonorPerfect entities to map data to are:

  • Gift
  • General Ledger
  • Campaign
  • Solicit Code
  • Sub Solicit Code

With General Ledger, Campaign, Solicit Code, and Sub Solicit Code, if you map to them, you're saying "all Gifts and Pledges created in DonorPerfect by the sync should have this set to this value".

Additionally, with those four fields, we can only map to them by ID.

So, for example, if you've mapped Fundraise Up Designation Code -> General Ledger ID, you should set each Designation's Code to be the same as the corresponding General Ledger ID.

Two options for further data updates

For any datapoint that we can't map appropriately, you can make a custom field on the Gift object and map our datapoint to that custom field. Once you've done so, DonorPerfect offers two tools for data changes based on existing data.

The most common example of this we've come across is the Type of Gift dropdown in DonorPerfect (internal value of GIFT_TYPE).

Our "Payment Method" datapoint for Donations sends the full display names of the payment method used (ex: Credit Card, Apple Pay, Plaid, etc), and the Type of Gift dropdown in DonorPerfect has internal IDs for each of its options that don't allow spaces (ex: CC instead of Credit Card). So it's usually impossible to make our passed values line up exactly to the values in that dropdown.

Global Update

DonorPerfect offers a feature called Global Update that allows you to make a single data change across some or all of your records.

For this example, you could:

  • make a Field on the Gift object (you could set the internal name to FRUPAYMENTMETHOD, and the prompt to "Fundraise Up Payment Method"),
  • map Donation: Payment Method -> Gift: FRUPAYMENTMETHOD,
  • and make a Global Update where:
    • the object is Gift / Pledge,
    • the field is Type of Gift (GIFT_TYPE)
    • the filter is any Gift where FRUPAYMENTMETHOD contains the phrase Credit Card,
    • and the Value is whatever you want Type Of Gift to read post-update, found using the Lookup Code link.

Smart Actions

There's some ongoing conversation with DonorPerfect about triggering Smart Actions via our gift creation and resyncs - your mileage may vary on this section!

DonorPerfect offers a feature called Smart Actions that allows you to automate commonly done tasks.

For this example, you could:

  • make a Field on the Gift object (you could set the internal name to FRUPAYMENTMETHOD, and the prompt to "Fundraise Up Payment Method"),
  • map Donation: Payment Method -> Gift: FRUPAYMENTMETHOD,
  • and make a Smart Action where:
    • the trigger is Any Gift Save,
    • the filter is any Gift where FRUPAYMENTMETHOD contains the phrase Credit Card,
    • and the action is Update Field, where you'd set it to update the Type of Gift field to the appropriate code by using the "find code" link on that page.

If you want every possible Payment Method to set a different Type of Gift, you'd make 7 Smart Actions, one for each option. Alternately, if you want to group them (ex: if FRUPAYMENTMETHOD = Credit Card OR Apple Pay OR Google Pay OR Click to Pay, have the action set 'CC' in the Type of Gift dropdown), you would be able to get away with making fewer Smart Actions.

Cover any exceptions using Special Rules

Your defaults will have you covered most of the time - what about the edge cases?

For exceptions, we have the Special Rules tab! Any mappings you set here will override your Mapping Rules. As such, we allow you to get more granular here - where Mapping Rules limits you to mapping field-to-field, Special Rules allows you to map option-to-option.

To add a rule here, you'll click the Add Rule button to start choosing what Fundraise Up object the Special Rules' mapping should start with.

Fundraise Up offers Campaigns and Designations as the basis for our side of any Special Rule going into DonorPerfect.

DonorPerfect can then say what Campaign, General Ledger, Solicit Code, or Sub Solicit Code a Donation matching the above criteria should get written towards in DonorPerfect.

So, let's say any gift coming in with the "After School Program" Designation in Fundraise Up should go to the "Extracurricular" Campaign in DonorPerfect. The Special Rule would be made as follows:

  • Designation: After School Program -> Campaign: Extracurricular

Sync your historical data

Once you chose to Enable Automatic Sync, all new donations will have started coming over to your DonorPerfect account, generating records as applicable.

How do you get past donations and donor data in? What about changes that've been made to your mappings; how do you get that new data in?

For scenarios like those, we offer the ability to run a sync that'll add any new records and update any previously synced ones. In the footer section of the DonorPerfect Integration page, you'll find a button labeled Synchronize in a section that summarizes the last sync run.

Clicking that Synchronize button will launch a popup labeled Synchronize Donations, which will provide you the following options:

  • All donations
  • Specify period
    • This will offer a date range selector, so that you can sync only donations made in your date range of choice.

Once you click Start Synchronization, the sync will begin.

Refreshing the page and scrolling back down to the footer will show you the progress/results of that latest manually-started sync.

Note: This mass sync option will only sync live Donations. To sync a test Donation historically, go to that test Donation's record in Fundraise Up and use the Synchronize button there.