---
title: Salesforce NPSP
description: Learn how to integrate Anedot with Salesforce Nonprofit Success Pack (NPSP), including installation, custom field mapping, data relays, troubleshooting, and best practices for nonprofit organizations.
---

[Skip to content](https://help.anedot.com/knowledge/salesforce-npsp#main-content)

[![anedot-logo](https://help.anedot.com/hubfs/anedot-logo.svg)](https://help.anedot.com/knowledge?hsLang=en)

Open main navigation

Close main navigation

- [Get Support ⤴](https://www.anedot.com/getsupport)

[Get Support ⤴](https://www.anedot.com/getsupport)

 Here to help 👋

- There are no suggestions because the search field is empty.

1. [Public Help Center](https://help.anedot.com/knowledge?hsLang=en)
2. [Integrations](https://help.anedot.com/knowledge/integrations?hsLang=en)
3. [CRM & Donor Management Systems](https://help.anedot.com/knowledge/integrations?hsLang=en#crm-donor-management-systems)

# Salesforce NPSP

## A step-by-step guide to setting up, configuring, and troubleshooting the Salesforce NPSP integration with Anedot for seamless nonprofit fundraising data management.

Salesforce is a Customer Relationship Management (CRM) platform used by organizations to manage supporter relationships, sales, marketing, and communications.

Connecting Anedot (or other third-party platforms) to Salesforce involves a thorough setup process, including configuration, customization, and testing to ensure reliable data flow and performance.

To avoid affecting live data during setup, Anedot requires all integrations to be tested in a Salesforce and Anedot **Sandbox environment** first.

**Getting Started**

1. [**Contact our Support team**](https://www.anedot.com/getsupport) to request an Anedot Sandbox account.
2. **Test and confirm** your configuration in the Sandbox.
3. Once successful, we’ll enable Salesforce integration for your live account.

*Before beginning, ensure your Salesforce user profile has the **Download AppExchange Packages** permission enabled. This is required to install necessary components.*

---

### Table of Contents

- Setup Instructions 
    - [Install the NPSP Package](https://help.anedot.com/knowledge/salesforce-npsp#install-npsp)
    - [Install the Anedot Package](https://help.anedot.com/knowledge/salesforce-npsp#install-a-pack)
    - [Set Up the Anedot Package in Salesforce](https://help.anedot.com/knowledge/salesforce-npsp#set-up-the-a-pack) 
          - [Anedot Settings](https://help.anedot.com/knowledge/salesforce-npsp#anedot-settings)
    - [Connect Anedot to Salesforce](https://help.anedot.com/knowledge/salesforce-npsp#connect-anedot-to-sf)
- [Data Relays](https://help.anedot.com/knowledge/salesforce-npsp#data-relays)
- [Custom Templates](https://help.anedot.com/knowledge/salesforce-npsp#custom-templates)
- [Anedot Mapping and Custom Metadata](https://help.anedot.com/knowledge/salesforce-npsp#anedot-mapping) 
    - [Create Custom Metadata in Salesforce](https://help.anedot.com/knowledge/salesforce-npsp#create-custom)
    - [Set Up Anedot Mapping](https://help.anedot.com/knowledge/salesforce-npsp#set-up-anedot-mapping)
- [Field Mapping](https://help.anedot.com/knowledge/salesforce-npsp#field-mapping)
- [Default Anedot Fields](https://help.anedot.com/knowledge/salesforce-npsp#default-anedot-fields)
- [Payload Examples](https://help.anedot.com/knowledge/salesforce-npsp#payload-examples)
- [Troubleshooting](https://help.anedot.com/knowledge/salesforce-npsp#troubleshooting)

---

### Install the NPSP Package

To begin, you’ll need to install the **Nonprofit Success Pack (NPSP)** in your Salesforce account.

> ***Note:** If NPSP is already installed, you can skip this step.*

#### **Steps to Install NPSP:**

1. Log in to your Salesforce account and go to the **AppExchange**.
2. Search for **Nonprofit Success Pack**.
3. Click **Get It Now** on the package listing.
4. Log in to the **AppExchange** using your Salesforce credentials.
5. Choose where to install the package:
   
     - **Install in Production** or
     - **Install in Sandbox**
6. Select the users for whom you want to install NPSP.
7. Click **Install**.
8. If prompted, approve third-party access by checking **Yes, grant access to these third-party websites**, then click **Continue**.
9. The installation will start. You’ll receive an **email confirmation** once it’s complete.

After receiving confirmation that the NPSP package is installed, you can proceed to install the **Anedot Package**.

---

### Install the Anedot Package

To install the **Anedot Package** in Salesforce, follow these steps:

1. Log in using your Salesforce credentials.
2. Add the following to the end of your URL: `/packaging/installPackage.apexp?p0=04t8Y000000ktYT&isdtp=p1`  
   *Example URL:*  
   `https://anedot.lightning.force.com/packaging/installPackage.apexp?p0=04t8Y000000ktYT&isdtp=p1`
3. You’ll be redirected to the **Package Installation Details** page.
4. **Review** the package components.
5. When prompted, choose **Install for All Users**.
6. Click **Install**.
7. If asked to approve third-party access, check  
   **Yes, grant access to these third-party websites**, then click **Continue**.
   
   > ***Note:** This grants access to the Salesforce APEX API.*
8. Wait for the installation to complete *(this may take a few minutes)*.
9. You’ll receive an **email confirmation** from Salesforce once installation is successful.

After installation, you can proceed to configure the Anedot Package in Salesforce.

---

### Set Up the Anedot Package in Salesforce

To configure the Anedot Package in Salesforce, follow these steps:

1. Open the **App Launcher** in Salesforce *(look for the grid icon below your organization’s logo)*.
2. Select **Anedot** from the available apps.
3. Go to the **Anedot Settings** tab.
4. In the top-right corner, click **New** to create a new Anedot Settings record.
5. Configure your default settings.*These may vary based on your organization’s Salesforce setup.* Make sure to define your **Opportunity Stage** defaults.
6. Click **Create** once your settings are in place.
7. On the Anedot Settings screen, copy the **Webhook URL**.*This subdomain is required to connect Anedot to Salesforce. Refer to Step 6 in the next section for use.*

You’re now ready to return to Anedot and complete the integration with your Salesforce account.

---

#### Anedot Settings

The chart is a list of the **Anedot Settings** we currently provide:

| **Anedot Setting Field** | **Options** | **Notes** |
| --- | --- | --- |
| Create GAU Allocation Records | Checkbox(default: `checked` ) | When enabled, creates GAU (General Account Unit) Allocation Records. |
| Default Campaign Member Status\* | Dropdown (default: `Planned` ) | Status Campaign Members (page submitters) default to. |
| Donation Amount Field | Dropdown (default: `Total Donation Amount` ) | Default amount used to track donations. |
| Integration Error Email Address | text input for email (default: `Salesforce admin email` ). | Email that receives notices of errors with the integration. |
| Opportunity Closed-Won Stage\* | Dropdown (default: `Closed Won` ) | Default opportunity stage for successfully relayed submissions. |
| Opportunity Open Stage\* | Dropdown (default: `Prospecting` ) | Stage open opportunities (e.g. future opportunities for commitments) default to. |
| Update Contact Info from Anedot | Checkbox(default: `checked` ) | Update existing contacts with Anedot data (based on email matching). |
| Default Campaign\* | Campaign search field (default: `none` ) | Relayed submissions (opportunities, contacts, etc) are linked to a default campaign instead of Action Page specific campaigns. |
| Default GAU\* | General Account Units (GAU) search field (default: `none` ) | Relayed donations are always linked to the same GAU (fund) instead of the Anedot/relayed fund. |
| Opportunity Closed-Lost Stage\* | Closed Lost | Default opportunity stage for lost opportunities (used for future opportunities linked to canceled commitments). |
| Single Donation Record Type | Dropdown (default: `NPSP Default` ) | Default record type for new relays. |
| URL for webhook | Instance-specific | Instance-specific URL, used for the `Salesforce URL` when configuring the Salesforce integration in Anedot. |
| Source Object | Dropdown (default: `None` ) | Salesforce application we are mapping objects for (options - NPSP, Salesforce). For customers using NPSP, they should select `NPSP` ; for those using Salesforce CRM, they should use `Salesforce` |

*\* The instructions above are based on a standard, uncustomized NPSP (Nonprofit Success Pack) instance. Certain object-specific settings—such as **Campaign Member Status** or **Opportunity Stage**—may differ depending on how your Salesforce environment has been customized.*

#### *By default, Anedot maps to standard NPSP/Salesforce fields (e.g., `status`, `stage`) when those fields are available. If your organization uses custom values or alternative configurations, it is your responsibility to update and map those settings accordingly to ensure proper data handling.*

---

### Connect Anedot to Salesforce

Follow the steps below to link your Anedot fundraising account with Salesforce:

#### **1. Set Up the Integration in Anedot**

1. **Log in** to your Anedot account.
2. Navigate to the fundraising account you want to connect to Salesforce.
3. From the main menu, go to:  
   **Settings \> Integrations \> Directory**
4. Click the **+ New Connection** button in the upper-right corner.
5. In the Integration Directory, choose **Salesforce**.
6. Enter the **Sub-Domain URL** of your Salesforce instance.  
   *For example, if your instance is `anedot.my.salesforce.com`, enter `anedot` (exclude `https://`).*
7. *(Optional)* Add a template for **Custom Field Mapping** in the Metadata field.
   
     1. *Example:* 
        
        ```
        {  "close_date": "",  "donation_method": "CREDIT CARD",  "action_page_id": "ANEDOT",  "stage": "RECEIVED",  "name": " ",  "prefix": "",  "status": "Donor"}
        ```

      8. Click **Save**.

#### **2. Authorize the Connection in Salesforce**

1. You’ll be redirected to log in to your **Salesforce account**.
2. Upon login, grant Anedot access to required permissions by clicking **Allow**.

> ***Important:** The user connecting the integration must have appropriate permissions in Salesforce to enable data relay successfully.*

#### **3. Required Salesforce Permissions**

The connecting user must have **Read, Write, and Edit** access to:

- **Recurring Donations** *(NPSP only)*
- **Contacts** *(NPSP, Classic Salesforce)*
- **Opportunities** *(NPSP, Classic Salesforce)*
- **Campaigns & Campaign Members** *(NPSP, Classic Salesforce)*
- **GAU Allocations** *(NPSP, Classic Salesforce)*
- **Accounts** *(NPSP, Classic Salesforce)*

Once access is granted and permissions are confirmed, your integration setup is complete!

---

### Data Relays 

Anedot automatically syncs data from **Donations** and **Lead Pages** into Salesforce. Here’s how key data elements are handled:

#### **Campaigns**

- All Action Pages are converted into **Campaigns** in Salesforce.
- A default Campaign can be set under **Anedot Settings**.
  
    - Useful for grouping data by initiative or vendor (e.g., all Facebook donations under one Campaign).
    - *Example: Set the default campaign field in Anedot Settings to `Anedot`.  
      ![Data Relays - Default Campaign](https://help.anedot.com/hs-fs/hubfs/Salesforce/Data%20Relays%20-%20Default%20Campaign.png?width=600&height=178&name=Data%20Relays%20-%20Default%20Campaign.png)*

---

#### **Funds / GAUs**

- In NPSP, funds are mapped to **General Accounting Units (GAUs)**.
- By default, Anedot will create or update GAUs for each fund submitted.
- GAU creation can be disabled, or a default GAU can be set in Anedot Settings.
  
    - *Example: To send all donations to “General Fund,” set this as the default GAU in **Anedot Settings \> General Fund**.  
      ![GAU](https://help.anedot.com/hs-fs/hubfs/Salesforce/GAU.png?width=600&height=180&name=GAU.png)*

---

#### **Contacts**

- Contacts are created/linked from Action Page submissions.
- Matching is done using email or phone number *(based on NPSP Contact Matching rules)*.
- Campaign Member records are also created and linked.
  
    - Can be customized in **Anedot Settings**.  
      ![Contacts](https://help.anedot.com/hs-fs/hubfs/Salesforce/Contacts.png?width=600&height=330&name=Contacts.png)

---

#### **Donations**

- **One-time donations** are logged as **Closed-Won Opportunities**.  
  ![One-time Donation](https://help.anedot.com/hs-fs/hubfs/Salesforce/One-time%20Donation.png?width=600&height=127&name=One-time%20Donation.png)

#### **With Commitment Events Enabled**

- **Recurring donations** create:
  
    - A **Recurring Donation** object.
    - **Open Opportunities** for future payments.
- Commitment updates *(e.g., amount, frequency)* sync to both Recurring Donation and Opportunity records.
- Canceled/deactivated commitments will update all remaining open (future) Opportunity records as "Closed Lost" and close all Recurring Donation records. 
- If a commitment ends or fails, the Recurring Donation is marked as "Fixed," and the Open Ended Status field is set to "None."  
  ![salesforce-npsp-image-11-82fdb4bc4cb2ece37ca35b13366be1a7](https://help.anedot.com/hs-fs/hubfs/Salesforce/salesforce-npsp-image-11-82fdb4bc4cb2ece37ca35b13366be1a7.png?width=600&height=134&name=salesforce-npsp-image-11-82fdb4bc4cb2ece37ca35b13366be1a7.png)

#### **Without Commitment Events**

- Recurring donations are logged as **individual Opportunities**, similar to one-time donations.

---

#### **Submissions**

- Anedot matches Submissions to Salesforce Contact records by email *(or NPSP settings)*.  
  ![Submissions](https://help.anedot.com/hs-fs/hubfs/Salesforce/Submissions.png?width=600&height=326&name=Submissions.png)
  
  > *Requires NPSP.*

---

#### **Reversed Transactions**

- Reversals (refunds, chargebacks, voids) are logged as **Anedot Donation Exceptions**.
- Common event labels that trigger exceptions:
  
    - `commitment_failed_to_process`
    - `donation_chargeback_reversed`
    - `donation_partially_refunded`
    - `donation_refunded`
    - `donation_voided`
- Exceptions are shown in the **Anedot Donation Exceptions** tab and linked to the related Opportunity in Salesforce.

> *Salesforce will not auto-update Opportunity stage when a donation is reversed. *

---

#### **Gift of Any Amount Products**

- To relay “Gift of Any Amount” products, use a custom Anedot mapping.
- Reference the `submission_created` event and use Salesforce product fields as needed.

---

### Custom Templates

Custom Templates allow you to relay specific or renamed Anedot data fields into Salesforce. You can use these templates to:

- Rename Anedot fields to match your Salesforce field names.
- Map unique data points directly to Salesforce Custom Metadata fields.

#### How to Create a Custom Template

You can create a Custom Template during **Step 7** of the [Connect Anedot to Salesforce](https://help.anedot.com/knowledge/salesforce-npsp#connect-anedot-to-sf) process by entering a custom field mapping.

- Example:
  
  ```
  {"close_date": "","donation_method": "CREDIT CARD","action_page_id": "ANEDOT","stage": "RECEIVED","prefix": ""}
  ```
- Template Field Notes: 
    - `close_date`: Your custom Salesforce field for close dates.
    - `donation_method`: Custom constant (e.g., credit card).
    - `action_page_id`: Overrides Anedot’s default action page ID.
    - `stage`: Custom Salesforce Opportunity stage.
    - `prefix`: Maps to a Salesforce-specific custom field.

---

### **Anedot Mapping & Custom Metadata**

Use **Anedot Mapping** and **Custom Metadata** to configure how Anedot fields are relayed to Salesforce—especially fields not included in the default mappings. This enables you to:

- Map Anedot fields to custom Salesforce fields
- Extend your integration to support organization-specific data requirements

**Default Anedot Fields** are included automatically in Custom Metadata when the Anedot Package is installed.

***Note:** If you are only mapping **Default Anedot Fields**, you can skip this section and go straight to [Set Up Anedot Mapping](https://help.anedot.com/knowledge/salesforce-npsp#set-up-anedot-mapping). Custom Metadata is only required if you need to map additional fields not included by default.*

To customize mappings beyond the default setup, you’ll need to create an **Anedot Mapping** within the Anedot Salesforce application. This allows you to define how **Anedot relay fields** (based on **Event Type**) connect to **Salesforce fields** (based on **Object Type**).

If a field is present in the Anedot payload but not supported by default, custom mapping is required to ensure Salesforce can interpret and process the data correctly. This step is essential for users implementing **Custom Templates**.

***Event Type:** `donation_completed`, `commitment_created`, `submission_created`, `action_page_created`, and `action_page_updated`*

***Object Type:** Contact, Opportunity, Recurring Donation, Campaign Member*

---

### Create Custom Metadata in Salesforce

1. Go to **Setup \> Custom Metadata Types** in Salesforce.
2. Click `Anedot Field`.  
   ![Metadata 2](https://help.anedot.com/hs-fs/hubfs/Salesforce/Metadata%202.png?width=600&height=423&name=Metadata%202.png)
3. Next, click **Manage Anedot Fields**.  
   ![Metadata 3](https://help.anedot.com/hs-fs/hubfs/Salesforce/Metadata%203.png?width=600&height=422&name=Metadata%203.png)
4. Select **New** to create a custom mapping.  
   ![Metadata 4](https://help.anedot.com/hs-fs/hubfs/Salesforce/Metadata%204.png?width=600&height=421&name=Metadata%204.png)
5. Fill in the following required fields:  
   ![Metadata 5](https://help.anedot.com/hs-fs/hubfs/Salesforce/Metadata%205.png?width=600&height=422&name=Metadata%205.png)
   
     - **Label**: Friendly name *(e.g., `custom_prefix_label`)*
     - **Field Name**: API-compliant name *(e.g., `custom_prefix`)*
     - **Data Type**: Type of field *(Text, Number, etc.)*
     - **Event Type**: Target event *(e.g., donation\_completed, commitment\_created, submission\_created, commitment\_updated, action\_page\_created, action\_page\_updated)*
     - **Path**:Dot-notation path to the value in the payload *(e.g., `payload.prefix`)*. *May be suggested after selecting Event Type, but confirm or adjust as needed.*

### Set Up Anedot Mapping

After defining your custom fields:

1. Open the **Anedot Salesforce app**.
2. Navigate to **Anedot Mapping**.
3. Select the **Target Object** *(dropdown in upper right corner)*.  
   ![Anedot Mapping 2](https://help.anedot.com/hs-fs/hubfs/Salesforce/Anedot%20Mapping%202.png?width=600&height=303&name=Anedot%20Mapping%202.png)
4. Click **Create New Field Mapping**.  
   ![Anedot Mapping 4](https://help.anedot.com/hs-fs/hubfs/Salesforce/Anedot%20Mapping%204.png?width=600&height=588&name=Anedot%20Mapping%204.png)
5. Choose:
   
     - **Event Type**: *(e.g., `donation_completed`)*
     - **Attribute**: *(select from available custom metadata fields)*
     - **Salesforce Field**: where the value should be stored.
6. Click **Save**.

You’ve now mapped a custom Anedot field to your Salesforce environment using Custom Metadata.

---

### Field Mapping

#### **Submission**

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

| **Anedot Field** | **Salesforce Field** |
| --- | --- |
| submission\_created | event |
| (Submission) id | id |
| email | email |
| phone | phone |
| title | title |
| suffix | suffix |
| referrer | referrer |
| utmCodes `term` | utm\_term |
| paymentMethod `cardType` | card\_type |
| (Donation) id  | donation {id} |
| anedotFeeAmount *(net amount in Entries)* | fees {anedot\_fees {amount}} |
| vendorFeeAmount *(net amount in Entries)* | fees {vendor\_fees {amount}} |
| actionPagesFund {id} | fund {id} |
| actionPagesFund {name} | fund {name} |
| actionPagesFund {identifier} | fund {identifier} |
| netAmount *(x100)* | donations {net\_amount} |
| grossAmount *(x100)* | donations {gross\_amount} |
| feesPaidByDonor *(TRUE/FALSE)* | donations {fees\_paid\_by\_donor} |
| lastName | last\_name |
| created\_at | created\_at |
| firstName | first\_name |
| ipAddress | ip\_address |
| occupation | occupation |
| (Product) id | product\_id |
| updatedAt | updated\_at |
| utmCodes {medium} | utm\_medium |
| utmSource {source} | utm\_source |
| account {id} | account\_uid |
| middleName | middle\_name |
| sourceCode | source\_code |
| utmCodes {content} | utm\_content |
| account {name} | account\_name |
| address {city} | address\_city |
| Internal SKU *(Product)* | product\_code |
| Product Name | product\_name |
| utmCodes {campaign} | utm\_campaign |
| employerName | employer\_name |
| Product Value *(in dollars)* | product\_value |
| (Action Page) id | action\_page\_id |
| address {line1} | address\_line\_1 |
| address {line2} | address\_line\_2 |
| address region | address\_region |
| address country | address\_country |
| paymentMethod {cardMonth} / paymentMethod {cardYear} | card\_expiration |
| donations {amount} *(x100)* | donation\_amount |
| actionPage {name} | action\_page\_name |
| paymentMethod {lastDigits} | card\_last\_digits |
| donorProfileId | donor\_profile\_id |
| "" | referrer\_to\_form |
| paymentRequests {responseTime} | created\_at\_iso8601 |
| currentlyEmployed *(TRUE/FALSE)* | currently\_employed |
| updatedAt | updated\_at\_iso8601 |
| address postalCode | address\_postal\_code |
| paymentMethod {type} | payment\_method\_type |
| customFieldResponses {multiple fields} | custom\_field\_responses |
| communicationsConsentEmail | communications\_consent\_email |
| communicationsConsentPhone | communications\_consent\_phone |

#### **Donation/Commitment**

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

 

| Anedot Field | Salesforce Field |
| --- | --- |
| donation\_created  *or* commitment\_created | event |
| created\_at | date |
| firstName lastName | name |
| email | email |
| phone | phone |
| title | title |
| hosted | origin |
| paymentMethod {type} | source |
| completed | status |
| suffix | suffix |
| (Donation) id | donations {id} |
| anedotFeeAmount *(net amount in Entries)* | fees {anedot\_fees {amount}} |
| vendorFeesAmount *(net amount in Entries)* | fees {vendor\_fees} |
| actionPagesFund {id} | fund {id} |
| actionPagesFund {name} | fund {name} |
| actionPagesFund {identifier}  | fund {identifier} |
| paymentMethod {cardType} | card\_type |
| paymentMethod {lastDigits} | card\_last\_digits |
| paymentMethod {cardMonth} paymentMethod {cardYear} | credit\_card\_expiration |
| referrer | referrer |
| frequency | frequency |
| lastName | last\_name |
| recurring *(TRUE/FALSE)* | recurring |
| created\_at | created\_at |
| firstName | first\_name |
| ipAddress | ip\_address |
| netAmount *(x100)* | net\_amount |
| occupation | occupation |
| updatedAt | updated\_at |
| account {id} | account\_uid |
| middleName | middle\_name |
| sourceCode | source\_code |
| account {name} | account\_name |
| address {city} | address\_city |
| "" | check\_number |
| created\_at | date\_iso8601 |
| grossAmount *(x100)* | event\_amount |
| "" | organization |
| employerName | employer\_name |
| (Submission) id | submission\_id |
| (Action Page) id | action\_page\_id |
| address {line1} | address\_line\_1 (appears as line 1 of Billing Address) |
| address {line2} | address\_line\_2 (appears as line 1 of Billing Address) |
| address {region} | address\_region |
| (Commitment) id | commitment\_uid |
| address {country} | address\_country |
| actionPage {name} | action\_page\_name |
| "1" | commitment\_index |
| donorProfileId | donor\_profile\_id |
| "" | referrer\_to\_form |
| totalAmount *(x100)* | amount\_in\_dollars |
| donations {paymentMethodId} | payment\_method\_id |
| paymentRequests {responseTime} | created\_at\_iso8601 |
| currentlyEmployed (TRUE/FALSE) | currently\_employed |
| updatedAt | updated\_at\_iso8601 |
| address {postalCode} | address\_postal\_code |
| Payment Method | payment\_description |
| customFieldResponses {multiple fields} | custom\_field\_responses |
| recurring *(TRUE/FALSE)* | is\_recurring\_commitment |
| (Commitment) schedule\_until | commitment\_recurring\_until |
| communicationsConsentEmail | communications\_consent\_email |
| communicationsConsentPhone | communications\_consent\_phone |

 

#### **Action Page Events**

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

| Anedot Field | Salesforce Field |
| --- | --- |
| action\_page\_updated *or* action\_page\_created | event |
| (Action Page) id | id |
| actionPage {name} | name |
| actionPagesFund {id} | funds {id} |
| actionPagesFund {name} | funds {name} |
| actionPagesFund "100" | funds {percentage} |

 

#### **Custom Field Created**

The Anedot Fields match the custom field in the Form Preset and the Salesforce Fields match the Request Body relay.

 

| Anedot Field | Salesforce Field |
| --- | --- |
| custom\_field\_created | event |
| Field Label | label |
| Custom Field Type *(Birthday, Date, Selection List, Hidden Question, Text, Requirement)* | input\_type |
| Internal Name | internal\_name |

---

---

### Default Anedot Fields

#### donation\_completed

| **Available Field** | **Field Type** |
| --- | --- |
| payload.account\_name | text |
| payload.account\_uid | text |
| payload.action\_page\_id | text |
| payload.action\_page\_name | text |
| payload.address\_city | text |
| payload.address\_country | text |
| payload.address\_line\_1 | text |
| payload.address\_line\_2 | text |
| payload.address\_postal\_code | text |
| payload.address\_region | text |
| payload.amount\_in\_dollars | number |
| payload.commitment\_uid | text |
| payload.communications\_consent\_email | boolean |
| payload.communications\_consent\_phone | boolean |
| payload.created\_at | datetime |
| payload.created\_at\_iso8601 | datetime |
| payload.currently\_employed | boolean |
| payload.donation.credit\_card\_expiration | text |
| payload.donation.card\_last\_digits | number |
| payload.donation.card\_type | text |
| payload.donor\_profile\_id | text |
| payload.email | email |
| payload.employer\_name | text |
| payload.event\_amount | number |
| payload.first\_name | text |
| payload.ip\_address | text |
| payload.is\_recurring\_commitment | boolean |
| payload.last\_name | text |
| payload.middle\_name | text |
| payload.net\_amount | number |
| payload.occupation | text |
| payload.origin | text |
| payload.payment\_method\_id | text |
| payload.phone | phone |
| payload.recurring | boolean |
| payload.referrer | text |
| payload.referrer\_to\_form | text |
| payload.source\_code | text |
| payload.submission\_id | text |
| payload.suffix | text |
| payload.title | text |
| payload.updated\_at | datetime |
| payload.updated\_at\_iso8601 | datetime |

#### commitment\_created

| **Available Field** | **Field Type** |
| --- | --- |
| payload.action\_page\_id | text |
| payload.action\_page\_name | text |
| payload.address\_city | text |
| payload.address\_country | text |
| payload.address\_line\_1 | text |
| payload.address\_line\_2 | text |
| payload.address\_postal\_code | text |
| payload.address\_region | text |
| payload.cancellation\_reason | text |
| payload.cancelled\_on | datetime |
| payload.cancelled\_on\_iso8601 | datetime |
| payload.communications\_consent\_email | boolean |
| payload.communications\_consent\_phone | boolean |
| payload.created\_at | datetime |
| payload.created\_at\_iso8601 | datetime |
| payload.currently\_employed | boolean |
| payload.donor\_profile\_id | text |
| payload.email | email |
| payload.employer\_name | text |
| payload.first\_name | text |
| payload.frequency | text |
| payload.id | text |
| payload.ip\_address | text |
| payload.last\_name | text |
| payload.middle\_name | text |
| payload.next\_capture\_on | datetime |
| payload.occupation | text |
| payload.payment\_method\_id | text |
| payload.payment\_status\_message | text |
| payload.phone | phone |
| payload.referrer | text |
| payload.referrer\_to\_form | text |
| payload.submission\_id | text |
| payload.suffix | text |
| payload.token | text |
| payload.total\_amount\_in\_dollars | text |
| payload.updated\_at | datetime |
| payload.whodunnit | text |

#### action\_page\_created and action\_page\_updated

| **Available Field** | **Field Type** |
| --- | --- |
| payload.id | text |
| payload.name | text |

---

###  Payload Examples

#### Request Headers

```
{"User-Agent": "Anedot-Hookshot/00b1d64",  "X-Request-Id": "1c8927de-1e2f-1234-a8ea-babe5a588869",  "X-Integration-Id": "1125f2f7-7852-419d-9d3e-0c5895d65605",  "X-Integration-Event": "submission_created",  "X-Request-Signature": "123480d84c67a050316ec647416598259cea6f0934806a59bb0eb95bc288942f"  }
```

#### Submissions

```
{"event": "submission_created",  "payload": `{`  "id": "7c7d869c-436b-429b-ac68-69658f1d12eb",  "email": "[[email protected]](/cdn-cgi/l/email-protection)",  "phone": "2252501301",  "title": "",  "suffix": "",  "referrer": "https://qa2.secure.anedot.com/space-force/d3b0000e-4bde-4474-9a85-67627c323752",  "utm_term": "",  "card_type": "master",  "donations": [{"id": "d5ea20f9421b0fb55499c",  "fees": {  "anedot_fees": {"amount": "4.30"  },  "vendor_fees": [ ]  },  "fund": {"id": "75bb50a0-69f3-4f98-8f6b-ac67fc1b1764",  "name": "General Fund",  "identifier": "1001"  },  "product": { },  "net_amount": "95.70",  "gross_amount": "100.0",  "fees_paid_by_donor": "false"  }],  "last_name": "Dote",  "created_at": "2023-05-22 21:28:27 UTC",  "first_name": "Anna",  "ip_address": "65.158.47.175",  "occupation": "Occupation 1",  "product_id": "",  "updated_at": "2023-05-22 21:28:28 UTC",  "utm_medium": "",  "utm_source": "",  "account_uid": "a7229820277fe1a0aeaec",  "middle_name": "",  "source_code": "",  "utm_content": "",  "account_name": "City Food Pantry",  "address_city": "New Orleans",  "product_code": "",  "product_name": "",  "utm_campaign": "",  "employer_name": "Occupation 1",  "product_value": "",  "action_page_id": "469627e5-adac-4348-8191-080a060e2379",  "address_line_1": "123 Anedot Way",  "address_line_2": "4567",  "address_region": "LA",  "address_country": "US",  "card_expiration": "12/2022",  "donation_amount": "$100.00",  "action_page_name": "General Fund",  "card_last_digits": "5454",  "donor_profile_id": "",  "referrer_to_form": "",  "created_at_iso8601": "2023-05-22T21:28:27Z",  "currently_employed": "false",  "updated_at_iso8601": "2023-05-22T21:28:28Z",  "address_postal_code": "99999",  "payment_method_type": "credit_card",  "custom_field_responses": `{``}`,  "communications_consent_email": "false",  "communications_consent_phone": "false"  }}
```

#### Donations

```
{"event": "donation_completed",  "payload": `{`  "date": "2023-05-22 21:28:28 UTC",  "name": "Anna Dote",  "email": "[[email protected]](/cdn-cgi/l/email-protection)",  "phone": "2252501301",  "title": "",  "origin": "hosted",  "source": "credit_card",  "status": "completed",  "suffix": "",  "donation": {"id": "d5ea20f9421b0fb55499c",  "fees": {  "anedot_fees": {"amount": "4.30"  },  "vendor_fees": [ ]  },  "fund": {"id": "75bb50a0-69f3-4f98-8f6b-ac67fc1b1764",  "name": "General Fund",  "identifier": "1001"  },  "products": [ ],  "card_type": "master",  "card_last_digits": "5454",  "donation_project": "",  "credit_card_expiration": "12/2023"  },  "referrer": "https://qa2.secure.anedot.com/space-force/d3b0000e-4bde-4474-9a85-67627c323752",  "frequency": "once",  "last_name": "Dote",  "recurring": "false",  "created_at": "2023-05-22 21:28:28 UTC",  "first_name": "Anna",  "ip_address": "65.158.47.175",  "net_amount": "95.70",  "occupation": "Occupation 1",  "updated_at": "2023-05-22 21:28:28 UTC",  "account_uid": "a7229820277fe1a0aeaec",  "middle_name": "",  "source_code": "",  "account_name": "City Food Pantry",  "address_city": "New Orleans",  "check_number": "",  "date_iso8601": "2023-05-22T21:28:28Z",  "event_amount": "100.00",  "employer_name": "Occupation 1",  "submission_id": "7c7d869c-436b-429b-ac68-69658f1d12eb",  "action_page_id": "469627e5-adac-4348-8191-080a060e2379",  "address_line_1": "123 Anedot Way",  "address_line_2": "4567",  "address_region": "LA",  "commitment_uid": "",  "address_country": "US",  "action_page_name": "General Fund",  "commitment_index": "",  "donor_profile_id": "",  "referrer_to_form": "",  "amount_in_dollars": "100.0",  "payment_method_id": "a024148f-786f-44b6-8ec4-6769fdc72061",  "created_at_iso8601": "2023-05-22T21:28:28Z",  "currently_employed": "false",  "updated_at_iso8601": "2023-05-22T21:28:28Z",  "address_postal_code": "9999",  "payment_description": "MasterCard •••• 5454",  "custom_field_responses": { },  "is_recurring_commitment": "false",  "commitment_recurring_until": "",  "communications_consent_email": "false",  "communications_consent_phone": "false"  } }
```

#### Commitments

```
{"event": "commitment_created",  "payload": `{`  "id": "31fb5453-00e6-47e9-a05b-f12311180706",  "email": "[[email protected]](/cdn-cgi/l/email-protection)",  "phone": "2252501301",  "title": "",  "token": "puxBmva9joKvANBs2mKbuvQB",  "suffix": "",  "referrer": "https://qa2.secure.anedot.com/space-force/cf250f54-6514-473d-90b5-4746f0ffa578",  "frequency": "monthly",  "last_name": "Dote",  "whodunnit": "",  "created_at": "2023-05-03 18:16:59 UTC",  "first_name": "Anna",  "ip_address": "65.80.57.175",  "occupation": "",  "updated_at": "2023-05-03 18:16:59 UTC",  "middle_name": "",  "address_city": "New Orleans",  "cancelled_on": "",  "employer_name": "",  "submission_id": "d81e62b3-81ca-4811-8889-41050e0430a5",  "action_page_id": "fe8031a0-b359-4cf1-ae3d-f25d7cc3eb2c",  "address_line_1": "123 Anedot Way",  "address_line_2": "",  "address_region": "LA",  "address_country": "US",  "next_capture_on": "2023-06-03 18:16:59 UTC",  "action_page_name": "General Fund",  "donor_profile_id": "848f9bbf-c553-4a6e-bf0c-7ad25800bbf0",  "fund_allocations": [{"fund": {  "id": "75bb50a0-69f3-4f98-8f6b-ac67fc1b1764",  "name": "General Fund",  "identifier": "1001"  `}`,  "amount_in_dollars": "50.0"  }],  "referrer_to_form": "",  "payment_method_id": "56d2dfcc-d7b2-46c0-b161-af1ee331f3bd",  "changed_attributes": { },  "created_at_iso8601": "2023-05-03T18:16:59Z",  "currently_employed": "true",  "updated_at_iso8601": "2023-05-03T18:16:59Z",  "address_postal_code": "99999",  "cancellation_reason": "",  "cancelled_on_iso8601": "",  "payment_status_message": "",  "total_amount_in_dollars": "50.0",  "communications_consent_email": "false",  "communications_consent_phone": "false"  }}
```

#### Action Page Events

```
{"event": "action_page_updated",  "payload": {  "id": "469627e5-adac-1234-8191-080a060e2379",  "name": "General Fund",  "funds": [{ "id": "75bb50a0-69f3-4f98-8f6b-ac67fc1b1764",  "name": "General Fund",  "percentage": 100  }]  }}
```

#### Custom Field Created

```
{"event": "custom_field_created",  "payload": { "id": "fd9e7338-9b1b-45eb-8644-1fa8fd47d18a",  "label": "Would you like to subscribe to our newsletter?",  "input_type": "question",  "internal_name": "would_you_like_to_subscribe_to_our_newsletter_"  }  }
```

#### Failure

```
[{"message": "INVALID_HEADER_TYPE",  "errorCode": "INVALID_AUTH_HEADER"  }]
```

---

### Troubleshooting

If you're seeing **Auth Failure** errors in Anedot, such as the one below, you may need to review your **Salesforce Login History** to determine the cause:

```
{ "error": "Authentication failed, check username, password" }
```

#### How to Check Salesforce Login History

1. Log in to **Salesforce** and go to **Setup**.
2. In the **Quick Find** bar, search for and select **Users**.
3. Select **Users** from the results.
4. Switch to **Salesforce Classic** view (if not already there).
5. Under the selected user, open the **Login History** tab.

- - Look for: 
          - **"Username-Password Flow Disabled"**  
            → You'll need to enable **OAuth Username-Password Flows**.
          - **"Password Lockout"**  
            → Wait for the lockout period to end or reset the password.

#### If Data Is Not Relaying to Salesforce

If relays appear successful in Anedot but are not arriving in Salesforce, the issue may be related to your **Salesforce Storage Limits**.

#### How to Check Storage Usage

1. Go to **Setup** in Salesforce.
2. In the **Quick Find** bar, search for **Storage**.
3. Click **Storage Usage**.
4. Review your usage:
   
     - If storage exceeds **60%**, this may prevent relays from being accepted.
     - To resolve, delete older or unnecessary records to free up space.

- [Get Started](https://help.anedot.com/knowledge/get-started?hsLang=en#main-content)

    - [Anedot 101](https://help.anedot.com/knowledge/get-started?hsLang=en#anedot-101)
    - [Apply for an Account](https://help.anedot.com/knowledge/get-started?hsLang=en#apply-for-an-account)
    - [Security](https://help.anedot.com/knowledge/get-started?hsLang=en#security)
- [Action Pages](https://help.anedot.com/knowledge/action-pages?hsLang=en#main-content)

    - [Action Page Basics](https://help.anedot.com/knowledge/action-pages?hsLang=en#action-page-basics)
    - [Page Builder](https://help.anedot.com/knowledge/action-pages?hsLang=en#page-builder)
    - [Advanced Features](https://help.anedot.com/knowledge/action-pages?hsLang=en#advanced-features)
    - [State Specific Pages](https://help.anedot.com/knowledge/action-pages?hsLang=en#state-specific-pages)
- [Finance](https://help.anedot.com/knowledge/finance?hsLang=en#main-content)

    - [Management & Reporting](https://help.anedot.com/knowledge/finance?hsLang=en#management-reporting)
    - [Internal Processing](https://help.anedot.com/knowledge/finance?hsLang=en#internal-processing)
- [Integrations](https://help.anedot.com/knowledge/integrations?hsLang=en#main-content)

    - [CRM & Donor Management Systems](https://help.anedot.com/knowledge/integrations?hsLang=en#crm-donor-management-systems)
    - [Email Marketing & Communication Tools](https://help.anedot.com/knowledge/integrations?hsLang=en#email-marketing-communication-tools)
    - [Integration & Automation Tools](https://help.anedot.com/knowledge/integrations?hsLang=en#integration-automation-tools)
    - [Political Campaign Tools](https://help.anedot.com/knowledge/integrations?hsLang=en#political-campaign-tools)
    - [E-commerce, Financial, and Membership Tools](https://help.anedot.com/knowledge/integrations?hsLang=en#e-commerce-financial-and-membership-tools)
    - [Relay Data & Troubleshooting](https://help.anedot.com/knowledge/integrations?hsLang=en#relay-data-troubleshooting)
- [Settings](https://help.anedot.com/knowledge/settings?hsLang=en#main-content)

    - [Access](https://help.anedot.com/knowledge/settings?hsLang=en#access)
    - [Configuration](https://help.anedot.com/knowledge/settings?hsLang=en#configuration)
    - [Finance](https://help.anedot.com/knowledge/settings?hsLang=en#finance)
    - [Setup](https://help.anedot.com/knowledge/settings?hsLang=en#setup)
    - [Other Actions](https://help.anedot.com/knowledge/settings?hsLang=en#other-actions)
- [Donor Support](https://help.anedot.com/knowledge/donor-support?hsLang=en#main-content)

    - [Getting Started with Your Donor Account](https://help.anedot.com/knowledge/donor-support?hsLang=en#getting-started-with-your-donor-account)
    - [Manage Your Giving](https://help.anedot.com/knowledge/donor-support?hsLang=en#manage-your-giving)
    - [Donor FAQ](https://help.anedot.com/knowledge/donor-support?hsLang=en#donor-faq)

[![Chill listening crop-3](https://help.anedot.com/hubfs/623c96e00d0d93f7d3a66f2e_Anedot_Typemark_Blue.svg "Chill listening crop-3")](https://www.anedot.com/)

<https://facebook.com/anedot> <https://x.com/anedot> <https://instagram.com/anedot> <https://www.youtube.com/@Anedot> <https://open.spotify.com/show/7fK8maOMuj87AeAotVDZRF> [mailto:help@anedot.com](mailto:help@anedot.com)

Copyright © 2025, Anedot, Inc.