NationBuilder
Learn how to connect Anedot to NationBuilder to sync donation and lead data, create or update supporter records, and relay custom field information.
NationBuilder is a powerful CRM and CMS platform widely used by nonprofits and political organizations to manage supporters, campaigns, and content.
Table of Contents
- Connecting Anedot to NationBuilder
- Setup Custom Fields in NationBuilder
- Data Relays
- Field Mapping
- Donation Payload
- Person Payload
Connecting Anedot to NationBuilder
Follow these steps to connect Anedot to NationBuilder:
- In your Anedot account, navigate to Settings > Integrations > Directory.
- Choose Action Pages:
- All Action Pages are included by default.
- To include only specific pages, enter their IDs (comma-separated).
- Optionally, limit the connection to Team-specific data.
- Enter your Nation Name.
- Optionally, check the boxes to send Fund Data or Commitment Data.
- Note: These options require extra setup.
- Click Save. You’ll be redirected to NationBuilder to log in and approve the connection.
You can update pages, Team settings, or login details anytime.
Setup Custom Fields in NationBuilder
In order to relay the Transaction ID, Fund, and/or Commitment custom field data to NationBuilder, custom fields must be set up within NationBuilder.
Create Custom Fields in NationBuilder
- Access the Settings tab in NationBuilder.
- Under Nation defaults, select the Custom Fields tab.
- Click the New Custom Field button in the top right corner.
- Select the object you would like to add custom fields to.
- Donations to Send Fund Data.
- People (Signup) to Send Commitment Data.
- Enter the Name, Slug, and Field Type (use the charts below).
- Click Create Field to complete the setup.
If you do not have access to create Custom Fields within NationBuilder, please contact NationBuilder Support directly.
Donations
Send Fund Data
Field Name | Slug | Field Type |
---|---|---|
fund_id | fund_id | Text |
fund_internal_identifier | fund_internal_identifier | Text |
transaction_id | transaction_id | Text |
commitment_id | commitment_id | Text |
People
Send Commitment Data
Field Name | Slug | Field Type |
---|---|---|
cancelled_on | cancelled_on | Text |
created_on | created_on | Text |
frequency | frequency | Text |
action_page_name | action_page_name | Text |
amount | amount | Number |
status | status | Text |
birthdate | birthdate | Text |
Data Relays
Anedot sends data to NationBuilder based on the type of Action Page used:
1. Financial Pages (Donation Pages)
-
Anedot relays all donation details along with any custom field data.
-
A "Person" event is triggered for each submission:
-
If the donor is new, a new contact is created in NationBuilder.
-
If the donor already exists, their contact record is updated.
-
2. Non-Financial Pages (Lead Pages)
-
Anedot sends only a "Person" event—no donation data is included.
3. Viewing Donor Data in NationBuilder
-
Donor information will appear in the People tab and on the NationBuilder Dashboard.
-
If a donor starts a recurring gift, NationBuilder will automatically apply a "recurring" tag to their profile when the commitment is created.
Field Mapping
The Anedot Fields match the Submission's Raw Data, and the NationBuilder Fields match the Request Body relay.
Person Fields
Anedot Field | NationBuilder Field |
---|---|
"recurring" or null |
tags |
lastName | last_name |
firstName | first_name |
address {postalCode} {city} {region} {line1} {line2} {country} |
mailing_address {zip} {city} {state} {address1} {address2} {country_code} |
birthdate (birthday custom field) |
birthdate (birthday custom field response, appears under Demographics) |
*cancelled_on | cancelled_on (timestamp of when the commitment was cancelled (e.g. 2024-03-29T12:38:38Z)) |
*created_at | created_on (timestamp of when the commitment was created (e.g. 2024-03-29T12:34:11Z)) |
*frequency | frequency (commitment frequency (e.g. monthly)) |
*action_page_name | action_page_name (name of the commitment's AP (e.g. Page 6)) |
*amount | amount (commitment amount (e.g. 25 )) |
*status | status (commitment status (e.g. active or inactive)) |
*Fields associated with the Send Commitment Data functionality.
Donation Fields
The Anedot Fields match the Submission's Raw Data (or the *custom hidden fields) and the NationBuilder Fields match the Request Body relay.
Anedot Field | NationBuilder Field |
---|---|
*note | note |
person id (from the NB Person Relay Response Body) | donor_id |
*election_cycle | election_cycle |
*election_period | election_period |
*election_period_ngp_code | election_period_ngp_code |
employerName | employer |
lastName | last_name |
firstName | first_name |
*is_private | is_private |
*membership_name | membership_name |
occupation | occupation |
**utm_campaign | mailing_slug |
paymentRequests responseTime | succeeded_at |
donations {employerAddressPostalCode} {employerAddressCity} {employerAddressRegion} {employerAddressLine1} {employerAddressLine2} |
work_address {zip} {city} {state} {address1} {address2} |
amount | amount_in_cents |
paymentMethod {postalCode} {city} {region} {line1} {line2} {country} |
billing_address {zip} {city} {state} {address1} {address2} {country_code} |
*tracking_code_slug | tracking_code_slug |
*actblue_order_number | actblue_order_number |
depends on the payment method: bank_account: "E" cash: "C" check: "K" credit_card: "D" in_kind: "I" offline_card or paypal: "O" |
payment_type_ngp_code |
*recruiter_name_or_email | recruiter_name_or_email |
***fund_id | fund_id (fund UID (system generated) (e.g. 52681d6f-a6dd-4103-b84b-ddc0ae2be0a8)) |
***fund_internal_identifier | fund_internal_identifier (fund internal identifier (set up in Fund Settings, e.g. 1001 )) |
transaction_id | transaction_id |
commitment_id | commitment_id |
*Custom Hidden Fields must be added to the Anedot Action Page in order to be relayed.
** UTM Campaign can be added to the Page URL in the Action Page Builder.
***Fields associated with the Send Fund Data functionality.
Donation Payload
Request Headers
{
"User-Agent": "Anedot/b17216ad",
"Content-Type": "application/json",
"X-Integration-Id": "n6d219f500afcc547b61c"
}
Request Body
Includes Send Fund Data
fields (fundID
and fundInternalIdentifier
). If Send Fund Data
is not enabled, the fields are set to null
.
{
"donation": {
"note": "Received via Anedot Hosted.",
"email": "annie@anedot.com",
"fundId": "52681d6f-a6dd-4103-b84b-ddc0ae2be0a8",
"donorId": 14579,
"election": {
"cycle": null,
"period": null,
"periodNgpCode": null
},
"employer": null,
"lastName": "Dot",
"firstName": "Annie",
"isPrivate": null,
"membership": {
"name": null
},
"occupation": null,
"mailingSlug": null,
"succeededAt": "2024-03-29T13:18:42.559Z",
"workAddress": {
"zip": null,
"city": null,
"state": null,
"address1": null
},
"amountInCents": 2500,
"billingAddress": {
"zip": "70112",
"city": "New Orleans",
"state": "LA",
"address1": "1340 Poydras St",
"address2": null,
"countryCode": "US"
},
"trackingCodeSlug": "Anedot",
"actblueOrderNumber": null,
"paymentTypeNgpCode": "O",
"recruiterNameOrEmail": null,
"fundInternalIdentifier": "1001"
}
}
Response Body (Success)
Includes Send Fund Data
fields (fundId
and fundInternalIdentifier
). If Send Fund Data
is not enabled, the fields are set to null
.
Includes Send Commitment Data
fields (cancelledOn
, createdAt
, frequency
, actionPageName
, amount
, status
). Since this payload is for a Donation object, the responses are set to null
.
{
"donation": {
"id": 2933,
"note": "Received via Anedot Hosted.",
"donor": {
"id": 14579,
"sex": null,
"note": null,
"tags": [],
"ward": null,
"dwId": null,
"email": "annie@anedot.com",
"party": null,
"phone": "12015550123",
"amount": null,
"mobile": null,
"ngpId": null,
"rncId": null,
"status": null,
"vanId": null,
"employer": null,
"birthdate": "2024-03-29",
"frequency": null,
"lastName": "Dot",
"nbecGuid": null,
"rncRegid": null,
"civicrmId": null,
"createdAt": "2024-03-29T09:18:44-04:00",
"createdOn": null,
"firstName": "Annie",
"occupation": null,
"twitterId": null,
"updatedAt": "2024-03-29T09:18:45-04:00",
"doNotCall": false,
"externalId": null,
"linkedinId": null,
"middleName": "",
"pfStratId": null,
"precinctId": null,
"signupType": 0,
"cancelledOn": null,
"datatrustId": null,
"emailOptIn": true,
"hasFacebook": false,
"isVolunteer": false,
"recruiterId": null,
"twitterName": null,
"cityDistrict": null,
"fireDistrict": null,
"labourRegion": null,
"mobileOptIn": null,
"salesforceId": null,
"stateFileId": null,
"supportLevel": null,
"countyFileId": null,
"doNotContact": false,
"countyDistrict": null,
"primaryAddress": {
"lat": null,
"lng": null,
"lot": null,
"zip": "70112",
"city": "New Orleans",
"fips": null,
"zip4": null,
"zip5": "70112",
"state": "LA",
"county": null,
"address1": "1340 Poydras St",
"address2": null,
"address3": null,
"streetName": "Poydras",
"streetType": "St",
"unitNumber": null,
"countryCode": "US",
"carrierRoute": null,
"sortSequence": null,
"streetNumber": "1340",
"streetPrefix": "",
"streetSuffix": null,
"deliveryPoint": null
},
"schoolDistrict": null,
"actionPageName": null,
"federalDistrict": null,
"villageDistrict": null,
"judicialDistrict": null,
"workPhoneNumber": null,
"isTwitterFollower": false,
"schoolSubDistrict": null,
"stateLowerDistrict": null,
"stateUpperDistrict": null,
"profileImageUrlSsl": "https://assets.nationbuilder.com/assets/notifier/profile-avatar.png",
"supranationalDistrict": null
},
"email": "annie@anedot.com",
"amount": "$25.00",
"ngpId": null,
"fundId": "52681d6f-a6dd-4103-b84b-ddc0ae2be0a8",
"donorId": 14579,
"election": null,
"employer": null,
"fecType": "Contribution",
"authorId": null,
"failedAt": null,
"importId": null,
"lastName": "Dot",
"pageSlug": null,
"pledgeId": null,
"createdAt": "2024-03-29T09:18:45-04:00",
"firstName": "Annie",
"isPrivate": null,
"membership": null,
"occupation": null,
"updatedAt": "2024-03-29T09:18:45-04:00",
"canceledAt": null,
"middleName": null,
"checkNumber": null,
"mailingSlug": null,
"succeededAt": "2024-03-29T09:18:42-04:00",
"workAddress": {
"lat": null,
"lng": null,
"lot": null,
"zip": null,
"city": null,
"fips": null,
"zip4": null,
"zip5": null,
"state": null,
"county": null,
"address1": null,
"address2": null,
"address3": null,
"streetName": null,
"streetType": null,
"unitNumber": null,
"countryCode": null,
"carrierRoute": null,
"sortSequence": null,
"streetNumber": null,
"streetPrefix": null,
"streetSuffix": null,
"deliveryPoint": null
},
"authorization": null,
"amountInCents": 2500,
"billingAddress": {
"lat": null,
"lng": null,
"lot": null,
"zip": "70112",
"city": "New Orleans",
"fips": null,
"zip4": null,
"zip5": "70112",
"state": "LA",
"county": null,
"address1": "1340 Poydras St",
"address2": null,
"address3": null,
"streetName": "Poydras",
"streetType": "St",
"unitNumber": null,
"countryCode": "US",
"carrierRoute": null,
"sortSequence": null,
"streetNumber": "1340",
"streetPrefix": "",
"streetSuffix": null,
"deliveryPoint": null
},
"fecTypeNgpCode": "C",
"paymentTypeName": "Other",
"trackingCodeSlug": "anedot",
"merchantAccountId": null,
"actblueOrderNumber": null,
"paymentTypeNgpCode": "O",
"recurringDonationId": null,
"corporateContribution": false,
"recruiterNameOrEmail": "Annie Dot",
"fundInternalIdentifier": "1001"
}
}
Response Body (Failure)
{
"code": "unauthorized",
"message": "You are not authorized to access this content. Your access token may be missing. The resource owner also may not have a permission level sufficient to grant access."
}
Response Body (Error)
{
"code": "unauthorized",
"message": "You are not authorized to access this content. Your access token may be missing. The resource owner also may not have a permission level sufficient to grant access."
}
Person Payload
Request Headers
{
"User-Agent": "Anedot/b17216ad",
"Content-Type": "application/json",
"X-Integration-Id": "n6d219f500afcc547b61c"
}
Request Body
{
"person": {
"tags": [],
"email": "annie@anedot.com",
"phone": null,
"birthdate": "1995-03-29",
"lastName": "Annie",
"firstName": "Dot",
"mailingAddress": {
"zip": null,
"city": null,
"state": null,
"address1": null,
"address2": null,
"countryCode": null
}
}
}
Response Body (Success)
Includes Send Commitment Data
fields (cancelledOn
, createdAt
, frequency
, actionPageName
, amount
, status
). If Send Commitment Data
is not selected, fields are set to null
.
{
"person": {
"id": 14579,
"bio": null,
"sex": null,
"demo": null,
"note": null,
"tags": [],
"ward": null,
"dwId": null,
"email": "annie@anedot.com",
"party": null,
"phone": null,
"amount": null,
"author": null,
"church": null,
"email1": "annie@anedot.com",
"email2": null,
"email3": null,
"email4": null,
"emails": [{
"isBad": false,
"isPrimary": true,
"emailNumber": 1,
"emailAddress": "annie@anedot.com"
}],
"locale": null,
"mobile": null,
"ngpId": null,
"parent": null,
"prefix": null,
"rncId": null,
"status": null,
"suffix": null,
"vanId": null,
"ballots": [],
"website": null,
"employer": null,
"isDonor": true,
"language": null,
"religion": null,
"township": null,
"username": null,
"authorId": null,
"bannedAt": null,
"birthdate": "1995-03-29",
"ethnicity": null,
"frequency": null,
"fullName": "Annie Dot",
"importId": null,
"lastName": "Dot",
"meetupId": null,
"nbecGuid": null,
"pageSlug": null,
"parentId": null,
"recruiter": null,
"rncRegid": null,
"civicrmId": null,
"createdAt": "2024-03-29T09:18:44-04:00",
"createdOn": null,
"faxNumber": null,
"firstName": "Annie",
"legalName": null,
"occupation": null,
"phoneTime": null,
"subnations": [],
"twitterId": null,
"updatedAt": "2024-03-29T09:23:20-04:00",
"doNotCall": false,
"externalId": null,
"isDeceased": false,
"isProspect": false,
"linkedinId": null,
"middleName": "",
"pfStratId": null,
"precinctId": null,
"signupType": 0,
"availability": null,
"cancelledOn": null,
"datatrustId": null,
"emailOptIn": true,
"hasFacebook": false,
"homeAddress": null,
"isSupporter": true,
"isVolunteer": false,
"lastCallId": null,
"partyMember": null,
"recruiterId": null,
"twitterName": null,
"workAddress": {
"lat": null,
"lng": null,
"lot": null,
"zip": null,
"city": null,
"fips": null,
"zip4": null,
"zip5": null,
"state": null,
"county": null,
"address1": null,
"address2": null,
"address3": null,
"streetName": null,
"streetType": null,
"unitNumber": null,
"countryCode": null,
"carrierRoute": null,
"sortSequence": null,
"streetNumber": null,
"streetPrefix": null,
"streetSuffix": null,
"deliveryPoint": null
},
"cityDistrict": null,
"email1IsBad": false,
"email2IsBad": false,
"email3IsBad": false,
"email4IsBad": false,
"fireDistrict": null,
"isFundraiser": false,
"isMobileBad": false,
"labourRegion": null,
"mobileOptIn": null,
"nbecPrecinct": null,
"precinctCode": null,
"precinctName": null,
"registeredAt": null,
"salesforceId": null,
"stateFileId": null,
"supportLevel": null,
"twitterLogin": null,
"autoImportId": null,
"callStatusId": null,
"childrenCount": 0,
"countyFileId": null,
"doNotContact": false,
"inferredParty": null,
"invoicesCount": null,
"isEarlyVoter": null,
"maritalStatus": null,
"meetupAddress": null,
"previousParty": null,
"priorityLevel": null,
"recruitsCount": 0,
"signupSources": [],
"warningsCount": 0,
"billingAddress": {
"lat": null,
"lng": null,
"lot": null,
"zip": "70112",
"city": "New Orleans",
"fips": null,
"zip4": null,
"zip5": "70112",
"state": "LA",
"county": null,
"address1": "1340 Poydras St",
"address2": null,
"address3": null,
"streetName": "Poydras",
"streetType": "St",
"unitNumber": null,
"countryCode": "US",
"carrierRoute": null,
"sortSequence": null,
"streetNumber": "1340",
"streetPrefix": "",
"streetSuffix": null,
"deliveryPoint": null
},
"countyDistrict": null,
"donationsCount": 1,
"isActiveVoter": null,
"lastDonatedAt": "2024-03-29T09:18:42-04:00",
"lastInvoiceAt": null,
"mailingAddress": {
"lat": null,
"lng": null,
"lot": null,
"zip": "70112",
"city": null,
"fips": null,
"zip4": null,
"zip5": "70112",
"state": null,
"county": null,
"address1": null,
"address2": null,
"address3": null,
"streetName": null,
"streetType": null,
"unitNumber": null,
"countryCode": null,
"carrierRoute": null,
"sortSequence": null,
"streetNumber": null,
"streetPrefix": null,
"streetSuffix": null,
"deliveryPoint": null
},
"noteUpdatedAt": null,
"primaryAddress": {
"lat": null,
"lng": null,
"lot": null,
"zip": "70112",
"city": null,
"fips": null,
"zip4": null,
"zip5": "70112",
"state": null,
"county": null,
"address1": null,
"address2": null,
"address3": null,
"streetName": null,
"streetType": null,
"unitNumber": null,
"countryCode": null,
"carrierRoute": null,
"sortSequence": null,
"streetNumber": null,
"streetPrefix": null,
"streetSuffix": null,
"deliveryPoint": null
},
"profileContent": null,
"schoolDistrict": null,
"twitterAddress": null,
"twitterWebsite": null,
"unsubscribedAt": null,
"actionPageName": null,
"callStatusName": null,
"facebookAddress": null,
"federalDistrict": null,
"firstDonatedAt": "2024-03-29T09:18:42-04:00",
"firstInvoiceAt": null,
"phoneNormalized": null,
"primaryEmailId": 1,
"profileHeadline": null,
"twitterLocation": null,
"villageDistrict": null,
"voterUpdatedAt": null,
"citySubDistrict": null,
"contactStatusId": null,
"couldVoteStatus": false,
"facebookUsername": null,
"federalDonotcall": false,
"firstProspectAt": null,
"isAbsenteeVoter": null,
"judicialDistrict": null,
"lastContactedAt": null,
"lastContactedBy": null,
"mediaMarketName": null,
"mobileNormalized": null,
"submittedAddress": null,
"workPhoneNumber": null,
"firstRecruitedAt": null,
"firstSupporterAt": "2024-03-29T09:18:44-04:00",
"firstVolunteerAt": null,
"isLeaderboardable": true,
"isProfilePrivate": false,
"lastFundraisedAt": "2024-03-29T09:18:42-04:00",
"nbecPrecinctCode": null,
"registeredAddress": null,
"twitterUpdatedAt": null,
"contactStatusName": null,
"facebookUpdatedAt": null,
"firstFundraisedAt": "2024-03-29T09:18:42-04:00",
"isTwitterFollower": false,
"schoolSubDistrict": null,
"twitterDescription": null,
"facebookProfileUrl": null,
"isDroppedFromFile": null,
"profileContentHtml": null,
"stateLowerDistrict": null,
"stateUpperDistrict": null,
"closedInvoicesCount": null,
"isPossibleDuplicate": false,
"isProfileSearchable": true,
"profileImageUrlSsl": "https://assets.nationbuilder.com/assets/notifier/profile-avatar.png",
"ruleViolationsCount": 0,
"twitterFriendsCount": null,
"donationsRaisedCount": 1,
"inferredSupportLevel": null,
"lastRuleViolationAt": null,
"overdueInvoicesCount": 0,
"supranationalDistrict": null,
"userSubmittedAddress": null,
"capitalAmountInCents": 1500,
"twitterFollowersCount": null,
"invoicesAmountInCents": 0,
"supportLevelChangedAt": null,
"donationsAmountInCents": 2500,
"isIgnoreDonationLimits": false,
"priorityLevelChangedAt": null,
"supportProbabilityScore": null,
"turnoutProbabilityScore": null,
"activeCustomerExpiresAt": null,
"activeCustomerStartedAt": null,
"donationsCountThisCycle": 0,
"isSurveyQuestionPrivate": false,
"outstandingInvoicesCount": null,
"isPermanentAbsenteeVoter": null,
"spentCapitalAmountInCents": 0,
"closedInvoicesAmountInCents": 0,
"donationsRaisedAmountInCents": 2500,
"invoicePaymentsAmountInCents": 0,
"receivedCapitalAmountInCents": 1500,
"donationsPledgedAmountInCents": 0,
"donationsRaisedCountThisCycle": 0,
"donationsToRaiseAmountInCents": 0,
"donationsAmountThisCycleInCents": 0,
"outstandingInvoicesAmountInCents": 0,
"invoicePaymentsReferredAmountInCents": 0,
"donationsRaisedAmountThisCycleInCents": 0
},
"precinct": null
}
Response Body (Failure)
{
"code": "unauthorized",
"message": "You are not authorized to access this content. Your access token may be missing. The resource owner also may not have a permission level sufficient to grant access."
}