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
-
Contact our Support team to request an Anedot Sandbox account.
-
Test and confirm your configuration in the Sandbox.
-
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
- Data Relays
- Custom Templates
- Anedot Mapping and Custom Metadata
- Field Mapping
- Default Anedot Fields
- Payload Examples
- 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:
-
Log in to your Salesforce account and go to the AppExchange.
-
Search for Nonprofit Success Pack.
-
Click Get It Now on the package listing.
-
Log in to the AppExchange using your Salesforce credentials.
-
Choose where to install the package:
-
Install in Production or
-
Install in Sandbox
-
-
Select the users for whom you want to install NPSP.
-
Click Install.
-
If prompted, approve third-party access by checking Yes, grant access to these third-party websites, then click Continue.
-
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:
- Log in using your Salesforce credentials.
- 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
-
You’ll be redirected to the Package Installation Details page.
-
Review the package components.
-
When prompted, choose Install for All Users.
-
Click Install.
-
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.
-
Wait for the installation to complete (this may take a few minutes).
-
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:
-
Open the App Launcher in Salesforce (look for the grid icon below your organization’s logo).
-
Select Anedot from the available apps.
-
Go to the Anedot Settings tab.
-
In the top-right corner, click New to create a new Anedot Settings record.
-
Configure your default settings.These may vary based on your organization’s Salesforce setup. Make sure to define your Opportunity Stage defaults.
-
Click Create once your settings are in place.
-
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
-
Log in to your Anedot account.
-
Navigate to the fundraising account you want to connect to Salesforce.
-
From the main menu, go to:
Settings > Integrations > Directory -
Click the + New Connection button in the upper-right corner.
-
In the Integration Directory, choose Salesforce.
-
Enter the Sub-Domain URL of your Salesforce instance.
For example, if your instance isanedot.my.salesforce.com
, enteranedot
(excludehttps://
). -
(Optional) Add a template for Custom Field Mapping in the Metadata field.
- Example:
{
"close_date": "",
"donation_method": "CREDIT CARD",
"action_page_id": "ANEDOT",
"stage": "RECEIVED",
"name": " ",
"prefix": "",
"status": "Donor"
}
- Example:
8. Click Save.
2. Authorize the Connection in Salesforce
-
You’ll be redirected to log in to your Salesforce account.
-
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
.
-
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.
-
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.
-
Donations
-
One-time donations are logged as Closed-Won Opportunities.
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."
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).
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 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 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.
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
-
Go to Setup > Custom Metadata Types in Salesforce.
-
Click
Anedot Field
. - Next, click Manage Anedot Fields.
-
Select New to create a custom mapping.
-
Fill in the following required fields:
-
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.)
-
Object Type: Target object (e.g., Opportunity)
-
Field Type: Source data field (e.g.,
title
,created_at
)
-
Examples
For a Contact Field
Label | Field Name | Field Type | Object Type |
prefix_label | custom_prefix | title | submission_created |
For a Donation Field
Label | Field Name | Field Type | Object Type |
close_date | custom_close_date | created_at | donation_completed |
Set Up Anedot Mapping
After defining your custom fields:
-
Open the Anedot Salesforce app.
-
Navigate to Anedot Mapping.
- Select the Target Object (dropdown in upper right corner).
-
Click Create New Field Mapping.
-
Choose:
-
Event Type: (e.g.,
donation_completed
) -
Attribute: (select from available custom metadata fields)
-
Salesforce Field: where the value should be stored.
-
-
Click Save.
You’ve now mapped a custom Anedot field to your Salesforce environment using Custom Metadata.
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 |
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
Anedot Field | Salesforce Field |
---|---|
donation_created |
event |
created_at | date |
firstName lastName |
name |
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} |
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
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 | |
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 | |
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
-
Log in to Salesforce and go to Setup.
-
In the Quick Find bar, search for and select Users.
-
Select Users from the results.
-
Switch to Salesforce Classic view (if not already there).
-
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.
-
- Look for:
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
-
Go to Setup in Salesforce.
-
In the Quick Find bar, search for Storage.
-
Click Storage Usage.
-
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.
-