Campaign Solutions
Connect Anedot with Campaign Solutions to automatically send donation data—including custom fields, source codes, and UTM tags—via secure webhook relays for optimized fundraising and advertising.
Campaign Solutions is a full-service consulting firm specializing in fundraising and advertising strategies for political and nonprofit organizations.
Table of Contents
Connecting Anedot to Campaign Solutions
To integrate your Anedot account with Campaign Solutions, follow these steps:
- In your Anedot fundraising account, navigate to Settings > Integrations > Directory.
-
Click the blue + New Connection button in the upper right corner.
-
Choose Campaign Solutions from the available directory options.
-
Choose Action Page(s)
-
All Action Pages are selected by default.
-
To exclude specific pages, enter a comma-separated list of Action Page IDs.
-
-
(Optional) Restrict integration access to specific Teams if needed.
-
Enter the token provided by Campaign Solutions.
-
Click Save to complete the connection.
Integration Endpoint:
https://csanedotintegration.azurewebsites.net/v1/donation/{account UID}
You can edit connected Action Pages, Teams, and credentials at any time after setup.
Data Relay
Anedot relays financial page data to Campaign Solutions using donation_completed
webhook events. These relays include:
-
Custom Field data
-
Source Codes
-
UTM Parameters included in the URL
-
Request Token: Sent in the header as required by Campaign Solutions
Non-financial page data is not supported at this time.
Additional features:
-
Push Unsent Donations: Failed donations or historical data (via date range) can be pushed for all Action Pages, regardless of page type.
Field Mapping
Relay Fields
The Anedot fields correspond to the Submission's Raw Data, while the Campaign Solutions fields reflect the values included in the Request Body of the relay.
Anedot Field | Campaign Solutions Field |
---|---|
“donation_completed” | event |
createdAt | date |
[firstName] [lastName] |
name |
phone | phone |
title | title |
origin (Donation) | origin |
source (Donation) | source |
status (Donation) | status |
suffix | suffix |
donation [*Object includes: |
donation [object, multiple values] |
referrer | referrer |
utmCodes {term} | utm_term |
frequency | frequency |
lastName | last_name |
firstName | first_name |
ipAddress | ip_address |
amount (x100) | net_amount |
occupation | occupation |
updatedAt | updated_at |
utmCodes {medium} | utm_medium |
utmCodes {source} | utm_source |
accountId | account_uid |
middleName | middle_name |
sourceCode | source_code |
utmCodes {content} | utm_content |
accountName | account_name |
address city | address_city |
checkNumber (Donation) | check_number |
createdAt | date_iso8601 |
amount (x100) | event_amount |
utmCodes {campaign} | utm_campaign |
employerName | employer_name |
(Submission) id | submission_id |
actionPageId | action_page_id |
address {line1} | address_line_1 |
address {line2} | address_line_2 |
address {region} | address_region |
(Commitment) id | commitment_uid |
address {country} | address_country |
actionPageName | action_page_name |
donorProfileId | donor_profile_id |
referrerToForm | referrer_to_form |
amount (x100) | amount_in_dollars |
paymentMethodId | payment_method_id |
createdAt | created_at_iso8601 |
currenlyEmployed (TRUE/FALSE) | currently_employed |
updatedAt | updated_at_iso8601 |
address {postalCode} | address_postal_code |
Payment Method (donation side-drawer) | payment_description |
custom_field_responses [*Object includes: {Custom field name} {Custom field response value}] |
custom_field_responses [object, multiple values] |
is_recurring_commitment (TRUE/FALSE) | is_recurring_commitment |
schedule_until (Commitment) | commitment_recurring_until |
communicationsConsentEmail (TRUE/FALSE) | communications_consent_email |
communicationsConsentPhone (TRUE/FALSE) | communications_consent_phone |
**UTM fields can be added to the Page URL.
Payload Data
Request Headers
Campaign Solutions needs the "X-Request-Token" header available on all relays (cannot consume them otherwise).
{
"User-Agent": "Anedot-Hookshot/de1398d",
"X-Request-Id": "f64bec6a-eabc-488c-8389-038888062ac9",
"X-Request-Token": "NUQxNDE5QTUtMjM1OS00MjlDLTlGMUItMjZCMjM0RUI3REQ0",
"X-Integration-Id": "8c35985f-b93b-4ebd-8386-53d517ef9082",
"X-Integration-Event": "donation_completed",
"X-Request-Signature": "65e28531c016f8cbe5cc42b3c4cd6c9476f895a11e3df7084e23f2951c922c7f"
}
Request Body
{
"event": "donation_completed",
"payload": {
"date": "2023-04-10 17:28:17 UTC",
"name": "Annie Dot",
"email": "admin@anedot.com",
"phone": "",
"title": "",
"origin": "hosted",
"source": "credit_card",
"status": "completed",
"suffix": "",
"donation": {
"id": "d7caaa29e25a58a2fbc8f",
"fees": {
"anedot_fees": {
"amount": "8.30"
},
"vendor_fees": []
},
"fund": {
"id": "2a07f830-da46-42a9-94e8-52f3e6e3dc79",
"name": "General Fund",
"identifier": "1001"
},
"products": [],
"card_type": "visa",
"card_last_digits": "1111",
"donation_project": "",
"credit_card_expiration": "02/2034"
},
"referrer": "https://secure.anedot-sandbox.com/campaign-solutions-internal-integration-testing/5e20b630-1359-40f8-bcef-5b2d21d7a839?utm_campaign=1&utm_content=2&utm_medium=3&utm_source=4&utm_term=5&source_code=code",
"utm_term": "5",
"frequency": "monthly",
"last_name": "Dot",
"recurring": "true",
"created_at": "2023-04-10 17:28:17 UTC",
"first_name": "Annie",
"ip_address": "2600:1700:6323:c820:20e9:550d:2152:318d",
"net_amount": "191.70",
"occupation": "",
"updated_at": "2023-04-10 17:28:18 UTC",
"utm_medium": "3",
"utm_source": "4",
"account_uid": "ae43230d83536f70ef3b6",
"middle_name": "",
"source_code": "code",
"utm_content": "2",
"account_name": "Campaign Solutions - Anedot-Team Test Acct",
"address_city": "Pembroke Pines",
"check_number": "",
"date_iso8601": "2023-04-10T17:28:17Z",
"event_amount": "200.00",
"utm_campaign": "1",
"employer_name": "",
"submission_id": "26658ba4-8277-40f8-b139-7fe0cc38f7c9",
"action_page_id": "aeda58d4-2f45-4029-b9e6-bccba098d62b",
"address_line_1": "12323 Southwest 12th Street",
"address_line_2": "304",
"address_region": "FL",
"commitment_uid": "ea29d29f-5af7-45e2-b4ba-e8b81a0e3500",
"address_country": "US",
"action_page_name": "Page",
"donor_profile_id": "90f5a9bf-6c36-4326-9c5f-bdfda5e14f36",
"referrer_to_form": "https://anedot-sandbox.com/",
"amount_in_dollars": "200.0",
"payment_method_id": "3412c2bc-a1db-44da-89ef-2908809a8596",
"created_at_iso8601": "2023-04-10T17:28:17Z",
"currently_employed": "true",
"updated_at_iso8601": "2023-04-10T17:28:18Z",
"address_postal_code": "33025",
"payment_description": "Visa •••• 1111",
"custom_field_responses": {},
"is_recurring_commitment": "true",
"commitment_recurring_until": "",
"communications_consent_email": "false",
"communications_consent_phone": "false"
}
}
Response Body (Success)
{
"contextId": "b100be5b-f2a1-4c33-900e-0fd5a4ca0dd5",
"messageId": "d7caaa29e25a58a2fbc8f|completed|2023-04-10T17:28:18.0000000+00:00"
}
Response Body (Failure)
{
"contextId": "49868250-9f61-416a-a682-bab3831e90d7",
"errorMessage": "No Token Supplied or has an incorrect format"
}
Response Status (Success)
200
Response Status (Failure)
400