Skip to main content
Version: Next

Virtuous is a CRM software used by nonprofits to manage their data.

The Virtuous Integration supports Action Pages with name, phone, email, and address fields on the form.

To connect your Anedot fundraising account to Virtuous, follow the steps below:

  1. Access the Settings > Integrations > Directory tab within your fundraising account
  2. Click + New Connection
  3. Select Virtuous from the list of available integrations
  4. Next, select the Action Pages you would like connected to Virtuous.
  5. Optional: Select a Team from the dropdown list to scope the connection to only send team-specific data to Virtuous
  6. Apply your Virtuous API Key
  7. Optional: To relay data from Donation Pages only, check the Relay donations pages only box. If this box is unchecked, Lead Pages data will also relay.
  8. Click Save !

Note: The Action Pages, Team, and credentials can be modified at any time post-setup.

Data Relays

  • By default, Anedot will relay both financial and non-financial page data. However, if you only want to receive relays for financial pages, you can check the "Only relay donation page data" checkbox when creating or editing the integration's credentials.

    • Every submission results in a relay to "find or create contact" in Virtuous based on email.

      • If there is no matching contact, one is created.
      • If there is a matching contact, no relay is generated.
    • Additionally, if it is a donation submission, there is an additional "gift_designation" relay for the donation data.

  • In order to relay the segment properly, you will need to set up a hidden field called "segment_name" and set the appropriate segment value for that field (which can be set through URL parameters, as a global value, or as a page-specific value). The instructions are listed below.

    • If the "segment" field is relayed as "null" it is most likely due to a setup issue.
  • Anedot relays void , refunds (only full refunds, not partial), and ach_returned events (sent once a day).

  • Push Unsent (failed donations, all donations) + date range for relays works for all Action Pages.

  • Gift records are imported once daily at midnight by Virtuous.

  • Access the Import Tool within Virtuous to import the Gift batch manually.

  • Check out the following guide provided by Virtuous here for further instructions.

Adding a Virtuous Segment Name

To assign the Virtuous segment_name to an Action Page, access the Action Page Builder within the Action Pages > Pages tab. Next, hover over the Action Page you would like to apply the segment_name to and click Actions > Edit .

Within the Builder, access the Form tab. Within the Form tab, you can add a custom Hidden Field to apply segment_name .

Next, access the Settings > Sharing > Page Specific Values tab to add a custom segment_name .

Be sure to click Publish before exiting the Builder!

Field Mapping

Contact Individual Info

Anedot Field NameField Name in Virtuous
firstName lastNamename
Householdcontact_type
Anedotreference_source
titleprefix
suffixsuffix
first_namefirstName
last_namelastName
middle_namemiddleName

Contact Method

Anedot Field NameField Name in Virtuous
Home Emailtype
emailvalue
communication_consent_emailisOptedIn
"Home Phone"type
phonevalue
communication_consent_phoneisOptedIn

Contact Address

Anedot Field NameField Name in Virtuous
line_1address1
line_2address2
citycity
regionstateCode
postal_codepostal
countrycountryCode

Action Pages Fund/Project

Anedot Field NameField Name in Virtuous
namename
public_descriptiondescription
OngoingfinancialNeedType
OngoingNeedfinancialNeedType
annuallyfinancialNeedFrequency
identifierrevenueAccountingCode
Unspecifiedlocation
Not AllocatedinventoryStatus
Defaulttype
TRUEisActive
FALSEenableSync

Gift

Anedot Field NameField Name in Virtuous
"Donation"transactionSource
submissionIdtransactionId
created_atgiftDate
payment_typegiftType
total_amountamount
frequencyfrequency
card_typecreditCardType
segment_namesegment

Payload Examples

Contacts

Request Body

`{`  
"name": "Organization Name",
"contact_type": "Organization",
"reference_source": "Anedot",
"contact_addresses": [`{`
"city": "Washington",
"state": "DC",
"postal": "20001",
"country": "US",
"address1": "123 Apple Road",
"address2": null
`}`],
"contact_individuals": [`{`
"prefix": null,
"suffix": null,
"last_name": "last_name",
"first_name": "first_name",
"middle_name": null,
"contact_methods": [`{`
"type": "Home Email",
"value": "[[email protected]](/cdn-cgi/l/email-protection)",
"is_opted_in": false
`}`, `{`
"type": "Home Phone",
"value": "5555555555",
"is_opted_in": false
`}`]
`}`]
`}`

Response Body

`{`  
"id": 2259,
"name": "Organization name",
"tags": [],
"address": `{`
"id": 1784,
"city": "Washington",
"label": "Primary Address",
"state": "TX",
"endDay": 31,
"postal": "20001",
"country": "United States",
"address1": "123 Apple Road",
"address2": null,
"endMonth": 12,
"startDay": 1,
"isPrimary": true,
"startMonth": 1,
"canBePrimary": false,
"createdByUser": "Paul's Key",
"modifiedByUser": "Paul's Key",
"createDateTimeUtc": "2022-12-27T20:06:00.8420246Z",
"modifiedDateTimeUtc": "2022-12-27T20:06:01.6110025Z"
`}`,
"website": null,
"isPrivate": false,
"contactType": "Organization",
"description": null,
"giftAskType": null,
"customFields": [],
"informalName": "Organization name",
"lastGiftDate": "Unavailable",
"createdByUser": "Paul's Key",
"giftAskAmount": "$0",
"maritalStatus": null,
"originSegment": null,
"anniversaryDay": null,
"contactTagsUrl": "/api/ContactTag/ByContact/2259",
"lastGiftAmount": "$0",
"modifiedByUser": "Paul's Key",
"anniversaryYear": null,
"contactGiftsUrl": "/api/Gift/ByContact/2259",
"contactNotesUrl": "/api/ContactNote/ByContact/2259",
"originSegmentId": null,
"anniversaryMonth": null,
"lifeToDateGiving": "$0",
"primaryAvatarUrl": null,
"yearToDateGiving": "$0",
"contactReferences": [],
"createDateTimeUtc": "2022-12-27T20:06:00.8107998Z",
"customCollections": [],
"contactIndividuals": [`{`
"id": 3329,
"gender": null,
"prefix": null,
"suffix": null,
"passion": null,
"birthDay": null,
"lastName": "last_name",
"avatarUrl": null,
"birthDate": "",
"birthYear": null,
"contactId": 2259,
"firstName": "first_name",
"isPrimary": true,
"birthMonth": null,
"isDeceased": false,
"middleName": null,
"isSecondary": false,
"canBePrimary": false,
"customFields": [],
"createdByUser": "Paul's Key",
"approximateAge": null,
"canBeSecondary": false,
"contactMethods": [`{`
"id": 4187,
"type": "Home Email",
"value": "[[email protected]](/cdn-cgi/l/email-protection)",
"isOptedIn": false,
"isPrimary": true,
"canBePrimary": false,
"createdByUser": "Paul's Key",
"modifiedByUser": "Paul's Key",
"createDateTimeUtc": "2022-12-27T20:06:00.8107998Z",
"modifiedDateTimeUtc": "2022-12-27T20:06:01.6266287Z"
`}`, `{`
"id": 4188,
"type": "Home Phone",
"value": "4444444222",
"isOptedIn": false,
"isPrimary": true,
"canBePrimary": false,
"createdByUser": "Paul's Key",
"modifiedByUser": "Paul's Key",
"createDateTimeUtc": "2022-12-27T20:06:00.8420246Z",
"modifiedDateTimeUtc": "2022-12-27T20:06:01.6266287Z"
`}`],
"modifiedByUser": "Paul's Key",
"createDateTimeUtc": "2022-12-27T20:06:00.8107998Z",
"customCollections": [],
"modifiedDateTimeUtc": "2022-12-27T20:06:01.6110025Z"
`}`],
"organizationGroups": [],
"mergedIntoContactId": null,
"modifiedDateTimeUtc": "2022-12-27T20:06:01.6110025Z",
"contactPlannedGiftsUrl": "/api/PlannedGift/ByContact/2259",
"contactRelationshipsUrl": "/api/Relationship/ByContact/2259",
"contactImportantNotesUrl": "/api/ContactNote/Important/ByContact/2259",
"contactRecurringGiftsUrl": "/api/RecurringGift/ByContact/2259",
"contactPassthroughGiftsUrl": "/api/Gift/Passthrough/ByContact/2259"
`}`

Gifts

Request Body

`{`  
"amount": 11.0,
"contact": `{`
"id": 2260,
"name": "Organization name",
"email": "[[email protected]](/cdn-cgi/l/email-protection)",
"phone": "5555555555",
"title": null,
"suffix": null,
"address": `{`
"city": "Washington",
"state": "DC",
"postal": "20001",
"country": "US",
"address1": "123 Apple Road",
"address2": null
`}`,
"last_name": "last_name",
"first_name": "first_name",
"middle_name": null
`}`,
"segment": null,
"frequency": null,
"gift_date": "12/27/2022",
"gift_type": "Credit",
"designations": [`{`
"code": "1001",
"name": "General Fund",
"amountDesignated": 11.0
`}`],
"transaction_id": "19f23b8c-ae1b-45fb-a4a7-3302e72e88ec",
"credit_card_type": "Visa",
"transaction_source": "Donation",
"recurring_gift_transaction_id": null
`}`

Response Body

`{``}`

Donation Reversal (void, refund, ach return)

Request Body

`{`  
"notes": "",
"giftDate": "2023-12-22T00:00:00",
"reversedGiftId": 21728
`}`

Response Body (Success)

`{`  
"id": 21734,
"batch": null,
"grant": null,
"notes": "",
"amount": -55,
"giftUrl": "/api/Gift/21734",
"grantId": null,
"segment": null,
"tribute": null,
"giftDate": "2023-12-22T00:00:00",
"giftType": "ReversingTransaction",
"grantUrl": null,
"contactId": 2063,
"giftAskId": null,
"isPrivate": false,
"segmentId": null,
"tributeId": null,
"contactUrl": "/api/Contact/2063",
"segmentUrl": null,
"contactName": "Annie",
"mediaOutlet": null,
"receiptDate": null,
"segmentCode": null,
"tributeType": null,
"currencyCode": "USD",
"customFields": [],
"exchangeRate": 1,
"giftPremiums": [],
"createdByUser": "Paul Dietzel",
"mediaOutletId": null,
"transactionId": null,
"modifiedByUser": "Paul Dietzel",
"pledgePayments": [],
"reversedGiftId": 21728,
"amountFormatted": "-$55.00",
"isTaxDeductible": true,
"baseCurrencyCode": "USD",
"giftDesignations": [`{`
"id": 12689,
"display": "General Fund: -$55.00",
"project": "General Fund",
"projectId": 394,
"projectUrl": "/api/Project/394",
"projectCode": "1001",
"projectType": "Default",
"projectLocation": "Unspecified",
"amountDesignated": -55,
"externalAccountingCode": null
`}`],
"createDateTimeUtc": "2023-12-29T20:51:51.5903749Z",
"giftDateFormatted": "12/22/2023",
"giftTypeFormatted": "Reversing Transaction",
"transactionSource": null,
"cashAccountingCode": null,
"isAcknowledgedGift": false,
"acknowledgementDate": null,
"contactIndividualId": 3116,
"contactMembershipId": null,
"modifiedDateTimeUtc": "2023-12-29T20:51:51.741603Z",
"acknowledgementNotes": null,
"contactPassthroughId": null,
"receiptDateFormatted": "",
"contactPassthroughUrl": null,
"recurringGiftPayments": [],
"acknowledgeeIndividualId": null
`}`

Response Body (Failure)

`{`  
"message": "The request is invalid.",
"modelState": `{`
"": ["Gift Transaction already exists."]
`}`
`}`

Response Body (Error)

`{``}`

Response Status (Success)

200

Response Status (Failure)

400

Response Status (Error)

null

Related Articles

Aegis DonorPerfect MemberPress Planning Center QuickBooks Online