---
title: EveryAction API Integration on Truto
slug: everyaction
category: CRM
canonical: "https://truto.one/integrations/detail/everyaction/"
---

# EveryAction API Integration on Truto



**Category:** CRM  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 29 tools for EveryAction that AI agents can call directly.

- **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.

## How it works

1. **Link your customer's EveryAction account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach EveryAction.** The Proxy API is a 1-to-1 mapping of the EveryAction API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **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.
- **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.
- **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.
- **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.
- **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

- **Contribution and commitment push** — Create processed contributions and recurring commitments in EveryAction with source codes and designations attached for ROI tracking.
- **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.
- **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.
- **Event creation and management** — Programmatically create EveryAction events from your ticketing or RSVP flow so attendance data lands where organizers already work.
- **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.
- **Labor organizing data management** — Maintain worksites, work areas, employers, shift types, and bargaining unit job classes for union clients tracking worksite-level organizing.

## FAQs

### 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.
