Crimson by CMDI
Updated over a week ago

Crimson by CMDI is a political CRM for Republican campaigns, committees, PACs, and organizations of all sizes. Anedot's integration with Crimson sends data collected from Action Pages to the Crimson system.


Connect Anedot to Crimson

To connect Anedot to Crimson, follow the steps below:

  1. Before connecting Anedot to Crimson, be sure to complete Onboarding for the fundraising account. Onboarding can be completed from the fundraising accounts's Dashboard. This step ensures that the first Donation Page for the account is created along with all required Presets. Bypassing Onboarding may cause the Anedot connection to Crimson to fail.

  2. Once Onboarding has been completed, access the Settings>Integrations>Directory tab within your fundraising account.

  3. Click the blue + New Connection button in the upper right corner of the Directory.

  4. Select Crimson from the Directory list.

  5. Select the Action Pages you would like synced with Crimson. The default is All Pages.

    1. To exclude pages, enter a comma-separated list of the Action Page IDs

    2. Optionally, you can scope the integration to only send team-specific data to Crimson.

  6. Apply your CMDI API Token.

  7. Click the blue Save button to complete!

Once the integration has been connected successfully, the CMDI Data Entry Page will automatically be created.


Data Relays

Anedot only relays data from Donation Pages (balance impacting transactions). Lead Page data cannot be relayed at this time.

The following Custom Fields are supported:

  • batchno

  • batchdate

  • pid

  • campgncode

  • chapcode

  • comment

  • refno

  • source_code

  • trackno


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

email

email

phone

phone

donations {origin}

origin

prefix

prefix

(Donation) status

status

suffix

suffix

paymentMethod {type}

payment

(Donation) id

donation {id}

anedotFeeAmount (net amt in Donations -> Entries)

donation {fees {anedot_fees {amount} }}

vendorFeeAmount (net amt in Donations -> 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 Donation - 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

referrer_to_form

donations {amount} (x100)

amount_in_dollars

address {postalCode}

address_postal_code

Transactions Side-drawer Payment Method

payment_description

customFieldResponses {multiple fields}

customfield_responses {_multiple fields}

(Commitment) schedule_until

commitment_recurring_until

Tip: 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.


Example Payloads

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": "Anna Dote",
"email": "[email protected]",
"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 Anna Dote"
}]
},
"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": "Dote",
"recurring": "false",
"first_name": "Anna",
"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": "123 Anedot Way",
"address_line_2": "",
"address_region": "LA",
"commitment_uid": "",
"processed_date": "2023-01-05 16:58:04 UTC",
"address_country": "US",
"action_page_name": "Donation Page 1",
"referrer_to_form": "",
"amount_in_dollars": "23.0",
"address_postal_code": "99999",
"payment_description": "Visa β€’β€’β€’β€’ 4242",
"custom_field_responses": {},
"commitment_recurring_until": ""
}
}


Request Body (Success)

"request catcher <h1>request catcher</h1> No requests have been received yet :( <span class=\"code\"> curl -X POST -d 'Hello World!' https://<span>requestcatcher.com</span>/test </span> <a href=\"https://m.do.co/c/fd00053f4fc6\ " target=\"_blank\">Hosted on DigitalOcean. Get a $200 credit and support Request Catcher.</a> !function(e,a,t,n,g,c,o){e.GoogleAnalyticsObject=g,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),o=a.getElementsByTagName(t)[0],c.async=1,c.src=\"//www.google-analytics.com/analytics.js\",o.parentNode.insertBefore(c,o)} .(window,document,\"script\",0\"ga\"),ga(\"create\",\"UA-55875288-1\",\"auto\"),ga(\"send\",\"pageview\")); "

Did this answer your question?