Skip to content
  • There are no suggestions because the search field is empty.

DonorPerfect

Connect Anedot to DonorPerfect to automatically relay donation data, including fund allocations and hidden custom fields, with flexible setup options for Action Pages, Teams, and recurring gifts.

DonorPerfect is a donor management platform used by nonprofits for fundraising, marketing, automation, and integrations.

How It Works

Anedot relays financial data from Donation Pages directly to DonorPerfect, enabling seamless tracking and donor record updates.


Table of Contents


Connecting Anedot to DonorPerfect

To set up the integration:

  1. In your Anedot account, go to Settings > Integrations > Direcotyr.

  2. Click the blue + New Connection button.

  3. Select DonorPerfect from the directory.

  4. Choose which Action Pages to sync:

    • All pages are selected by default.

    • To exclude specific pages, enter a comma-separated list of Action Page IDs.

  5. (Optional) Limit the integration to a specific Team.

  6. Paste your DonorPerfect API Key.

  7. Click Save to complete the setup.

You can edit Action Pages, Team scope, and credentials at any time after setup.


Data Relays

Custom Hidden Field

Anedot supports the following Custom Hidden Fields, which must be configured on your Action Pages:

  • 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 or I = Individual

    • C = Consolidated

How to Set Custom Field Values

  • Page-Level: Go to Settings > Sharing > Page Specific Values in the Page Builder.

  • Global Value: Set this in the Form > Custom Hidden Field section.

  • URL Parameters: Click here for instructions on using URL parameters.

All custom field values are included in both one-time and recurring donation payloads.


Single vs. Multi-Fund Donations

  • Single Fund: Uses @split_gift='N' and sends one relay.

  • Multi-Fund: Uses @split_gift='Y' and sends one relay per fund:

    • One main gift relay with @record_type='M'

    • One relay per fund with @record_type='G'


Viewing Data in DonorPerfect

  • New or existing donor records are matched using the email address.

  • Use Quick Search to find donor records by email.
    CleanShot 2025-06-05 at 08.20.45@2x

  • The Created Date shows when the record was added; the Modified Date reflects the most recent successful relay.


Where to View Donations:

  • Donor Record: View contact info and most recent donation.
    CleanShot 2025-06-05 at 08.22.14@2x

  • Gifts Tab: See a complete history of donations from that donor.
    CleanShot 2025-06-05 at 08.22.38@2x


Field Mapping

Donor Relay

This is related to the SaveDonor Template.

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
email email
“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

This is related to the SaveGift Template

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

This is related to the SavePledge Template (commitments and recurrences).

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 = 'admin@anedot.com'"

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='annie@anedot.com', @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=""