> 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/crm-donor-management/campaign-nucleus.md).

# Campaign Nucleus

Integrate Anedot with Campaign Nucleus to relay supporter and donation data using customizable webhook-style payloads from Settings → Integrations.

Integrate Anedot with Campaign Nucleus to relay supporter and donation data using customizable webhook-style payloads.

Campaign Nucleus is a CRM platform designed for political organizations to manage supporter data, outreach, and engagement.

## Connecting Anedot to Campaign Nucleus

To connect your Anedot account to Campaign Nucleus:

1. Navigate to **Settings → Integrations → Directory** within your fundraising account.
2. Click **+ New Connection** in the upper right corner.
3. Select **Campaign Nucleus** from the directory.
4. Choose the Action Pages you want to sync. By default, all Action Pages are included. To exclude specific pages, enter a comma-separated list of Action Page IDs.
5. (Optional) Scope the integration to send only Team-specific data. If no Team is selected, all designated Action Pages are synced.
6. Enter your Campaign Nucleus Client ID (used to create the correct endpoint).
7. Select the Trigger Events you want to relay (these match Anedot Webhook Events).
8. Click **Create integration** to activate the connection.

You can update Action Pages, Team settings, and credentials at any time after setup.

## Available Trigger Events in Campaign Nucleus

You can choose from the following event categories:

### Commitment Events

* Commitment Created
* Commitment Failed to Process
* Commitment Updated

### Donation Events

* Donation ACH Returned
* Donation Chargeback
* Donation Chargeback Reversed
* Donation Completed
* Donation Partially Refunded
* Donation Refunded
* Donation Settled
* Donation Voided

### Submission Events

* Submission Created

## Data Relays

* Supports both financial and non-financial Action Pages.
* Custom fields are supported and follow the same format as Webhooks.
* Push Unsent (includes failed and successful donations) with a specified date range is supported across all Action Pages, regardless of type.

## Field Mapping

| Anedot Field                                                                                                                                                                                                              | Campaign Nucleus Field                              |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| `"donation_completed"`                                                                                                                                                                                                    | event                                               |
| email                                                                                                                                                                                                                     | email                                               |
| phone                                                                                                                                                                                                                     | phone                                               |
| title                                                                                                                                                                                                                     | title                                               |
| origin                                                                                                                                                                                                                    | origin                                              |
| suffix                                                                                                                                                                                                                    | suffix                                              |
| donation (object), includes: `{id}`; fees `{anedot, vendor}`; fund `{id}` `{name}` `{identifier}`; product `{name}` `{internal identifier}`; card `{type}` `{lastDigits}` `{donation_project}` `{credit_card_expiration}` | donation \[object, multiple values]                 |
| referrer                                                                                                                                                                                                                  | referrer                                            |
| frequency                                                                                                                                                                                                                 | frequency                                           |
| lastName                                                                                                                                                                                                                  | last\_name                                          |
| recurring                                                                                                                                                                                                                 | recurring                                           |
| created\_at                                                                                                                                                                                                               | created\_at                                         |
| firstName                                                                                                                                                                                                                 | first\_name                                         |
| ip\_address                                                                                                                                                                                                               | ip\_address                                         |
| net\_amount                                                                                                                                                                                                               | net\_amount                                         |
| occupation                                                                                                                                                                                                                | occupation                                          |
| updated\_at                                                                                                                                                                                                               | updated\_at                                         |
| accountId                                                                                                                                                                                                                 | account\_uid                                        |
| middleName                                                                                                                                                                                                                | middle\_name                                        |
| source\_code                                                                                                                                                                                                              | source\_code                                        |
| accountName                                                                                                                                                                                                               | account\_name                                       |
| address `{city}`                                                                                                                                                                                                          | address\_city                                       |
| eventAmount                                                                                                                                                                                                               | event\_amount                                       |
| 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                                  |
| donor\_profile\_id                                                                                                                                                                                                        | donor\_profile\_id                                  |
| referrerToForm                                                                                                                                                                                                            | referrer\_to\_form                                  |
| amount (×100)                                                                                                                                                                                                             | amount\_in\_dollars                                 |
| payment\_method\_id                                                                                                                                                                                                       | payment\_method\_id                                 |
| createdAt                                                                                                                                                                                                                 | created\_at\_iso8601                                |
| currentlyEmployed (TRUE/FALSE)                                                                                                                                                                                            | currently\_employed                                 |
| updatedAt                                                                                                                                                                                                                 | updated\_at\_iso8601                                |
| address `{postal_code}`                                                                                                                                                                                                   | address\_postal\_code                               |
| custom\_field\_responses \[object, includes: `{custom field name}` `{custom field response value}`]                                                                                                                       | custom\_field\_responses \[object, multiple values] |
| `"true"` or `"false"`                                                                                                                                                                                                     | is\_recurring\_commitment                           |
| communicationsConsentEmail                                                                                                                                                                                                | communications\_consent\_email                      |
| communicationsConsentPhone                                                                                                                                                                                                | communications\_consent\_phone                      |
| `"donation"` or `"lead"`                                                                                                                                                                                                  | \* page\_type                                       |

\* `page_type` is unique to Campaign Nucleus; it is not available on regular webhook integrations.

## Payload Data

Payloads sent to Campaign Nucleus follow the same structure as standard webhook payloads—the only difference is that they are directed to a specific Campaign Nucleus endpoint.

Below is an example of a `donation_completed` event. For additional examples, see the Webhooks documentation.

### Request Headers

```json
{
  "User-Agent": "Anedot-Hookshot/6f34e42",
  "X-Request-Id": "c18a9f11-2ca3-4874-aab7-dd7d98c4733e",
  "X-Integration-Id": "e4ac27de-f2f7-43c1-9745-a607f244a3f6",
  "X-Integration-Event": "donation_completed",
  "X-Request-Signature": "cecc8fa850543cc3af6a9a889d80794cf97f71666b36e4b89d5388f747760550"
}
```

### Request Body

```json
{
  "event": "donation_completed",
  "payload": {
    "email": "admin@anedot.com",
    "phone": "2252501301",
    "title": "",
    "origin": "hosted",
    "suffix": "",
    "donation": {
      "id": "d37323879577f06a79859",
      "fees": {
        "anedot_fees": {
          "amount": "5.31"
        },
        "vendor_fees": []
      },
      "fund": {
        "id": "75bb50a0-69f3-4f98-8f6b-ac67fc1b1764",
        "name": "General Fund",
        "identifier": "1001"
      },
      "products": [],
      "card_type": "master",
      "card_last_digits": "8888",
      "donation_project": "",
      "credit_card_expiration": "08/2028"
    },
    "referrer": "https://qa2.secure.anedot.com/anedot/e94ba599-b8e7-406d-9b48-ffd78eb65d2d",
    "frequency": "once",
    "last_name": "Dot",
    "recurring": "false",
    "created_at": "2023-05-02 15:30:02 UTC",
    "first_name": "Annie",
    "ip_address": "2600:1700:6323:c820:4cf4:bf3:bfc8:2cf4",
    "net_amount": "119.94",
    "occupation": "",
    "updated_at": "2023-05-02 15:30:02 UTC",
    "account_uid": "a7229820277fe1a0aeaec",
    "middle_name": "",
    "source_code": "",
    "account_name": "Anedot",
    "address_city": "New Orleans",
    "event_amount": "125.25",
    "employer_name": "",
    "submission_id": "71f73d91-d3c2-4d41-83ea-6675d176249e",
    "action_page_id": "b4ffb2a2-1cc9-4152-86c1-3c8dcc4c1b63",
    "address_line_1": "1340 Poydras St",
    "address_line_2": "",
    "address_region": "LA",
    "commitment_uid": "",
    "address_country": "US",
    "action_page_name": "Campaign Nucleus",
    "donor_profile_id": "848f9bbf-c553-4a6e-bf0c-7ad25800bbf0",
    "referrer_to_form": "https://qa2.anedot.com/",
    "amount_in_dollars": "125.25",
    "payment_method_id": "9b3efb25-3944-4b67-a767-f2b813f6c0f7",
    "created_at_iso8601": "2023-05-02T15:30:02Z",
    "currently_employed": "true",
    "updated_at_iso8601": "2023-05-02T15:30:02Z",
    "address_postal_code": "70508",
    "custom_field_responses": {
      "would_you_like_to_subscribe_to_our_newsletter?": "yes"
    },
    "is_recurring_commitment": "false",
    "communications_consent_email": "false",
    "communications_consent_phone": "false"
  },
  "page_type": "donation"
}
```

### Donation Completed

```json
{
  "event": "donation_completed",
  "payload": {
    "submission_id": "f42e7e4f-c93d-4956-a5a2-efab4eef4558",
    "donation": {
      "id": "d467208a8376024eacd71",
      "donation_project": "",
      "products": [
        {
          "internal_identifier": "dl332",
          "name": "Slipper"
        }
      ],
      "fees": {
        "anedot_fees": {
          "amount": "1.30"
        },
        "vendor_fees": []
      }
    },
    "origin": "hosted",
    "commitment_uid": "e1c696e4-4b7d-443b-a69d-1eb1f7027e29",
    "event_amount": "25.00",
    "amount_in_dollars": "25.0",
    "net_amount": "23.70",
    "frequency": "once",
    "action_page_id": "e8f8f185-9a94-4fec-8c9c-974065b4db75",
    "action_page_name": "New Donation Page",
    "donor_profile_id": "",
    "payment_method_id": "9d19c94c-8249-4a26-b1aa-299a423bc852",
    "created_at": "2020-12-11 22:06:25 UTC",
    "updated_at": "2020-12-11 22:06:26 UTC",
    "address_line_1": "143 S 3rd St",
    "address_line_2": "",
    "address_city": "Philadelphia",
    "address_region": "PA",
    "address_postal_code": "19106",
    "address_country": "US",
    "email": "susan@example.com",
    "phone": "5552221212",
    "first_name": "Susan",
    "last_name": "Anthony",
    "middle_name": "",
    "occupation": "",
    "employer_name": "",
    "title": "",
    "suffix": "",
    "ip_address": "10.0.0.1",
    "recurring": "true",
    "is_recurring_commitment": "true",
    "referrer": "https://secure.anedot.com/example/slug",
    "referrer_to_form": "",
    "custom_field_responses": {
      "turn_up": "Option One"
    },
    "communications_consent_email": "",
    "communications_consent_phone": "",
    "currently_employed": ""
  }
}
```

### Donation Voided

```json
{
  "event": "donation_voided",
  "payload": {
    "submission_id": "f42e7e4f-c93d-4956-a5a2-efab4eef4558",
    "donation": {
      "id": "d467208a8376024eacd71",
      "donation_project": "",
      "products": [
        {
          "internal_identifier": "dl332",
          "name": "Slipper"
        }
      ],
      "fees": {
        "anedot_fees": {
          "amount": "-1.30"
        },
        "vendor_fees": []
      }
    },
    "origin": "hosted",
    "commitment_uid": "e1c696e4-4b7d-443b-a69d-1eb1f7027e29",
    "event_amount": "-25.00",
    "amount_in_dollars": "25.0",
    "net_amount": "-23.70",
    "frequency": "once",
    "action_page_id": "e8f8f185-9a94-4fec-8c9c-974065b4db75",
    "action_page_name": "New Donation Page",
    "donor_profile_id": "",
    "payment_method_id": "9d19c94c-8249-4a26-b1aa-299a423bc852",
    "created_at": "2020-12-11 22:06:25 UTC",
    "updated_at": "2020-12-11 22:06:26 UTC",
    "address_line_1": "143 S 3rd St",
    "address_line_2": "",
    "address_city": "Philadelphia",
    "address_region": "PA",
    "address_postal_code": "19106",
    "address_country": "US",
    "email": "susan@example.com",
    "phone": "5552221212",
    "first_name": "Susan",
    "last_name": "Anthony",
    "middle_name": "",
    "occupation": "",
    "employer_name": "",
    "title": "",
    "suffix": "",
    "ip_address": "2600:100c:b01f:815d:456d:5903:4547:f517",
    "referrer": "https://secure.anedot.com/mje-test/slug",
    "referrer_to_form": "",
    "custom_field_responses": {
      "turn_up": "Option One"
    },
    "communications_consent_email": "",
    "communications_consent_phone": "",
    "currently_employed": ""
  }
}
```

### Commitment Failed to Process

```json
{
  "event": "commitment_failed_to_process",
  "payload": {
    "id": "c89cc126-853d-42ec-85dd-d56834722413",
    "total_amount_in_dollars": "10.3",
    "fund_allocations": [
      {
        "amount_in_dollars": "10.3",
        "fund": {
          "id": "3bfe8049-aa5a-4db1-840c-c1ede521dd5c",
          "identifier": "95263a32-4dc8-4e41-8ea1-174d527472f9",
          "name": "General Fund"
        }
      }
    ],
    "next_capture_on": "2021-04-03 12:55:10 UTC",
    "cancelled_on": "",
    "expired_on": "",
    "failed_on": "",
    "paused_on": "",
    "token": "1500139abd7729e85079362ae4a8c768cd5d0b70",
    "frequency": "monthly",
    "action_page_id": "b9cb82d0-2e19-4ff1-9cf1-3a8a4b8f02ce",
    "action_page_name": "Commitment Page",
    "donor_profile_id": "",
    "payment_method_id": "952219f9-b345-46c2-9e88-c362e4ba626f",
    "submission_id": "3af17864-9db0-4083-b18b-d88d043266dc",
    "created_at": "2021-01-03 12:55:10 UTC",
    "updated_at": "2021-03-17 16:44:50 UTC",
    "address_line_1": "123 Pelinor Way",
    "address_line_2": "",
    "address_city": "Pelinor",
    "address_region": "TX",
    "address_postal_code": "76545",
    "address_country": "US",
    "email": "gandalf@example.com",
    "phone": "8765456789",
    "first_name": "Gandalf",
    "last_name": "Thegrey",
    "middle_name": "",
    "occupation": "retired",
    "employer_name": "",
    "title": "",
    "suffix": "",
    "ip_address": "127.0.0.1",
    "referrer": "http://secure.anedot.me:3000/washington/b9cb82d0-2e19-4ff1-9cf1-3a8a4b8f02ce",
    "referrer_to_form": "",
    "communications_consent_email": "",
    "communications_consent_phone": "",
    "currently_employed": "false",
    "payment_status_message": "Declined",
    "changed_attributes": {},
    "cancellation_reason": "",
    "whodunnit": "",
    "status": "active"
  }
}
```

### Commitment Updated with Cancellation Reason

```json
{
  "event": "commitment_updated",
  "payload": {
    "id": "c89cc126-853d-42ec-85dd-d56834722413",
    "total_amount_in_dollars": "10.3",
    "fund_allocations": [
      {
        "amount_in_dollars": "10.3",
        "fund": {
          "id": "3bfe8049-aa5a-4db1-840c-c1ede521dd5c",
          "identifier": "95263a32-4dc8-4e41-8ea1-174d527472f9",
          "name": "General Fund"
        }
      }
    ],
    "next_capture_on": "2021-04-03 12:55:10 UTC",
    "cancelled_on": "2021-03-17 00:00:00 UTC",
    "expired_on": "",
    "failed_on": "",
    "paused_on": "",
    "token": "1500139abd7729e85079362ae4a8c768cd5d0b70",
    "frequency": "monthly",
    "action_page_id": "b9cb82d0-2e19-4ff1-9cf1-3a8a4b8f02ce",
    "action_page_name": "Commitment Page",
    "donor_profile_id": "",
    "payment_method_id": "952219f9-b345-46c2-9e88-c362e4ba626f",
    "submission_id": "3af17864-9db0-4083-b18b-d88d043266dc",
    "created_at": "2021-01-03 12:55:10 UTC",
    "updated_at": "2021-03-17 16:52:48 UTC",
    "address_line_1": "123 Pelinor Way",
    "address_line_2": "",
    "address_city": "Pelinor",
    "address_region": "TX",
    "address_postal_code": "76545",
    "address_country": "US",
    "email": "gandalf@example.com",
    "phone": "8765456789",
    "first_name": "Gandalf",
    "last_name": "Thegrey",
    "middle_name": "",
    "occupation": "retired",
    "employer_name": "",
    "title": "",
    "suffix": "",
    "ip_address": "127.0.0.1",
    "referrer": "http://secure.anedot.me:3000/washington/b9cb82d0-2e19-4ff1-9cf1-3a8a4b8f02ce",
    "referrer_to_form": "",
    "communications_consent_email": "",
    "communications_consent_phone": "",
    "currently_employed": "false",
    "payment_status_message": "",
    "changed_attributes": {
      "cancelled_on": [
        null,
        "2021-03-17 00:00:00 UTC"
      ],
      "updated_at": [
        "2021-03-17 16:44:50 UTC",
        "2021-03-17 16:52:48 UTC"
      ]
    },
    "cancellation_reason": "failure",
    "whodunnit": "",
    "status": "inactive"
  }
}
```

### Submission Created

```json
{
  "event": "submission_created",
  "payload": {
    "account_name": "Washington for President",
    "account_uid": "ad603181ae28962ff2611",
    "action_page_id": "991bd598-f047-4719-ace6-f6ec46123e4b",
    "action_page_name": "Donation Page 3",
    "address_line_1": "123 Somewhere Way",
    "address_line_2": "",
    "address_city": "Aneware",
    "address_region": "TX",
    "address_postal_code": "75409",
    "address_country": "US",
    "card_type": "visa",
    "card_last_digits": "4242",
    "card_expiration": "02/2023",
    "communications_consent_email": "",
    "communications_consent_phone": "",
    "created_at": "2022-03-31 15:38:56 UTC",
    "currently_employed": "",
    "custom_field_responses": {
      "appeal_id": "1",
      "batch_prefix": "ANE"
    },
    "donation_amount": "$33.10",
    "donations": [
      {
        "id": "d412f04fddbe6b4dbb456",
        "fees": {
          "anedot_fees": {
            "amount": "1.09"
          },
          "vendor_fees": []
        },
        "fees_paid_by_donor": "false",
        "fund": {
          "id": "3bfe8049-aa5a-4db1-840c-c1ede521dd5c",
          "identifier": "1412",
          "name": "General Fund"
        },
        "gross_amount": "19.86",
        "net_amount": "18.77",
        "product": {}
      },
      {
        "id": "db40ee7bd45a80ab1347e",
        "fees": {
          "anedot_fees": {
            "amount": "0.83"
          },
          "vendor_fees": []
        },
        "fees_paid_by_donor": "false",
        "fund": {
          "id": "b39b768f-3874-46cd-be10-042a18d2b174",
          "identifier": "1412",
          "name": "Multifunded"
        },
        "gross_amount": "13.24",
        "net_amount": "12.41",
        "product": {}
      }
    ],
    "donor_profile_id": "",
    "email": "gandy@example.com",
    "employer_name": "",
    "first_name": "Gandy",
    "id": "f0bb1f8d-cebc-4f00-921a-46006306c6ee",
    "ip_address": "127.0.0.1",
    "last_name": "Grey",
    "middle_name": "",
    "occupation": "",
    "payment_method_type": "credit_card",
    "phone": "9036341111",
    "product_code": "",
    "product_id": "",
    "product_name": "",
    "product_value": "",
    "referrer": "http://secure.anedot.me:3000/washington/991bd598-f047-4719-ace6-f6ec46123e4b",
    "referrer_to_form": "http://secure.anedot.me:3000/washington/991bd598-f047-4719-ace6-f6ec46123e4b",
    "source_code": "",
    "suffix": "",
    "title": "",
    "updated_at": "2022-03-31 15:38:57 UTC",
    "utm_campaign": "",
    "utm_content": "",
    "utm_medium": "",
    "utm_source": "",
    "utm_term": ""
  }
}
```

### Response Body (Success)

```json
{}
```

### Response Status (Success)

```
200
```


---

# 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/crm-donor-management/campaign-nucleus.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.
