Product
The supporter record, field by field.
One record shape, delivered identically to every destination. Short, documented, and with nothing inferred in it.
Contact
| Field | Type | Notes |
|---|---|---|
| firstName | string | Resolved given name. Empty when resolution returns no confident name — we leave it empty rather than guessing. |
| lastName | string | Resolved family name. |
| string | Primary match key. Normalized to lowercase before hashing. | |
| phone | string | E.164 normalized. Present does not mean textable — see the consent fields. |
| addressLine1 | string | Street address where resolved. |
| city | string | — |
| state | string | Two-letter code. |
| zip | string | Five-digit, plus four where available. |
Consent (the audit trail)
| Field | Type | Notes |
|---|---|---|
| consentTimestamp | ISO 8601 | UTC. When the affirmative act occurred. |
| consentVersion | string | The version of the consent language and policy in force at that moment. |
| consentSource | URL | The exact page URL where consent was captured. |
| consentCategories | string[] | Categories granted, normalized from your consent management platform. |
Intent
| Field | Type | Notes |
|---|---|---|
| pagesViewed | string[] | Ordered list of pages viewed after consent. |
| intentSignals | string[] | Derived labels — donate-page, volunteer-page, issue-page — that you map to tags and activist codes. |
Attribution
| Field | Type | Notes |
|---|---|---|
| utmSource | string | From the landing URL. |
| utmMedium | string | From the landing URL. |
| utmCampaign | string | From the landing URL. Sloppy UTM discipline upstream makes all of this useless downstream. |
| referrer | string | Document referrer at session entry. |
Identity
| Field | Type | Notes |
|---|---|---|
| resolvedVia | string | Which method produced the identification. |
| dedupeKey | hash | Hash of the lowercased email. The join key across every destination. |
Matching
The dedupe rule, written down
- 1
dedupeKey
Hash of the lowercased email address. Tried first, always.
- 2
phone
E.164 normalized. Tried when there is no email match.
- 3
name + address
Last resort, and the only one with meaningful false-positive risk.
On a match we update; on no match we create. Which fields are overwritable on update is your configuration, per destination — so a CRM that is your source of truth for phone numbers can be set never to accept ours.
Defensibility
What makes the record hold up
For TCPA and 10DLC purposes, the fields that matter are not the contact fields. They are the four consent fields, and whether they were captured before anything else happened.
- · The exact language shown, versioned.
- · The timestamp of the affirmative act.
- · The specific page URL, not just the domain.
- · The categories granted, so channel-level consent is separable.
Where it goes
The same record, mapped per category
CRM & voter contact
Supporter record → a person/contact object, with consent fields written to custom fields or tags, and page-intent signals written as activity, tags, or survey responses.
Fundraising & payments
Supporter record ↔ donor record matched by lowercased email, enriched with the platform's contribution identifiers, recurring identifiers, and the fundraising page or form the gift came through.
Email & SMS
Supporter record → subscriber/profile, with consent timestamp, consent version, and source URL written to custom fields, plus a tag or list assignment describing the intent that produced the record.
Website builders & CMS
Site → embed. The snippet reads your consent management platform's state, stays inert until consent is granted, and then reports page-intent signals against the consented visitor.
Consent & privacy
CMP category state → normalized internal consent object → gate. Nothing fires, and no identifier is generated, until the mapped categories read 'granted'.
Automation
Supporter record → JSON payload (HMAC-signed) or flat CSV row, with every consent field included by default so the receiving system inherits the evidence.
Voter data
Not yet available. When a voter-file partnership closes, the mapping will be supporter record → matched voter record, with the match confidence and the provider recorded on the supporter record.
Ads & analytics
Supporter record → server-side conversion event, with hashed identifiers only, sent exclusively for visitors whose consent state includes ad-related categories.
The integration layer
Works with your stack
53 platforms across eight categories, each carrying an honest status label — including the ones that say "coming soon" and "partner-only."
Text wordmarks only — we do not display partner logos without written permission, and a badge here never implies an endorsement or a native connector. The status on each partner page is the claim; this wall is just the map. Not seeing yours? Request an integration.
Questions people actually ask
What is not on this list?
Party registration, vote history, precinct or district assignment, party support scores and modeled turnout scores. All of those require voter file access we do not have. That is explained in full on voter file rules.
Can we add custom fields?
You can map any field on this record into custom fields in your destinations, and you can derive additional intent signals from page paths. What you cannot do is append data we do not collect — we would rather have a short honest schema than a long one with inferred fields in it.
How do you handle records with partial data?
We deliver what resolved and leave the rest empty. An empty lastName means resolution did not return one with confidence, not that we guessed and got it wrong. Configure your destinations to tolerate empty fields rather than rejecting the record.
What does the dedupe key protect against?
The same person appearing three times because three tools each created their own record. One key, applied identically in every destination, is what keeps your CRM and your email list converging instead of drifting apart by September.
Can we get this as a flat file?
Yes. CSV export is on every plan, on demand, including all consent columns, and scheduled exports can be delivered to your own SFTP or object storage.
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.