Crimson and Julep by CMDI
Anedot integrates with Crimson and Julep by CMDI to automatically send donation data from Action Pages into their CRM systems for streamlined donor management.
Crimson and Julep, developed by CMDI, are CRM platforms used by political campaigns and nonprofit organizations to manage donor data and fundraising efforts. Anedot integrates directly with CMDI to send donation data collected from Action Pages into their systems.
Table of Contents
Connecting Anedot to Crimson or Julep
To set up the integration:
-
Create a Donation Page
-
Make sure your fundraising account has at least one donation page before connecting.
-
Without this, the integration may fail.
-
-
Go to Settings > Integrations > Directory in your Anedot account.
-
Click + New Connection in the top-right corner.
-
Select Crimson or Julep from the list.
-
Choose the Action Pages to sync:
-
All pages are selected by default.
-
To exclude any, enter their Action Page IDs (comma-separated).
-
-
(Optional) Limit the integration to a specific Team.
-
Paste your CMDI API Token.
-
Click Save to complete the setup.
Once connected, a CMDI Data Entry Page will be created automatically.
Example Entry Form URL:
https://secure.anedot.com/crimson/donations/new?account_uid=[accountId]&batchno=[batchno]&batchdate=[batchdate "yyyy-mm-dd"]&token=[token]
You can update your page selections, Team scope, or credentials anytime.
Data Relay
Anedot sends data only from Donation Pages (i.e. balance-impacting transactions).
Lead Page data is not supported at this time.
Supported Custom Fields
The following fields can be passed via URL parameters or set on the Action Page:
-
batchno
-
batchdate
-
PID
-
campgncode
-
chapcode
-
comment
-
refno
-
source_code
-
trackno
These fields are used primarily to pre-fill the CMDI Data Entry Page.
Fields likebatchno
,batchdate
,source_code
, andPID
can be used to pre-populate form values.
PID Lookup Behavior
If a PID
is included in the URL, the page makes a call to CMDI’s internal People API to retrieve matching contact data and auto-fill the donation form.
Relay Field Mapping
-
All fields except
source_code
are included incustom_field_responses
. -
source_code
is sent as a top-level field in the webhook relay. -
batchdate
maps to the actual donation date.
Field Mapping
Donation Relays
The Anedot Fields match the Submission's Raw Data (unless specified otherwise in parenthesis), and the Crimson Fields match the Request Body relay.
Anedot Field | Crimson/Julep Field |
---|---|
"donation_created" | event |
created_at (in UTC) | date |
"firstName lastName" | name |
phone | phone |
donations {origin} | origin |
prefix | prefix |
(Donation) status | status |
suffix | suffix |
paymentMethod {type} | payment |
(Donation) id | donation id |
anedotFeeAmount (net amount in Entries) | donation {fees {anedot_fees {amount}} |
vendorFeeAmount (net amount in Entries) | donation {fees {vendor_fees {amount}} |
*billing agreement name or account displayName |
donation {fees {vendor_fees {account}} |
"Donation from" firstName lastName | donation {fees {vendor_fees {description}} |
actionPagesFund id | donation {fund {id}} |
actionPagesFund name | donation {fund {name}} |
actionPagesFund identifier | donation {fund {identifier}} |
Product Name (Product) | donation {product {name}} |
Internal SKU (Product) | donation {product {identifier}} |
paymentMethod {cardType} | donation {card_type} |
paymentMethod {lastDigits} | donation {card_last_digits} |
donation_project (hidden custom field, otherwise blank) | donation {donation_project} |
paymentMethod {cardMonth} paymentMethod {cardYear} | donation {credit_card_expiration} |
referrer | referrer |
(Commitment) frequency | frequency |
lastName | last_name |
"true" or "false" | recurring |
firstName | first_name |
netAmount (x100) | net_amount |
occupation | occupation |
updatedAt (right above utmCodes in Submission Raw Data) | updated_at |
account {id} | account_uid |
middleName | middle_name |
source_code | source_code |
account {name} | account_name |
address {city} | address_city |
donations {checkNumber} | check_number |
netAmount (under Entries) | event_amount |
employerName | employer_name |
(Action Page) id | action_page_id |
address {line1} | address_line_1 |
address {line2} | address_line_2 |
address {region} | address_region |
(Commitment) id | commitment_uid |
created_at (in UTC) | processed_date |
address {country} | address_country |
actionPage {name} | action_page_name |
" https://anedot.com/ " | referrer_to_form |
donations {amount} (x100) | amount_in_dollars |
address {postalCode} | address_postal_code |
Payment Method | payment_description |
customFieldResponses {multiple fields} | custom field_responses {multiple fields} |
(Commitment) schedule_until | commitment_recurring_until |
The fund name in the relay is the Billing Agreement name. If the Billing Agreement name is left blank, the Anedot Account Name will be displayed.
Payload Data
Request Headers
{
"User-Agent": "Anedot-Hookshot/ae49a5d",
"X-Request-Id": "3f99e54b-03d5-44f2-8062-c2561fff4af1",
"X-Integration-Id": "97a64ea7-ee1a-4389-8db6-5e35e7106421",
"X-Integration-Event": "donation_completed",
"X-Request-Signature": "f9c15a4bfda0f5662b0281bc3059885ed9c69ced91f55229d3c50fb39c1b64b7"
}
Request Body
{
"event": "donation_completed",
"payload": {
"date": "2023-01-05 16:58:04 UTC",
"name": "Annie Dot",
"email": "admin@anedot.com",
"phone": "2252501301",
"origin": "hosted",
"prefix": "",
"status": "completed",
"suffix": "",
"payment": "credit_card",
"donation": {
"id": "d3fc8b4dd68300ed3bb4e",
"fees": {
"anedot_fees": {
"amount": "1.22"
},
"vendor_fees": [{
"amount": "1.25",
"account": "Vendor Account Name",
"description": "Donation from Annie Dot"
}]
},
"fund": {
"id": "ec082bf5-b1ed-48e5-b2ba-1c322c308b75",
"name": "General Fund",
"identifier": "141252"
},
"products": [{
"name": "Sticker",
"internal_identifier": "001"
}],
"card_type": "visa",
"card_last_digits": "4242",
"donation_project": "",
"credit_card_expiration": "02/2023"
},
"referrer": "https://anedot-sandbox.com/accounts/ab4ca5ac57b628c89d080/transactions/new",
"frequency": "once",
"last_name": "Dot",
"recurring": "false",
"first_name": "Annie",
"net_amount": "21.78",
"occupation": "",
"updated_at": "2023-01-05 16:58:04 UTC",
"account_uid": "ab4ca5ac57b628c89d080",
"middle_name": "",
"source_code": "",
"account_name": "Anedot",
"address_city": "New Orleans",
"check_number": "",
"event_amount": "23.00",
"employer_name": "",
"action_page_id": "fd6f6939-57a2-458f-a238-603624cc98be",
"address_line_1": "1340 Poydras St",
"address_line_2": "",
"address_region": "LA",
"commitment_uid": "",
"processed_date": "2023-01-05 16:58:04 UTC",
"address_country": "US",
"action_page_name": "Single fund Blackbaud RE",
"referrer_to_form": "",
"amount_in_dollars": "23.0",
"address_postal_code": "98382",
"payment_description": "Visa •••• 4242",
"custom_field_responses": {},
"commitment_recurring_until": ""
}
}
Response Status (Success)
200