Fundraising & payments
Ballot Signal + Anedot
What is Anedot?
Cross-partisan, signs its webhooks properly, and natively carries a communications-consent flag — the closest thing to a consent-native fundraising platform.
It sits in the Fundraising & payments category of a campaign stack. Match giving history to the visitor who never filled out the form.
Who uses it
Nonpartisan. Used across both parties and by nonpartisan organizations.
How the Ballot Signal + Anedot integration works
Anedot has the cleanest webhook security model of the fundraising set: events for submission, donation and commitment, delivered to an HTTPS endpoint with a SHA-256 HMAC signature in the X-Request-Signature header, and auto-stopped after 1000 consecutive failures. Ballot Signal matches on email and enriches the supporter record. Anedot also carries a Communications Consent toggle that only relays opted-in mobile numbers — we read it and write it onto the supporter record, so its consent state and ours agree before anything reaches a texting platform.
What syncs
- Submissions
- Donations
- Commitments
- Communications Consent flag
Field mapping
The supporter record is the same shape everywhere. What changes is where each field lands. The full record is documented on what you get.
| Supporter record | Fundraising object | Notes |
|---|---|---|
| firstName, lastName | Donor record (matched, not created) | Left empty rather than guessed when resolution is not confident. |
| Donor record (matched, not created) — primary identifier | Primary match key. Lowercased before hashing. | |
| phone | Donor record (matched, not created) — phone field | Present does not imply consent to be contacted on it. |
| addressLine1, city, state, zip | Donor record (matched, not created) — address fields | Third dedupe fallback. |
| consentTimestamp | Carried onto the supporter record | ISO 8601, UTC. |
| consentVersion | Carried onto the supporter record | The language in force at the moment of consent. |
| consentSource | Carried onto the supporter record | The exact page URL where consent was captured. |
| consentCategories | Carried onto the supporter record | Normalized from your consent platform. |
| intentSignals | Fundraising page / form | Donate-page, volunteer-page, issue-page and any you define. |
| utmSource, utmMedium, utmCampaign, referrer | Carried onto the supporter record or source fields | Carried verbatim. |
| dedupeKey | Match key | Lowercased email hash. Match order: dedupeKey, then phone, then name + address. |
How to set it up
- 1
In Anedot, go to Settings → Integrations and add a webhook.
- 2
Paste the Ballot Signal HTTPS endpoint and copy the signing secret into Ballot Signal.
- 3
Select events: submission, donation, commitment.
- 4
Confirm the Communications Consent toggle is configured the way your texting program requires.
- 5
Send a test submission and verify the signature validates and the supporter record is enriched.
- 6
Watch the failure counter during the first week — Anedot disables a webhook after 1000 failed attempts.
Why it matters
Cross-partisan, signs its webhooks properly, and natively carries a communications-consent flag — the closest thing to a consent-native fundraising platform.
Related integrations
All Fundraising & payments →ActBlue
Turns 'this person read the donate page' into 'this person read the donate page and has given twice before' — the single most useful enrichment on the Democratic side.
WinRed
The GOP donation rail, and bundler_id is an official, supported attribution parameter — not a hack.
Ballot Signal + Anedot: questions
Is the Anedot integration available today?
Via webhook. Not a native connector. This works today through our signed universal webhook, and someone on your side (or your consultant) wires up the endpoint. Full supporter record, full consent record, no UI.
What authentication does the Anedot integration use?
Webhook with SHA-256 HMAC signature (X-Request-Signature header). Credentials are stored encrypted and are never rendered back into the interface after entry.
Will this create duplicate records in Anedot?
No, assuming you leave deduplication on. We match on the lowercased-email hash first, then phone, then name plus address. On a match we update rather than create, and only the fields you have marked overwritable.
Does the consent record travel into Anedot?
Yes. Consent timestamp, consent version, consent source URL and granted categories are included in every push, by default, and there is no configuration that strips them. That is the point of the product.
See what your own website already knows.
Book a 20-minute walkthrough. We will look at your site's current consent posture first — that part is useful whether or not you buy anything.