> For the complete documentation index, see [llms.txt](https://docs.anedot.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.anedot.com/integrations/political-campaign-tools/campaign-solutions.md).

# Campaign Solutions

Connect Anedot to Campaign Solutions to relay donation data for political compliance and campaign reporting workflows from Settings → Integrations.

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.

## Connecting Anedot to Campaign Solutions

To integrate your Anedot account with Campaign Solutions, follow these steps:

1. In your Anedot fundraising account, navigate to **Settings -> Integrations -> Directory**.
2. Click the blue\*\*+ New Connection\*\*button in the upper right corner.
3. Choose **Campaign Solutions**from the available directory options.
4. Choose**Action Page(s)**
   * All Action Pages are selected by default.
   * To exclude specific pages, enter a comma-separated list of Action Page IDs.
5. (Optional) Restrict integration access to specific **Teams** if needed.
6. Enter the token provided by **Campaign Solutions**.
7. 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 and conduit transactions are 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                                                |
| email                                                                                                                                                                                                                            | email                                               |
| phone                                                                                                                                                                                                                            | phone                                               |
| title                                                                                                                                                                                                                            | title                                               |
| origin (Donation)                                                                                                                                                                                                                | origin                                              |
| source (Donation)                                                                                                                                                                                                                | source                                              |
| status (Donation)                                                                                                                                                                                                                | status                                              |
| suffix                                                                                                                                                                                                                           | suffix                                              |
| donation \[\*Object includes: (id) fees (anedot) fees (vendor) fund (id) fund (name) fund (identifier) products (name) products {internal identifier} card (type) card {last digits} donation\_project credit\_card\_expiration] | 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).*

```json
{"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

```json
{"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)

```json
{"contextId":"b100be5b-f2a1-4c33-900e-0fd5a4ca0dd5","messageId":"d7caaa29e25a58a2fbc8f|completed|2023-04-10T17:28:18.0000000+00:00"}
```

### Response Body (Failure)

```json
{"contextId":"49868250-9f61-416a-a682-bab3831e90d7","errorMessage":"No Token Supplied or has an incorrect format"}
```

### Response Status (Success)

```
200
```

### Response Status (Failure)

```
400
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.anedot.com/integrations/political-campaign-tools/campaign-solutions.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
