Salesforce Classic
A comprehensive guide for setting up, managing, and troubleshooting the Anedot integration with Salesforce Classic, including package installation, custom metadata, and field mapping.
Salesforce is a leading Customer Relationship Management (CRM) platform used by organizations to manage supporters, donations, processes, and communications.
Connecting Anedot to Salesforce requires a proper setup to ensure accurate and reliable data sync between the two systems. Because the process involves configuration and testing, we recommend completing the setup in both Anedot and Salesforce sandbox environments before going live.
To avoid impacting live data, all initial setup should be done in a sandbox environment.
Table of Contents
- Get Started
- Data Relays
- Custom Templates
- Anedot Mapping and Custom Metadata
- Field Mapping
- Default Anedot Fields
- Payload Examples
- Troubleshooting
Get Started
To begin, contact our Support team. We’ll create a sandbox account for your organization in Anedot. After successful testing, we’ll enable the Salesforce integration on your live account.
Before you begin, ensure your Salesforce user profile has the Download AppExchange Packages permission enabled.
Install the Anedot Package
Follow these steps to install the Anedot package in Salesforce:
-
Log in with 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.
-
Choose Install for All Users.
-
Click Install.
-
Approve third-party access by checking
Yes, grant access to these third-party websites, then click Continue.Note: This grants access to Salesforce APEX API.
-
Wait for the installation to complete (a few minutes).
-
You’ll receive an email confirmation from Salesforce when installation is complete.
Configure the Anedot Package in Salesforce
-
Open the App Launcher in Salesforce.
-
Select Anedot.
-
Navigate to the Anedot Settings tab.
-
In the top-right, click New to create your Anedot Settings record.
-
Set your default values (e.g. Opportunity Stage).
-
Click Create when finished.
-
Copy the Webhook URL from the settings page—this will be used to complete the connection from Anedot.
Anedot Settings
Note: These defaults are based on a standard NPSP instance. If your organization has custom stages, statuses, or record types, you’ll need to adjust mappings accordingly.
Setting | Options | Description |
---|---|---|
Create GAU Allocation Records | Checkbox (default: checked) | Automatically create General Accounting Unit records. |
Default Campaign Member Status | Dropdown (default: Planned) | Sets default status for campaign members. |
Donation Amount Field | Dropdown (default: Total Donation Amount) | Sets which value to use as donation amount. |
Integration Error Email | Text field | Email address to receive integration error alerts. |
Opportunity Closed-Won Stage | Dropdown (default: Closed Won) | Default stage for successful opportunities. |
Opportunity Open Stage | Dropdown (default: Prospecting) | Default stage for open (future) opportunities. |
Update Contact Info from Anedot | Checkbox (default: checked) | Updates existing contacts using matched email. |
Default Campaign | Campaign search | Assigns all records to one campaign instead of Action Page campaigns. |
Default GAU | GAU search | Assigns all donations to one fund. |
Opportunity Closed-Lost Stage | Dropdown (default: Closed Lost) | Used for failed or canceled donations. |
Single Donation Record Type | Dropdown (default: NPSP Default) | Sets record type for single donations. |
Webhook URL | Auto-generated | Use this to connect Salesforce in Anedot. |
Source Object | Dropdown (NPSP or Salesforce) | Defines which Salesforce platform to map to. |
Connect Anedot to Salesforce
-
Log in to Anedot.
-
Open the fundraising account you wish to connect.
-
Navigate to Settings > Integrations > Directory.
-
Click + New Connection.
-
Choose Salesforce from the list.
-
Enter your Salesforce Sub-Domain (e.g.
yourname
if your domain isyourname.my.salesforce.com
). -
(Optional) Add a Custom Field Mapping template.
Example Template:
{
"close_date": "",
"donation_method": "CREDIT CARD",
"action_page_id": "ANEDOT",
"stage": "RECEIVED",
"name": " ",
"prefix": "",
"status": "Donor"
} -
Click Save.
-
You’ll be redirected to Salesforce to log in and authorize access.
Ensure the user connecting Anedot to Salesforce has Read, Write, and Edit access to the following objects:
-
Contacts
-
Opportunities
-
Campaigns & Campaign Members
-
GAU Allocations
-
Accounts
10. Once permissions are confirmed, the connection is complete!
Data Relays
Anedot automatically sends data from Donation and Lead Pages to Salesforce.
-
Action Pages are synced as Campaigns in Salesforce.
-
You can set a default Campaign for all submissions in Anedot Settings.
-
Example: If you receive donations from multiple vendors, you may want all submissions to be routed to a dedicated “Anedot” Campaign in Salesforce.
-
Reversed Transactions
Reversed or refunded transactions are logged as Anedot Donation Exceptions in Salesforce.
-
If a payload includes any of the following event labels, a record is created in the
Anedot_Donation_Exception__c
object:-
commitment_failed_to_process
-
donation_chargeback_reversed
-
donation_partially_refunded
-
donation_refunded
-
donation_voided
-
Each exception record includes the event type, reversal amount, and a link to the related Salesforce Opportunity, if available.
- Viewing Exceptions in Salesforce
-
Find all events in the Anedot Donation Exceptions tab within the Anedot app.
-
The related Opportunity record will also display linked exceptions under the "Related" > Anedot Donation Exceptions section.
-
Anedot does not automatically change the Opportunity stage for exceptions. For example, a voided donation will not be marked as
Closed–Lost
unless you set that up via custom mapping in Salesforce.
-
-
Gift of Any Amount Products
To relay Gift of Any Amount products, you'll need to create a Custom Anedot Mapping using product fields from the submission_created
event.
Custom Templates
Custom Templates allow you to relay custom data fields from Anedot to Salesforce. They can be used to:
-
Rename Anedot fields so they match Salesforce field names
-
Send organization-specific data directly to Custom Metadata fields in Salesforce
Creating a Custom Template
During Step 7 of the Connect Anedot to Salesforce process, you have the option to define or override field names using a Custom Template.
- Example Template:
{
"close_date": "",
"donation_method": "CREDIT CARD",
"action_page_id": "ANEDOT",
"stage": "RECEIVED",
"prefix": ""
}
Next Steps in Salesforce
-
For each field in your Custom Template, create a Custom Metadata record in Salesforce.
-
After the metadata records are created, configure a corresponding Anedot Mapping in Salesforce to connect each field to its appropriate Salesforce object field.
This setup ensures your custom field data is relayed and processed correctly within Salesforce.
Continue below to learn how to create and configure Custom Metadata and Anedot Mappings.
Anedot Mapping and Custom Metadata
Anedot Mapping and Salesforce Custom Metadata give you the flexibility to map Anedot fields—especially those not included in the default setup—to custom Salesforce fields. This is essential for organizations with unique data requirements or customized Salesforce environments.
When the Anedot Package is installed, Default Anedot Fields are automatically included in Salesforce Custom Metadata. However, if you need to relay additional fields or map existing ones differently, you’ll need to:
-
Create new Custom Metadata fields in Salesforce.
-
Map them to your Salesforce objects using Anedot Mapping.
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.
-
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
1. Standard Field
Mapping name
from both donation_completed
and submission_created
:
-
Label:
payload.name
-
Field Name:
payload_name
-
Type: Text
-
Event Type:
donation_completed, submission_created
-
Path:
payload.name
2. Custom Field
Mapping a custom "T-shirt Size" field:
-
Label:
payload.cf.enter_your_t-shirt_size
-
Field Name:
payload_cf_enter_your_t_shirt_size
-
Type: Text
-
Event Type:
donation_completed, submission_created
-
Path:
payload.custom_field_responses.enter_your_t-shirt_size
3. Nested Field
Mapping a nested donation fee:
-
Label:
payload.donation.fees.anedot_fees.amount
-
Field Name:
payload_donation_fees_anedot_fees_amount
-
Type: Text
-
Event Type:
donation_completed
-
Path:
payload.donation.fees.anedot_fees.amount
Note: Nested fields are deeply embedded fields within objects inside the payload.
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.
Field Mapping
The Anedot Fields match the Submission's Raw Data and the Salesforce Fields match the Request Body relay.
Submissions
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 | donations {id} |
anedotFeeAmount (net amount in Entries) | fees {anedot_fee {amount}} |
vendorFeeAmount (net amount in Entries) | fees {vendor_fees {amount}} |
actionPagesFund {id} | fund {id} |
actionPagesFund {name} | fund {name} |
actionPagesFund {identifier} | fund {identifier} |
netAmount (x100) | net_amount |
grossAmount (x100) | gross_amount |
feesPaidByDonor (TRUE/FALSE) | 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 |
utmCodes {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) | product_name |
utmCodes {campaign} | utm_campaign |
employerName | employer_name |
Product Value ( in dollars - Product) | 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}} |
vendorFeeAmount (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 |
address {line2} | address_line_2 |
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
Anedot Field | Salesforce Field |
---|---|
action_page_updated or action_page_created |
event |
(Action Page) id | id |
actionPage {name} | name |
actionPagesFund {id name} "100" | funds {id name percentage} |
Custom Field Created
Anedot Field | Salesforce Field |
---|---|
custom_field_created | event |
(custom field) id | id |
Field Label | label |
Custom Field Type | 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.
-