> 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/email-marketing-communication/mapp-empower.md).

# Mapp Empower (Paramount, BlueHornet, Vervemail)

Connect Anedot to Mapp Empower (Paramount, BlueHornet, Vervemail) to sync donation and lead contacts for email or messaging campaigns and lists.

Connect Anedot to Mapp Empower (formerly BlueHornet and Vervemail) to automatically sync donation and lead data, configure API credentials and static segment IDs, and manage subscriber lists through XML-based data relays.

Mapp Empower is an email marketing platform designed for consulting firms and digital agencies. Anedot integrates with Mapp Empower to send donation and lead data directly into your Empower account, allowing new donors to be added as subscribers and optionally assigned to static segment lists.

## Mapp Empower Configuration

Before connecting Anedot, complete the following setup in your **Mapp Empower / BlueHornet / Paramount** account:

1. **Create an API Key**
   * Ensure it has permission for the `legacy.manage_subscriber` method.
   * All other permissions can be disabled.
2. **Allow IP Addresses** Add the following IP addresses in your Mapp settings:

```
35.166.21.122  52.13.182.211  52.34.142.108  52.34.61.183  52.35.175.58
```

3. **Locate and Save API Credentials**
   * After generating your API Key, copy both the **API Key** and **Shared Secret**.
   * These will be entered into Anedot later.
4. *If no Segment ID is specified, donors will be added as contacts but not assigned to a specific list.* **Find Static Segment ID(s)** *(Optional)*
   * Navigate to **Segmentation → Static Segments → Manage Static Segments**.
   * Locate the Segment ID(s) you want donors to be subscribed to.
   * You may add multiple segment IDs (comma-separated) during setup in Anedot.

## Connecting Anedot to Mapp Empower

1. In your Anedot account, go to **Settings → Integrations → Directory**.
2. Click **+ New Connection** and select **Mapp Empower**.
3. Choose the **Action Pages** you want to sync *(default is all)*.
   * To exclude pages, enter their Action Page IDs as a comma-separated list.
4. *(Optional)* Limit the sync to a specific **Team**.
5. Enter your **Mapp Empower API Key** and **Shared Secret**.
6. *(Optional)* Enter one or more **Static Segment IDs** (comma-separated) to assign donors to lists.
7. Click **Save** to complete the integration.

> *You can modify synced pages, team scope, and credentials at any time.*

## Data Relays

* Relays are sent for both **financial** and **non-financial** Action Pages.
* *A JSON-formatted sample is available under **Developer Notes**.* Data is sent in **XML format**, so request body content will **not appear** in the Anedot Integrations Request View.
* **Push Unsent Support:**
  * Allows failed or historical donations to be re-sent using a date range.
  * After **5 failed relay attempts**, the integration is marked **inactive** and stops attempting relays.

## Field Mapping

| Anedot Field                    | MAPP Empower Property |
| ------------------------------- | --------------------- |
| “legacy.manage\_subscriber”     | methodName            |
| email                           | email                 |
| firstName                       | firstname             |
| lastName                        | lastname              |
| address {line1}                 | address               |
| address {city}                  | city                  |
| address {region}                | state                 |
| address {postal\_code}          | zip                   |
| address {country}               | country               |
| phone                           | phone\_hm             |
| segment\_id (from Mapp Empower) | grp                   |
| \*                              | custval000000\*       |

*\*custval data corresponds to **last\_donation\_amount** and **last\_donation\_date**, which are stored in MappEmpower as either the last historical donation (if lead) or the current one (if donation).*

* *The digits appended to “custval” are the MappEmpower ids for those fields.*

**How custval is pulled:** In our first donation relay (after the connection is set up), we query the MappEmpower API to retrieve or create IDs for `last_donation_amount` and `last_donation_date`. These IDs are then used to properly attribute each property in MappEmpower.

* *Each ID corresponds to a unique custom field in MappEmpower, of which an account has only one each.*
* *Going forward, these IDs are stored in the integration, rather than the specific donation data (amount and date).*

## Payload Data

### Request Headers

```
{ }
```

### Request Body

*Sent in XML - shows no text in Integrations Request body:*

```
{ }
```

### Converted Request Body

*Here is the request body converted from XML to JSON:*

```json
{“data”=><br></br>      {“methodCall”=><br></br>      {“methodName”=>“legacy.manage_subscriber”,<br></br>         “email”=>"annie@anedot.com",<br></br>         “firstname”=>“Annie”,<br></br>         “lastname”=>“Dot”,<br></br>         “address”=>“123 Test Road”,<br></br>         “city”=>“New Orleans”,<br></br>         “state”=>“LA”,<br></br>         “postal_code”=>“70112”,<br></br>         “country”=>“US”,<br></br>         “phone_hm”=>“2015551234”,<br></br>         “grp”=>“765432”,<br></br>         “custval123456”=>“200.00”,<br></br>         “custval123455”=>“2021-02-11”}
```

### Response Body *(Success)*

```json
{    "methodResponse": {      "item": {        "methodName": "legacy.manage_subscriber",        "responseNum": "1",        "responseCode": "200",        "responseData": `{`          "status": "2",          "message": "User has been updated"        }      }    }  }
```

### Response Body *(Failure)*

```
"<html>\r\n<head><title>502 Bad Gateway</title></head>\r\n<body>\r\n<center><h1>502 Bad Gateway</h1></center>\r\n</body>\r\n</html>\r\n"
```

### Response Body *(Error)*

```json
{    "methodResponse": {      "item": {        "error": "1",        "responseNum": "1",        "responseData": `{`          "responseCode": "445"        },        "responseText": "Could not authenticate",        "totalRequests": "1",        "totalCompleted": "0"      }    }  }
```

### Response Status *(Success)*

```
200
```

### Response Status *(Failure)*

```
502
```

### Response Status *(Error)*

```
null
```


---

# 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/email-marketing-communication/mapp-empower.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.
