CRM & voter contact

Ballot Signal + Salesforce

Via Zapier Zapier Nonpartisan OAuth2 (via Zapier) — native REST planned

What is Salesforce?

The enterprise floor for large PACs, advocacy organizations and party committees with real IT governance.

It sits in the CRM & voter contact category of a campaign stack. Your campaign's system of record — where every supporter eventually lands.

Who uses it

Nonpartisan. Used across both parties and by nonpartisan organizations.

How the Ballot Signal + Salesforce integration works

Today the supporter record reaches Salesforce through Zapier or the universal webhook, mapping to Contact or Lead with consent fields written to custom fields on the same object, and optional CampaignMember creation to attribute the supporter to a specific campaign. A native AppExchange listing would add packaged custom fields and a managed setup flow — that work is gated behind Salesforce's security review, which costs $999 per submission attempt for paid apps, takes roughly six to nine weeks for a first pass plus two to three weeks per resubmission, and which about half of first-time submissions fail. ISVforce partners also pay a 15% revenue share. We will label this native when it is native.

What syncs

  • Contact
  • Lead
  • Campaign
  • CampaignMember

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 field mapping
Supporter record CRM object Notes
firstName, lastName Person / contact record Left empty rather than guessed when resolution is not confident.
email Person / contact record — primary identifier Primary match key. Lowercased before hashing.
phone Person / contact record — phone field Present does not imply consent to be contacted on it.
addressLine1, city, state, zip Person / contact record — address fields Third dedupe fallback.
consentTimestamp Custom fields or survey responses ISO 8601, UTC.
consentVersion Custom fields or survey responses The language in force at the moment of consent.
consentSource Custom fields or survey responses The exact page URL where consent was captured.
consentCategories Custom fields or survey responses Normalized from your consent platform.
intentSignals Tags or activist codes Donate-page, volunteer-page, issue-page and any you define.
utmSource, utmMedium, utmCampaign, referrer Custom fields or survey responses 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. 1

    Create custom fields on Contact (or Lead) for consent timestamp, consent version, consent source URL and consent categories.

  2. 2

    In Zapier, create a Zap with Ballot Signal as the trigger ('New identified supporter').

  3. 3

    Choose the Salesforce action — Create Record or Find and Update Record — and map every supporter field, including the consent fields.

  4. 4

    Add a Find Record step first if you want update-on-match rather than always-create.

  5. 5

    Alternatively, point the Ballot Signal universal webhook at a Salesforce Apex REST endpoint if your org prefers no third-party middleware.

  6. 6

    Test with a single record before turning the Zap on.

Why it matters

The enterprise floor for large PACs, advocacy organizations and party committees with real IT governance.

Ballot Signal + Salesforce: questions

Is the Salesforce integration available today?

Via Zapier. Not a native connector. This works today through our Zapier app, which means you will build and maintain a Zap and you may need a paid Zapier plan for the volume. It works — it is just not us doing the work.

What authentication does the Salesforce integration use?

OAuth2 (via Zapier) — native REST planned. Credentials are stored encrypted and are never rendered back into the interface after entry.

Will this create duplicate records in Salesforce?

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 Salesforce?

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.