Skip to content

CRM · Beta

EveryAction
API integration

Ship CRM features without building the integration. Full EveryAction API access via Proxy and 20+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
EveryAction

Use Cases

Why integrate with EveryAction

Common scenarios for SaaS companies building EveryAction integrations for their customers.

01

Sync online donations and recurring commitments into donor records

Fundraising and checkout platforms can push one-time contributions and recurring commitments directly into EveryAction, tagged with source codes so nonprofits can attribute revenue to specific campaigns without manual entry.

02

Write P2P texting and advocacy responses back as survey answers

SMS, petition, and advocacy platforms can identify supporters via people search and post responses as survey questions or activist codes, giving organizers a real-time view of sentiment inside their existing CRM.

03

Load predictive scores and voter file appends at scale

Analytics and data vendors can ship millions of updated scores or Early Vote records into EveryAction using asynchronous bulk file loading jobs, avoiding per-record API calls and keeping field lists fresh.

04

Power event RSVPs and volunteer signups from external tools

Event, ticketing, and volunteer management SaaS can create EveryAction events and register attendees when supporters RSVP externally, keeping the organizing team's CRM as the single source of truth.

05

Enable labor organizing workflows tied to worksites and employers

Union-focused apps can maintain employers, worksites, work areas, shift types, and bargaining unit job classes in EveryAction as reps map shop floors in the field.

What You Can Build

Ship these features with Truto + EveryAction

Concrete product features your team can ship faster by leveraging Truto’s EveryAction integration instead of building from scratch.

01

Contribution and commitment push

Create processed contributions and recurring commitments in EveryAction with source codes and designations attached for ROI tracking.

02

Supporter dedupe and match

Use people search to find or reconcile contacts by vanId, name, email, phone, or DOB before writing new records or actions.

03

Survey question and activist code writeback

Capture responses from your product (texts, forms, calls) and post them as survey question responses or activist code applications on the matched supporter.

04

Event creation and management

Programmatically create EveryAction events from your ticketing or RSVP flow so attendance data lands where organizers already work.

05

Bulk score and Early Vote uploads

Kick off file loading jobs and bulk import jobs to move large CSVs of scores, contacts, or AV/EV data into EveryAction asynchronously.

06

Labor organizing data management

Maintain worksites, work areas, employers, shift types, and bargaining unit job classes for union clients tracking worksite-level organizing.

SuperAI

EveryAction AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_every_action_api_key_profiles

List API key profiles via the EveryAction introspection endpoint, which returns information about the API key currently in use. Returns: databaseName, hasMyVoters, hasMyCampaign, committeeName, apiKeyTypeName, keyReference, userFirstName, userLastName, username, userId.

every_action_people_search

Search for a person in EveryAction using a match candidate such as name, date of birth, phone, or email. Returns: vanId, firstName, lastName, middleName, party, employer, occupation, sex, dateOfBirth, person, customProperties. Providing a valid vanId overrides other search criteria.

get_single_every_action_activist_code_by_id

Get a specific Activist Code in EveryAction by its id. Returns: activistCodeId, type, name, mediumName, shortName, description, scriptQuestion, status. Required: id (either an integer or a VAN encoded identifier such as EID28CG).

create_a_every_action_bulk_import_job

Create a bulk import job in EveryAction by specifying a zipped, delimited file URL and the actions to perform on its data. Supports creating and/or updating Contacts, Contributions, ActivistCodes, and ContactsActivistCodes. Returns: jobId, file, actions. Required: description, file, actions. The zipped file must be no more than 20 MB and the source URL must use SFTP, FTPS, or HTTPS.

create_a_every_action_commitment

Create a Recurring Commitment record in EveryAction and process or initiate the first installment contribution with payment details in the request body. Returns: commitmentId, contributionId. Required: contact, designation, gatewayId, startDate, frequency, amount, paymentMethod. Amount must be $0.01–$999,999.99; an Idempotency-Key header is required.

list_all_every_action_contributions

List recent contributions in EveryAction filtered by vanId. Returns: contactsContributionId, vanId, donorName, donorNameFirstLast, designationId, designationName, dateReceived, amount, amountRemaining, amountRefunded, period, cycle, sourceCodeId, sourceCodeName, sourceCodeDescription, sourceCodeStaticPath, type. Required: vanId.

create_a_every_action_contribution

Create and process a contribution payment in EveryAction with the provided payment information. Returns the integer ID of the created contribution. Required: contact, designation, gatewayId, amount, paymentMethod. Amount must be between $0.01 and $999,999.99 inclusive.

list_all_every_action_disbursements

List recent disbursements in EveryAction filtered by vanId. Returns: contactsDisbursementId, vanId, designationId, date, amount, purpose, period, cycle, sourceCodeName, sourceCodeDescription, sourceCodeStaticPath. Required: vanId. Default page size of 6.

list_all_every_action_early_vote_fields

List early vote fields in EveryAction with optional status filtering. Returns: earlyVoteFieldId, name, type, status, values. The statuses parameter accepts a comma-delimited list of Active and Inactive. Defaults to Active,Inactive.

get_single_every_action_early_vote_field_by_id

Get a single early vote field by id in EveryAction. Returns: earlyVoteFieldId, name, type, status, values, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: id.

delete_a_every_action_employer_by_id

Delete the relationship or link between an Employer and a BargainingUnit in EveryAction by proxy id. This only removes the relation between them, not the entities themselves. Returns an empty 200 response on success. Required: employer_id, id.

create_a_every_action_event

Create a new Event in EveryAction. Returns the integer ID of the newly created Event in the response body. Required: event.

create_a_every_action_file_loading_job

Create a file-loading job in EveryAction by specifying a zipped CSV source file and the action(s) to perform on it. Returns: jobId, listeners, file, actions. Required: description, file (including fileName, sourceUrl, and columns), and actions. Supports Score Load, AV/EV Data File, Saved List Load, and Phones File action types.

list_all_every_action_folders

List all Map Regions in an EveryAction folder. Returns: mapRegionId, name, description, dateCreated, dateRefreshed, mapRoutes. Required: folder_id.

get_single_every_action_folder_by_id

Get a specific Map Region in an EveryAction folder by id. Returns: mapRegionId, name, description, dateCreated, dateRefreshed, mapRoutes, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: folder_id, id.

every_action_folders_refresh

Refresh all Map Regions in an EveryAction folder. Returns an empty object on success. Required: folder_id.

every_action_folders_refresh_item

Refresh a specific Map Region in an EveryAction folder. Returns an empty object on success. Required: folder_id, map_region_id.

list_all_every_action_minivan_exports

List all available MiniVAN Exports in EveryAction. Returns: minivanExportId, name, dateCreated, createdBy, canvassers, eventSignups, databaseMode.

list_all_every_action_printed_lists

List all available Printed Lists in EveryAction, with optional filters by generation date, creator, folder, or turf. Returns: number, name, eventSignups, listSize, folders, dateCreated, createdBy.

list_all_every_action_scores

List committee access details for a specific Score in EveryAction. Returns: scoreId, scoreName, ownerCommittee, committeesWithAccess. Required: score_id.

create_a_every_action_survey_question

Create a new Survey Question in EveryAction. Returns an empty object on success. Required: type, cycle, name, nameOtherLanguage, mediumName, mediumNameOtherLanguage, shortName, shortNameOtherLanguage, scriptQuestion, scriptQuestionOtherLanguage, status, scope, and responses.

update_a_every_action_survey_question_by_id

Update an existing Survey Question in EveryAction by id. Returns an empty object on success. Required: id, surveyQuestionId, type, cycle, name, nameOtherLanguage, mediumName, mediumNameOtherLanguage, shortName, shortNameOtherLanguage, scriptQuestion, scriptQuestionOtherLanguage, status, and responses.

create_a_every_action_voter_registration_batch

Add registrants to a Voter Registration Batch in EveryAction. Returns an array of per-registrant result objects with alternateId, vanId, result, and errors. Required: batch_id. Up to 25 registrants per request; the body must be a bare JSON array without a wrapping key.

update_a_every_action_worksite_by_id

Update an existing Worksite in EveryAction. Returns: worksiteId, name, isPreferred, address, employer, workAreas, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: id, isPreferred.

delete_a_every_action_worksite_by_id

Delete an existing Worksite in EveryAction by id. Returns an empty 200 response on success. Required: id.

delete_a_every_action_employer_bargaining_unit_job_class_by_id

Delete the relationship or link between an Employer, BargainingUnit, and JobClass in EveryAction. This removes only the association between the three entities, not the entities themselves. Returns an empty 200 response on success. Required: employer_id, bargaining_unit_id, id.

delete_a_every_action_employer_shift_type_by_id

Delete the relationship between an Employer and a ShiftType in EveryAction. This removes the link without modifying either the Employer or the ShiftType itself. Returns an empty 200 response on success. Required: employer_id, id.

update_a_every_action_work_area_by_id

Update an existing WorkArea in EveryAction. Returns: workAreaId, name, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: id, worksite_id.

delete_a_every_action_work_area_by_id

Delete an existing WorkArea in EveryAction. Returns an empty 204 response on success. Required: id, worksite_id.

Why Truto

Why use Truto’s MCP server for EveryAction

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with EveryAction in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s EveryAction account

Use Truto’s frontend SDK to connect your customer’s EveryAction account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call EveryAction

Truto’s Proxy API is a 1-to-1 mapping of the EveryAction API. You call us, we call EveryAction, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate EveryAction’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about EveryAction on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How does authentication work for EveryAction?

EveryAction uses API key authentication scoped to a specific committee or database profile. Truto handles credential storage and injection per end user, and you can list the available API key profiles for a connected account to route requests to the correct database.

How do we avoid creating duplicate supporter records?

Use the people search endpoint first to match on vanId (the canonical identifier) or a combination of name, email, phone, and date of birth. Only fall back to record creation flows when no confident match is returned.

What's the best way to load large volumes of data?

For anything over a few thousand records — score updates, contact appends, Early Vote data — use the file loading job or bulk import job endpoints rather than per-record calls. These are asynchronous and designed for high-volume ingestion.

Can we track marketing attribution on donations we push in?

Yes. When creating contributions or commitments, you can attach source codes and designations so the nonprofit can attribute revenue to specific campaigns, ads, or appeals directly inside EveryAction reporting.

Does the integration support labor union data models?

Yes. The available endpoints cover worksites, work areas, employers, shift types, and employer bargaining unit job classes, including update and delete operations for maintaining accurate worksite mappings.

How fresh is data read from EveryAction?

Reads through endpoints like contributions, disbursements, folders, scores, and printed lists reflect the current state of the EveryAction database at request time. For folder-backed lists, refresh endpoints are available to force recomputation before pulling.

EveryAction

Get EveryAction integrated into your app

Our team understands what it takes to make a EveryAction integration successful. A short, crisp 30 minute call with folks who understand the problem.