> 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/partyline.md).

# Partyline

Connect Anedot to Partyline to relay donation data for political compliance and campaign reporting from Settings → Integrations → Directory.

Set up the Anedot and Partyline CRM integration to automatically sync financial donation data. Step-by-step guide to connecting Action Pages, configuring API credentials, and using data relays.

**Partyline** is a CRM platform widely used by political organizations to manage supporter and donor data.

Anedot supports direct integration with Partyline by sending **financial page data** through `donation_completed` webhook events. Please note that **non-financial page data** and **custom field data** are **not supported** at this time.

## Connecting Anedot to Partyline

1. Go to **Settings → Integrations → Directory** in your Anedot account.
2. Click **+ New Connection** in the top right.
3. Choose **Partyline** from the Directory.
4. Select the Action Pages to sync *(default is all pages)*.
   * To exclude pages, enter their IDs *(comma-separated)*.
   * *Optionally*, limit the sync to a specific Team
5. **Enter your Partyline API Key and Client Secret.**
6. Click **Save** to complete the setup.

*You can update pages, Teams, or credentials anytime.*

## Data Relays

* **Supported Relays**: Only **financial Action Pages** are supported, and data is sent via the `donation_completed` webhook.
* **Data:** The integration delivers data to Partyline’s Anedot API endpoint: `https://platform.gulfpartyline.com/api/anedot`
* **Limitations**:
  * **Custom field data is not relayed**.
  * **Non-financial pages are not supported**.
  * **Conduit Transactions are not relayed.**
* **Relay Tools**: Use the **Push Unsent** feature to resend failed or unsent donations by specifying a **date range**. This applies to all financial Action Pages.

## Field Mapping

### Relay Fields

The Anedot Fields match the Submission's Raw Data and the Partyline Fields match the Request Body relay.

| Anedot Field                                                            | Partyline Field                                             |
| ----------------------------------------------------------------------- | ----------------------------------------------------------- |
| “donation\_completed”                                                   | event                                                       |
| (Donation) id                                                           | uid                                                         |
| createdAt                                                               | date                                                        |
| (Donation object: includes anedot & vendor fee amounts)                 | fees (multiple fields)                                      |
| “\[firstName] \[lastName]”                                              | name                                                        |
| email                                                                   | email                                                       |
| phone                                                                   | phone                                                       |
| title                                                                   | title                                                       |
| amount (x100)                                                           | amount                                                      |
| origin (Donation)                                                       | origin                                                      |
| status (Donation)                                                       | status                                                      |
| suffix                                                                  | suffix                                                      |
| address (postalCode) (city) (region) (line1) (country) (line2)          | address (zip) (city) (state) (street) (country) (street\_2) |
| comments (Donation)                                                     | comments                                                    |
| employerName                                                            | employer                                                    |
| lastName                                                                | last\_name                                                  |
| “true” or “false”                                                       | recurring                                                   |
| createdAt                                                               | created\_at                                                 |
| “individual” or “organization”                                          | donor\_type                                                 |
| firstName                                                               | first\_name                                                 |
| occupation                                                              | occupation                                                  |
| \* (optional field)                                                     | referred\_by                                                |
| actionPageId                                                            | campaign\_uid                                               |
| totalAmount (x100)                                                      | event\_amount                                               |
| phone                                                                   | mobile\_phone                                               |
| organization                                                            | organization                                                |
| actionPageName                                                          | campaign\_name                                              |
| middleName (first letter only)                                          | middle\_initial                                             |
| id of the first (originating) donation on the commitment (if recurring) | originating\_uid                                            |
| actionPageName                                                          | campaign\_identifier                                        |
| “di”                                                                    | api\_method                                                 |

\*referred\_by is a numeric value that maps as follows:

| Numeric value | Partyline referred\_by Value |
| ------------- | ---------------------------- |
| 0             | "Magazine"                   |
| 1             | "TV"                         |
| 2             | "Newspaper"                  |
| 3             | "Radio"                      |
| 4             | "Facebook"                   |
| 5             | "Twitter"                    |
| 6             | "Online Ad"                  |
| 7             | "Word of mouth"              |
| 8             | "Other"                      |

## Payload Data

### Request Headers

```
{}
```

### Request Body

```json
{"event":"donation_completed","payload":{"uid":"dbd0ce1bb5544cd767ddd","date":"2023-05-11T14:37:13.580Z","fees":{"anedot_fees":{"amount":"2.30"},"vendor_fees":[]},"name":"Annie Dot","email":"admin@anedot.com","phone":"2255011234","title":null,"amount":"$50.00","origin":"hosted","status":"completed","suffix":null,"address":{"zip":"70503","city":"Lafayette","state":"LA","street":"123 Test Road","country":"US","street_2":null},"comments":null,"employer":null,"last_name":"Dot","recurring":false,"created_at":"2023-05-11T14:37:13.548Z","donor_type":"individual","first_name":"Annie","occupation":null,"referred_by":null,"campaign_uid":"00c7b970-c269-4062-979e-b7aa939995fe","event_amount":"$50.00","mobile_phone":null,"organization":null,"campaign_name":"Feed the Children - March Gala","middle_initial":null,"originating_uid":null,"campaign_identifier":"Feed the Children - March Gala"},"api_method":"di"}
```

### Response Body *(Success)*

```
"Anedot Transaction Imported Successfully"
```

### Response Body *(Failure)*

```
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"> \n<html xmlns=\"http://www.w3.org/1999/xhtml\"> \n<head> \n<title>IIS 10.0 Detailed Error - 404.0 - Not Found</title> \n<style type=\"text/css\"> \n<!-- \nbody{margin:0;font-size:.7em;font-family:Verdana,Arial,Helvetica,sans-serif;} \ncode{margin:0;color:#006600;font-size:1.1em;font-weight:bold;} \n.config_source code{font-size:.8em;color:#000000;} \npre{margin:0;font-size:1.4em;word-wrap:break-word;} \nul,ol{margin:10px 0 10px 5px;} \nul.first,ol.first{margin-top:5px;} \nfieldset{padding:0 15px 10px 15px;word-break:break-all;} \n.summary-container fieldset{padding-bottom:5px;margin-top:4px;} \nlegend.no-expand-all{padding:2px 15px 4px 10px;margin:0 0 0 -12px;} \nlegend{color:#333333;;margin:4px 0 8px -12px;_margin-top:0px; \nfont-weight:bold;font-size:1em;} \na:link,a:visited{color:#007EFF;font-weight:bold;} \na:hover{text-decoration:none;} \nh1{font-size:2.4em;margin:0;color:#FFF;} \nh2{font-size:1.7em;margin:0;color:#CC0000;} \nh3{font-size:1.4em;margin:10px 0 0 0;color:#CC0000;} \nh4{font-size:1.2em;margin:10px 0 5px 0; \n}#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:\"trebuchet MS\",Verdana,sans-serif; \n color:#FFF;background-color:#5C87B2; \n}#content{margin:0 0 0 2%;position:relative;} \n.summary-container,.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;} \n.content-container p{margin:0 0 10px 0; \n}#details-left{width:35%;float:left;margin-right:2%; \n}#details-right{width:63%;float:left;overflow:hidden; \n}#server_version{width:96%;_height:1px;min-height:1px;margin:0 0 5px 0;padding:11px 2% 8px 2%;color:#FFFFFF; \n background-color:#5A7FA5;border-bottom:1px solid #C1CFDD;border-top:1px solid #4A6C8E;font-weight:normal; \n font-size:1em;color:#FFF;text-align:right; \n}#server_version p{margin:5px 0;} \ntable{margin:4px 0 4px 0;width:100%;border:none;} \ntd,th{vertical-align:top;padding:3px 0;text-align:left;font-weight:normal;border:none;} \nth{width:30%;text-align:right;padding-right:2%;font-weight:bold;} \nthead th{background-color:#ebebeb;width:25%; \n}#details-right th{width:20%;} \ntable tr.alt td,table tr.alt th{} \n.highlight-code{color:#CC0000;font-weight:bold;font-style:italic;} \n.clear{clear:both;} \n.preferred{padding:0 5px 2px 5px;font-weight:normal;background:#006633;color:#FFF;font-size:.8em;} \n--> \n</style> \n \n</head> \n<body> \n<div id=\"content\"> \n<div class=\"content-container\"> \n  <h3>HTTP Error 404.0 - Not Found</h3> \n  <h4>The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.</h4> \n</div> \n<div class=\"content-container\"> \n <fieldset><h4>Most likely causes:</h4> \n  <ul> \t<li>The directory or file specified does not exist on the Web server.</li> \t<li>The URL contains a typographical error.</li> \t<li>A custom filter or module, such as URLScan, restricts access to the file.</li> </ul> \n </fieldset> \n</div> \n<div class=\"content-container\"> \n <fieldset><h4>Things you can try:</h4> \n  <ul> \t<li>Create the content on the Web server.</li> \t<li>Review the browser URL.</li> \t<li>Create a tracing rule to track failed requests for this HTTP status code and see which module is calling SetStatus. For more information about creating a tracing rule for failed requests, click <a href=\"http://go.microsoft.com/fwlink/?LinkID=66439\">here</a>. </li> </ul> \n </fieldset> \n</div> \n \n<div class=\"content-container\"> \n <fieldset><h4>Detailed Error Information:</h4> \n  <div id=\"details-left\"> \n   <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"> \n    <tr class=\"alt\"><th>Module</th><td>&nbsp;&nbsp;&nbsp;IIS Web Core</td></tr> \n    <tr><th>Notification</th><td>&nbsp;&nbsp;&nbsp;MapRequestHandler</td></tr> \n    <tr class=\"alt\"><th>Handler</th><td>&nbsp;&nbsp;&nbsp;ASPClassic</td></tr> \n    <tr><th>Error Code</th><td>&nbsp;&nbsp;&nbsp;0x80070002</td></tr> \n     \n   </table> \n  </div> \n  <div id=\"details-right\"> \n   <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"> \n    <tr class=\"alt\"><th>Requested URL</th><td>&nbsp;&nbsp;&nbsp;https://platform.gulfpartyline.com:443/core/webhooks/api/anedot/adf/sdf.asp</td></tr> \n    <tr><th>Physical Path</th><td>&nbsp;&nbsp;&nbsp;D:\\PLATFORM\\core\\webhooks\\api\\anedot\\adf\\sdf.asp</td></tr> \n    <tr class=\"alt\"><th>Logon Method</th><td>&nbsp;&nbsp;&nbsp;Anonymous</td></tr> \n    <tr><th>Logon User</th><td>&nbsp;&nbsp;&nbsp;Anonymous</td></tr> \n     \n   </table> \n   <div class=\"clear\"></div> \n  </div> \n </fieldset> \n</div> \n \n<div class=\"content-container\"> \n <fieldset><h4>More Information:</h4> \n  This error means that the file or directory does not exist on the server. Create the file or directory and try the request again. \n  <p><a href=\"https://go.microsoft.com/fwlink/?LinkID=62293&amp;IIS70Error=404,0,0x80070002,17763\">View more information &raquo;</a></p> \n   \n </fieldset> \n</div> \n</div> \n</body> \n</html> \n"
```

### Response Status *(Success)*

```
200
```

### Response Status *(Failure)*

```
404
```


---

# 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/partyline.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.
