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 > Directory.

  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 within the Action Page Builder under Form > Hidden Fields:

Donation Relay

  • solicit_code

  • sub_solicit_code

  • campaign

  • gift_aid_date

  • gift_aid_amt

  • gift_aid_eligible_g

  • gift_type

  • gift_narrative

  • gfname

  • glname

  • memory_honor

  • old_amount

  • receipt_delivery_g

  • acknowledgepref

  • transaction_id

  • ty_letter_no

Pledge Relay

  • solicit_code

  • sub_solicit_code

  • campaign

  • gift_narrative

  • receipt_delivery_g

  • ty_letter_no

  • vault_id

Set Up Custom Hidden Field Values

Hidden field values can be configured as Global Values, Page-Level Values, or by using URL Parameters.

  • Global Values allow the same hidden field and value to be reused across multiple pages. This value can be set when the hidden field is created.

  • Page-Level Values allow the same hidden field to be used across multiple pages while assigning a different value for each page. To configure this, leave the Global Value field blank, then go to Settings → Sharing → Page Specific Values to set the value for each page.

  • URL Parameters can also be used to apply a Page-Specific Value dynamically. Click here for instructions on using URL parameters.

All custom hidden 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 Value from Anedot DonorPerfect Field
donor_id "0" donor_id
firstName firstName first_name
lastName lastName last_name
middleName middleName middle_name
suffix suffix suffix
title title title
title title (or, if not present, firstName) salutation
N/A "" prof_title
N/A "" opt_line
address.line1 address {line1} address
address.line2 address {line2} address2
address.city address {city} city
address.region address {region} state
address.postal_code address {postal_code} zip
address.country address {country} country
N/A "" address_type
N/A "" home_phone
N/A "" business_phone
N/A "" fax_phone
phone phone mobile_phone
email email email
N/A "N" org_rec
N/A "IN" donor_type
N/A "N" nomail
N/A "" nomail_reason
N/A "" narrative
*donor_rcpt_type  donor_rcpt_type (otherwise "I") donor_rcpt_type
N/A "Anedot" user_id

*Custom Hidden Fields must be added to the Action Page in order to be relayed.

Donation Relay

This is related to the SaveGift Template

Anedot Field Value from Anedot DonorPerfect Field
donor_id donor_id (from Donor Relay’s Response) donor_id
gift_id "0" gift_id
created_at created_at gift_date
total_amount / processed total amount amount
gl_code gl_code gl_code
*solicit_code solicit_code solicit_code
*sub_solicit_code  sub_solicit_code sub_solicit_code
*campaign  campaign campaign
*gift_type  gift_type gift_type
split_gift split_gift split_gift
initial_payment pledge_payment pledge_payment
reference reference reference
*transaction_id  transaction_id transaction_id
*memory_honor  memory_honor memory_honor
*gfname gfname gfname
*glname  glname glname
batch_no batch_no batch_no
*gift_narrative  gift_narrative gift_narrative
*ty_letter_no ty_letter_no ty_letter_no
gift_rk gift_rk gift_rk
plink plink plink
nocalc nocalc nocalc
*old_amount old_amount old_amount
currency currency currency
*gift_aid_amt  gift_aid_amt gift_aid_amt
*gift_aid_eligible_g  gift_aid_eligible_g gift_aid_eligible_g
*gift_aid_date  gift_aid_date gift_aid_date
receipt receipt receipt
*receipt_delivery_g  receipt_delivery_g receipt_delivery_g
*acknowledgepref  acknowledgepref acknowledgepref
"Anedot" "Anedot" user_id

 

*Custom Hidden Fields must be added to the Action Page in order to be relayed.

Pledge Relay

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

Anedot Field Value from Anedot DonorPerfect Field
donor_id donor_id (from Donor Relay’s Response) donor_id
created_at created_at gift_date
commitment_schedule_start start_date start_date
total total total
bill bill bill
commitment_frequency frequency frequency
reminder reminder reminder
gl_code gl_code gl_code
*solicit_code  solicit_code solicit_code
initial_payment initial_payment initial_payment
*sub_solicit_code  sub_solicit_code sub_solicit_code
writeoff_amount writeoff_amount writeoff_amount
writeoff_date writeoff_date writeoff_date
*campaign  campaign campaign
membership_type membership_type membership_type
membership_level membership_level membership_level
membership_enr_date membership_enr_date membership_enr_date
membership_exp_date membership_exp_date membership_exp_date
membership_link_id membership_link_id membership_link_id
address_id address_id address_id
*gift_narrative  gift_narrative gift_narrative
*ty_letter_no  ty_letter_no ty_letter_no
*vault_id  vault_id vault_id
*receipt_delivery_g  receipt_delivery_g receipt_delivery_g
contact_id contact_id contact_id
"Anedot" "Anedot" user_id

*Custom Hidden Fields must be added to the Action Page in order to be relayed.


Payload Data

Donor Contact Details

Request Body (Find Donor)

{
  "query": "select donor_id, first_name, last_name, address, city, state, zip from dp where email = 'annie@anedot.com'"
}

Request Body (Create Donor)

{
  "first_name": "Annie",
  "last_name": "Dote",
  "middle_name": "",
  "suffix": "",
  "title": "",
  "salutation": "",
  "prof_title": "",
  "opt_line": "",
  "address": "123 Washington St",
  "address2": "",
  "city": "New York",
  "state": "NY",
  "zip": "10011",
  "country": "US",
  "address_type": "",
  "home_phone": "",
  "business_phone": "",
  "fax_phone": "",
  "mobile_phone": "2252501301",
  "email": "annie@anedot.com",
  "org_rec": "N",
  "donor_type": "IN",
  "nomail": "N",
  "nomail_reason": "",
  "narrative": "",
  "donor_rcpt_type": "I",
  "user_id": "Anedot"
}

Response Body (No Donor Found)

{
  "result": null
}

Response Body (Create Donor)

{
  "result": {
    "record": {
      "field": {
        "id": "donor_id",
        "name": "donor_id",
        "value": "12345"
      }
    }
  }
}

Response Body (Donor Found)

{
  "result": {
    "record": {
      "field": [
        {
          "id": "donor_id",
          "name": "donor_id",
          "value": "12345"
        },
        {
          "id": "first_name",
          "name": "first_name",
          "value": "Annie"
        },
        {
          "id": "last_name",
          "name": "last_name",
          "value": "Dote"
        },
        {
          "id": "address",
          "name": "address",
          "value": "123 Washington St"
        },
        {
          "id": "city",
          "name": "city",
          "value": "New York"
        },
        {
          "id": "state",
          "name": "state",
          "value": "NY"
        },
        {
          "id": "zip",
          "name": "zip",
          "value": "10011"
        }
      ]
    }
  }
}

Response Body (Failure)

{
  "result": {
    "field": {
      "id": "success",
      "name": "success",
      "value": "false",
      "reason": "login failed"
    }
  }
}

Donation Details

Request Body

{
  "gift_id": 0,
  "donor_id": 12345,
  "record_type": "G",
  "gift_date": "3/24/26",
  "amount": 100.00,
  "gl_code": "UD",
  "split_gift": "N",
  "pledge_payment": "Y",
  "reference": "Online Gift",
  "fmv": 0,
  "batch_no": 0,
  "glink": "",
  "plink": "",
  "nocalc": "N",
  "currency": "USD",
  "receipt": "N",
  "user_id": "Anedot",
  "solicit_code": "",
  "sub_solicit_code": "",
  "campaign": "",
  "gift_aid_date": "",
  "gift_aid_amt": "",
  "gift_aid_eligible_g": "",
  "gift_type": "ANEDOT",
  "gift_narrative": "",
  "gfname": "",
  "glname": "",
  "memory_honor": "",
  "old_amount": "",
  "receipt_delivery_g": "N",
  "acknowledgepref": "",
  "transaction_id": "",
  "ty_letter_no": ""
}

Response Body (Success)

{
  "result": {
    "record": {
      "field": {
        "id": "gift_id",
        "name": "gift_id",
        "value": "67890"
      }
    }
  }
}

 

Pledge Details (Recurring/Commitment)

Request Body

{
  "gift_id": 0,
  "donor_id": 12345,
  "gift_date": "3/24/26",
  "start_date": "3/24/26",
  "total": 0,
  "bill": null,
  "frequency": "M",
  "reminder": "Y",
  "initial_payment": "N",
  "gl_code": "UD",
  "writeoff_amount": null,
  "writeoff_date": null,
  "user_id": "Anedot",
  "membership_type": null,
  "membership_level": null,
  "membership_enr_date": null,
  "membership_exp_date": null,
  "membership_link_id": null,
  "address_id": null,
  "contact_id": null,
  "solicit_code": "",
  "sub_solicit_code": "",
  "campaign": "",
  "gift_narrative": "",
  "receipt_delivery_g": "N",
  "ty_letter_no": "",
  "vault_id": ""
}

Response Body (Success)

{
  "result": {
    "record": {
      "field": {
        "id": "gift_id",
        "name": "gift_id",
        "value": "67891"
      }
    }
  }
}

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=""