DonorPerfect is a donor management software used by nonprofits for marketing, automations, integrations, and fundraising tools.
Anedot relays financial data collected through Anedot Donation Pages to DonorPerfect.
Connect Anedot to DonorPerfect
To connect your Anedot fundraising account to DonorPerfect successfully, follow the steps below:
Access the Settings>Intregrations tab within your fundraising account Dashboard.
Select the blue + New Connection button in the upper right corner.
Select DonorPerfect from the Integration Directory.
Next, select which Action Pages you would like to sync with DonorPerfect. Default is All Action Pages.
To exclude pages, enter a comma separated list of the Action Page IDs.
Optionally, you can scope the integration to only send team-specific data to DonorPerfect.
Apply your DonorPerfect API Key.
Click Save!
The Action Pages, Team, and credentials can be modified at any time post-setup.
Data Relays
Anedot currently supports the following fields. These fields must be setup on Action Pages as Hidden Custom Fields to work properly:
gl_code (General Ledger Code - Fund Name)
solicit_code
sub_solicit_code
campaign
gift_narrative
gift_type
gfname
glname
receipt_delivery_g
donor_rcpt_type
Blank = Individual
I = Individual
C = Consolidated
Custom Field values can be set at the page-level, as a Global Value, or through URL Parameters.
Page-level can be set within the Settings>Sharing>Page Specific Values tab of the Builder.
Global Value can be set when customizing the Custom Hidden Field in the Form tab of the Builder.
Custom Field values are stored on all donations and recurrence payloads.
Single and Multi-Fund relays are supported.
This is determined by the @split_gift='Y/N)' param. Y = Multi-Fund, N = Single Fund)
For Multi-Fund donations, expect n+1 relays (where n is the number of funds). The first relay will have @record_type='M' for "main gift," which is a summary of the total donation amount. Each subsequent relay corresponds to an individual fund and will have @record_type='G'.
Multi-Fund donations send one relay per fund.
Data in DonorPerfect
In DonorPerfect new records are created and updated based on the Email for that record.
Use Quick Search to locate donor records. The search results will display the record Created Date and Modified Date. The Modified Date references the most recent successful relay. See the image below.
Click on the donor record to view specific details such as the donor's contact information, latest donation, and other donation metrics. See the image below.
To view all donations for a donor, click the Gifts tab. See Image 3.
Field Mapping
Donor Relay
Anedot Field | DonorPerfect Field |
“0” | donor_id |
firstName | first_name |
lastName | last_name |
middleName | middle_name |
suffix | suffix |
title | title |
title, or if not present, firstName | salutation |
N/A | prof_title |
N/A | opt_line |
address {line1} | address |
address {line2} | address2 |
address {city} | city |
address {region} | state |
address {postal_code} | zip |
address {country} | country |
N/A | address_type |
N/A | home_phone |
N/A | business_phone |
N/A | fax_phone |
phone | mobile_phone |
“N” | org_rec |
“IN” | donor_type |
“N” | nomail |
N/A | nomail_reason |
N/A | narrative |
donor_rcpt_type otherwise “I”* | donor_rcpt_type |
“Anedot” | user_id |
*Custom Hidden Fields must be added to the Anedot Donation Page in order to be relayed.
Donation Relay
Anedot Field | DonorPerfect Field |
“0” | gift_id |
donor_id (from Donor Relay’s Response) | donor_id |
“G” (or “M” for multi-fund) | record_type |
created_at | gift_date |
total_amount_processed (supports total charge amount, import for DPF) | amount |
gl_code* | gl_code |
solicit_code* | solicit_code |
sub_solicit_code* | sub_solicit_code |
campaign* | campaign |
gift_type* | gift_type |
“N” (or “Y” for multi-fund) | split_gift |
“N” for one-time donations, “Y” for pledges/commitments | pledge_payment |
(Donation) id (or (Submission) id for multi-fund) | reference |
N/A | transaction_id |
N/A | memory_honor |
gfname* | gfname |
glname* | glname |
0 | fmv |
0 | batch_no |
gift_narrative* | gift_narrative |
N/A | ty_letter_no |
DonorPerfect gift ID for the first multi-fund donation (main gift) otherwise blank | glink |
DonorPerfect pledge ID for pledges/commitments | plink |
“N” | nocalc |
N/A | old_amount |
“USD” | currency |
N/A | gift_aid_date |
N/A | gift_aid_amt |
N/A | gift_aid_eligible_g |
“N” | receipt |
receipt_delivery_g* (for non-split/single fund gifts and for main gift on split/multi-fund gifts) otherwise “N” | receipt_delivery_g |
“3DD” | acknowledgepref |
“Anedot” | user_id |
*Custom Hidden Fields must be added to the Anedot Donation Page in order to be relayed.
Pledge Relay
Anedot Field | DonorPerfect Field |
“0” | gift_id |
donor_id (from Donor Relay’s Response) | donor_id |
created_at | gift_date |
(Commitment) schedule_start | start_date |
“0” | total |
N/A | bill |
(Commitment) first letter of frequency (“A”, “S”, “Q”, “M”) | frequency |
“Y” | reminder |
gl_code* | gl_code |
solicit_code* | solicit_code |
“N” | initial_payment |
sub_solicit_code* | sub_solicit_code |
N/A | writeoff_amount |
N/A | writeoff_date |
“Anedot” | user_id |
campaign* | campaign |
N/A | membership_type |
N/A | membership_level |
N/A | membership_enr_date |
N/A | membership_exp_date |
N/A | membership_link_id |
N/A | address_id |
gift_narrative* | gift_narrative |
N/A | ty_letter_no |
N/A | vault_id |
N/A | receipt_delivery_g |
N/A | contact_id |
*Custom Hidden Fields must be added to the Anedot Donation Page in order to be relayed.
Payload Data
Donor Contact Details
Request Body (Find Donor)
"select donor_id, first_name, last_name, address, city, state, zip from dp where email = '[email protected]'"
Request Body (Create Donor)
"@donor_id=0, @first_name='Annie', @last_name='Dot', @middle_name='E', @suffix=null, @title='Mrs', @salutation=null, @prof_title=null, @opt_line=null, @address='123 Test Road', @address2=null, @city='New Orleans', @state='LA', @zip='70112', @country='US', @address_type=null, @home_phone=null, @business_phone=null, @fax_phone=null, @mobile_phone='12015551234', @email='[email protected]', @org_rec='N', @donor_type='IN', @nomail='N', @nomail_reason=null, @narrative=null, @donor_rcpt_type='I', @user_id='Anedot'"
Response Body (No Donor Found)
{
"result": null
}
Response Body (Create Donor)
{
"result": {
"record": {
"field": {
"id": "",
"name": "",
"value": "35609"
}
}
}
}
Response Body (Donor Found)
{
"result": {
"record": {
"field": [{
"id": "donor_id",
"name": "donor_id",
"value": "30689"
}, {
"id": "first_name",
"name": "first_name",
"value": "Annie"
}, {
"id": "last_name",
"name": "last_name",
"value": "Dot"
}, {
"id": "address",
"name": "address",
"value": "1340 Poydras Street"
}, {
"id": "city",
"name": "city",
"value": "New Orleans"
}, {
"id": "state",
"name": "state",
"value": "LA"
}, {
"id": "zip",
"name": "zip",
"value": "70112"
}]
}
}
}
Response Body (Failure)
{
"result": {
"field": {
"id": "success",
"name": "success",
"value": "false",
"reason": "login failed"
}
}
}
Donation Details
Request Body
"@gift_id=0, @donor_id=34524, @record_type='G', @gift_date='6/22/23', @amount=50.0, @gl_code=null, @solicit_code=null, @sub_solicit_code=null, @campaign=null, @gift_type=null, @split_gift='N', @pledge_payment='Y', @reference='dd5e83ad6fe6294e460d2', @transaction_id=null, @memory_honor=null, @gfname=null, @glname=null, @fmv=0, @batch_no=0, @gift_narrative=null, @ty_letter_no=null, @glink=null, @plink=143377, @nocalc='N', @old_amount=null, @currency='USD', @gift_aid_date=null, @gift_aid_amt=null, @gift_aid_eligible_g=null, @receipt='N', @receipt_delivery_g='N', @acknowledgepref='3DD', @user_id='Anedot'"
Response Body (Success)
{
"result": {
"record": {
"field": {
"id": "",
"name": "",
"value": "120169"
}
}
}
}
Payload Templates
SaveDonor
@donor_id=0,
@first_name= resource_first_name,
@last_name= resource_last_name,
@middle_name= resource_middle_name,
@suffix= resource_suffix,
@title= resource_title,
@salutation="",
@prof_title="",
@opt_line="",
@address= resource_address_line_1,
@address2= resource_address_line_2,
@city= resource_address_city,
@state= resource_address_region,
@zip= resource_address_postal_code,
@country= resource_address_country,
@address_type="",
@home_phone="",
@business_phone="",
@fax_phone="",
@mobile_phone= resource_phone,
@email= resource_email,
@org_rec='N',
@donor_type='IN',
@nomail='N',
@nomail_reason="",
@narrative="",
@donor_rcpt_type='I',
@user_id='Anedot'
SaveGift
@gift_id=0,
@donor_id=<queried from DP>,
@record_type='G',
@gift_date=resource created_at,
@amount=resource total_amount,
@gl_code="",
@solicit_code="",
@sub_solicit_code="",
@campaign="",
@gift_type="",
@split_gift='N',
@pledge_payment='N' or 'Y',
@reference=resource id,
@transaction_id="",
@memory_honor="",
@gfname="",
@glname="",
@fmv=0,
@batch_no=0,
@gift_narrative="",
@ty_letter_no="",
@glink="",
@plink=<pledge_id queried from dp>,
@nocalc='N',
@old_amount="",
@currency='USD',
@gift_aid_date="",
@gift_aid_amt="",
@gift_aid_eligible_g="",
@receipt='N',
@receipt_delivery_g='N',
@acknowledgepref='3DD',
@user_id='Anedot'
SavePledge
@gift_id=0,
@donor_id=<donor_id queried from DP>,
@gift_date=resource created_at,
@start_date=resource commitment schedule,
@total=0,
@bill="",
@frequency=commitment frequency --> ('A', 'Q', 'M', or 'S'),
@reminder='Y',
@gl_code="",
@solicit_code="",
@initial_payment='N',
@sub_solicit_code="",
@writeoff_amount="",
@writeoff_date="",
@user_id='Anedot',
@campaign="",
@membership_type="",
@membership_level="",
@membership_enr_date="",
@membership_exp_date="",
@membership_link_id="",
@address_id="",
@gift_narrative="",
@ty_letter_no="",
@vault_id="",
@receipt_delivery_g="",
@contact_id=""