Reference · Tools
Action Network
Manage activist organizing data via the Action Network OSDI API v2
The Action Network node connects your BusyBot workflows to your Action Network organizing data through the OSDI v2 API. You can create and update supporter records, record petition signatures or event attendances, manage tags, and pull lists of people or events — for example, automatically tagging everyone who signs a petition and adding them to a follow-up email sequence.
- Node type
- Action
- Parameters
- 77
- Outputs
- Output, Error
- Credentials
- Action Network API
Action Network
Manage people, events, petitions, and tags for nonprofit advocacy on Action Network.
Overview
Action Network is a nonprofit advocacy and organizing platform. This node manages people, events, petitions, signatures, attendances, tags, and person-tag associations through the Action Network OSDI (Open Supporter Data Interface) API v2, so you can create, retrieve, update, and list the records behind an advocacy campaign from a workflow.
Category: Marketing
Tool Name: action_network
Version: 1
Appearance: Icon: lucide-Megaphone | Color: #9B59B6
Node Type
Action — processes input items and produces output
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Action Network API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Attendance | attendance |
| Event | event |
| Person | person |
| Person Tag | personTag |
| Petition | petition |
| Signature | signature |
| Tag | tag |
Operations
The operations available depend on the resource you select.
Attendance
| Operation | Value | Description |
|---|---|---|
| Create | create | Record a person’s attendance at an event. |
| Get | get | Retrieve one attendance record for an event. |
| Get Many | getAll | List the attendance records for an event. |
Event
| Operation | Value | Description |
|---|---|---|
| Create | create | Create an event. |
| Get | get | Retrieve one event. |
| Get Many | getAll | List events. |
Person
| Operation | Value | Description |
|---|---|---|
| Create | create | Create a person. |
| Get | get | Retrieve one person. |
| Get Many | getAll | List people. |
| Update | update | Update an existing person. |
Person Tag
| Operation | Value | Description |
|---|---|---|
| Add | add | Apply a tag to a person. |
| Remove | remove | Remove a tagging from a tag. |
Petition
| Operation | Value | Description |
|---|---|---|
| Create | create | Create a petition. |
| Get | get | Retrieve one petition. |
| Get Many | getAll | List petitions. |
| Update | update | Update an existing petition. |
Signature
| Operation | Value | Description |
|---|---|---|
| Create | create | Sign a petition on behalf of a person. |
| Get | get | Retrieve one signature on a petition. |
| Get Many | getAll | List the signatures on a petition. |
| Update | update | Update an existing signature. |
Tag
| Operation | Value | Description |
|---|---|---|
| Create | create | Create a tag. |
| Get | get | Retrieve one tag. |
| Get Many | getAll | List tags. |
Parameters
Attendance: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Person ID | string | Yes | — | ID of the person to create an attendance for. Supports expressions. |
| Event ID | string | Yes | — | ID of the event. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Attendance: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Event ID | string | Yes | — | ID of the event whose attendance to retrieve. Supports expressions. |
| Attendance ID | string | Yes | — | ID of the attendance to retrieve. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Attendance: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Event ID | string | Yes | — | ID of the event whose attendances to list. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Event: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Origin System | string | Yes | — | Source where the event originated. Supports expressions. |
| Title | string | Yes | — | Title of the event to create. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Additional Fields | collection | No | {} | Optional event fields to send with the new event. |
| — Browser URL | string | No | — | URL to this event’s page. |
| — Description | string | No | — | Description of the event. HTML supported. |
| — End Date | dateTime | No | — | End date and time of the event. |
| — Featured Image URL | string | No | — | URL to this event’s featured image. |
| — Instructions | string | No | — | Event’s instructions for activists. HTML supported. |
| — Location | fixedCollection | No | {} | Where the event takes place. Uses the same fields as a postal address. |
| — — Primary | boolean | No | false | Whether this is the person’s primary address. |
| — — Address Line | string | No | — | Line for a person’s address. |
| — — Locality | string | No | — | City or other local administrative area. |
| — — Region | string | No | — | State or subdivision code per ISO 3166-2. |
| — — Postal Code | string | No | — | Region-specific postal code, such as ZIP code. |
| — — Country | string | No | — | Country code per ISO 3166-1 Alpha-2. Defaults to US. |
| — — Language | string | No | — | Language in which the address is recorded, per ISO 639. |
| — — Location | fixedCollection | No | {} | Geographic coordinates for this address. |
| — — — Latitude | string | No | — | Latitude of the location. |
| — — — Longitude | string | No | — | Longitude of the location. |
| — Name | string | No | — | Internal (not public) title of the event. |
| — Start Date | dateTime | No | — | Start date and time of the event. |
Event: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Event ID | string | Yes | — | ID of the event to retrieve. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Event: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Person: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Email Address | fixedCollection | No | {} | Person’s email addresses. |
| — Address | string | No | — | Person’s email address. |
| — Status | options | No | subscribed | Subscription status of this email address. |
Options: bouncing, previous bounce, previous spam complaint, spam complaint, subscribed, unsubscribed | ||||
| Additional Fields | collection | No | {} | Optional person fields to send with the new person. |
| — Family Name | string | No | — | Person’s last name. |
| — Given Name | string | No | — | Person’s first name. |
| — Language Spoken | options | No | — | Language spoken by the person. |
Options: da (Danish), nl (Dutch), en (English), fi (Finnish), fr (French), de (German), hu (Hungarian), id (Indonesian), ja (Japanese), pt (Portuguese - Portugal), br (Portuguese - Brazil), ru (Rumanian), es (Spanish), sv (Swedish), tr (Turkish), cy (Welsh) | ||||
| — Phone Number | fixedCollection | No | {} | Person’s phone number. |
| — — Number | string | No | — | Person’s mobile number in international format without plus sign. |
| — — Status | options | No | subscribed | Subscription status of this number. |
Options: bouncing, previous bounce, subscribed, unsubscribed | ||||
| — Postal Addresses | fixedCollection | No | {} | Person’s postal addresses. You can add more than one. |
| — — Primary | boolean | No | false | Whether this is the person’s primary address. |
| — — Address Line | string | No | — | Line for a person’s address. |
| — — Locality | string | No | — | City or other local administrative area. |
| — — Region | string | No | — | State or subdivision code per ISO 3166-2. |
| — — Postal Code | string | No | — | Region-specific postal code, such as ZIP code. |
| — — Country | string | No | — | Country code per ISO 3166-1 Alpha-2. Defaults to US. |
| — — Language | string | No | — | Language in which the address is recorded, per ISO 639. |
| — — Location | fixedCollection | No | {} | Geographic coordinates for this address. |
| — — — Latitude | string | No | — | Latitude of the location. |
| — — — Longitude | string | No | — | Longitude of the location. |
Person: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Person ID | string | Yes | — | ID of the person to retrieve. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Person: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 25 | Max number of results to return. (shown when Return All is false) |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Person: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Person ID | string | Yes | — | ID of the person to update. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Update Fields | collection | No | {} | Person fields to change. Add at least one — the node fails if this is empty. |
| — Family Name | string | No | — | Person’s last name. |
| — Given Name | string | No | — | Person’s first name. |
| — Language Spoken | options | No | — | Language spoken by the person. |
Options: da (Danish), nl (Dutch), en (English), fi (Finnish), fr (French), de (German), hu (Hungarian), id (Indonesian), ja (Japanese), pt (Portuguese - Portugal), br (Portuguese - Brazil), ru (Rumanian), es (Spanish), sv (Swedish), tr (Turkish), cy (Welsh) | ||||
| — Phone Number | fixedCollection | No | {} | Person’s phone number. |
| — — Number | string | No | — | Person’s mobile number in international format without plus sign. |
| — — Status | options | No | subscribed | Subscription status of this number. |
Options: bouncing, previous bounce, subscribed, unsubscribed | ||||
| — Postal Addresses | fixedCollection | No | {} | Person’s postal addresses. You can add more than one. |
| — — Primary | boolean | No | false | Whether this is the person’s primary address. |
| — — Address Line | string | No | — | Line for a person’s address. |
| — — Locality | string | No | — | City or other local administrative area. |
| — — Region | string | No | — | State or subdivision code per ISO 3166-2. |
| — — Postal Code | string | No | — | Region-specific postal code, such as ZIP code. |
| — — Country | string | No | — | Country code per ISO 3166-1 Alpha-2. Defaults to US. |
| — — Language | string | No | — | Language in which the address is recorded, per ISO 639. |
| — — Location | fixedCollection | No | {} | Geographic coordinates for this address. |
| — — — Latitude | string | No | — | Latitude of the location. |
| — — — Longitude | string | No | — | Longitude of the location. |
Person Tag: Add
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Tag ID | string | Yes | — | ID of the tag to add. You can find tag IDs by using the Tag: Get Many operation. Supports expressions. |
| Person ID | string | Yes | — | ID of the person to add the tag to. Supports expressions. |
Person Tag: Remove
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Tag ID | string | Yes | — | ID of the tag whose tagging to delete. You can find tag IDs by using the Tag: Get Many operation. Supports expressions. |
| Tagging ID | string | Yes | — | ID of the tagging to remove. You can list taggings via the API endpoint GET /tags/{tagId}/taggings. Supports expressions. |
Petition: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Origin System | string | Yes | — | Source where the petition originated. Supports expressions. |
| Title | string | Yes | — | Title of the petition to create. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Additional Fields | collection | No | {} | Optional petition fields to send with the new petition. |
| — Browser URL | string | No | — | URL to this petition’s page. |
| — Featured Image URL | string | No | — | URL to this petition’s featured image. |
| — Name | string | No | — | Internal (not public) title of the petition. |
| — Petition Text | string | No | — | Text of the letter to the petition’s target. |
| — Targets | string | No | — | Comma-separated names of targets for this petition. |
Petition: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Petition ID | string | Yes | — | ID of the petition to retrieve. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Petition: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Petition: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Petition ID | string | Yes | — | ID of the petition to update. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Update Fields | collection | No | {} | Petition fields to change. Add at least one — the node fails if this is empty. |
| — Browser URL | string | No | — | URL to this petition’s page. |
| — Featured Image URL | string | No | — | URL to this petition’s featured image. |
| — Name | string | No | — | Internal (not public) title of the petition. |
| — Petition Text | string | No | — | Text of the letter to the petition’s target. |
| — Targets | string | No | — | Comma-separated names of targets for this petition. |
Signature: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Petition ID | string | Yes | — | ID of the petition to sign. Supports expressions. |
| Person ID | string | Yes | — | ID of the person whose signature to create. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Additional Fields | collection | No | {} | Optional signature fields to send with the new signature. |
| — Comments | string | No | — | Comments to leave when signing this petition. |
Signature: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Petition ID | string | Yes | — | ID of the petition whose signature to retrieve. Supports expressions. |
| Signature ID | string | Yes | — | ID of the signature to retrieve. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Signature: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Petition ID | string | Yes | — | ID of the petition whose signatures to retrieve. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Signature: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Petition ID | string | Yes | — | ID of the petition whose signature to update. Supports expressions. |
| Signature ID | string | Yes | — | ID of the signature to update. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Update Fields | collection | No | {} | Signature fields to change. Add at least one — the node fails if this is empty. |
| — Comments | string | No | — | Comments to leave when signing this petition. |
Tag: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Name | string | Yes | — | Name of the tag to create. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Tag: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Tag ID | string | Yes | — | ID of the tag to retrieve. Supports expressions. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Tag: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
The Action Network record is merged onto the incoming item JSON — the fields you already had stay on the item, and any field of the same name is overwritten by the API response. Binary data on the input item is forwarded unchanged.
Single-record operations produce one output item per input item. The Get Many operations fan out: they emit one output item per record returned, so an input item that lists 40 events leaves 40 items on the Output port. Use Return All and Limit to control how many.
With Simplify on (the default), the record is flattened before it is merged: an id field is added, taken from the record’s own link, and the OSDI bookkeeping fields are dropped. With Simplify off, the record is merged exactly as the API returned it, _links and all.
| Resource | What Simplify does |
|---|---|
| Person | Adds id, plus email_address, phone_number, postal_address and language_spoken taken from the primary entries. Removes identifiers, _links, email_addresses, phone_numbers, postal_addresses, languages_spoken. |
| Petition | Adds id, plus creator (a simplified person) when the API embeds one. Removes identifiers, _links, action_network:hidden, _embedded. |
| Attendance, Event, Signature, Tag | Adds id. Removes identifiers, _links, action_network:sponsor, reminders. |
| Person Tag | Nothing — the Person Tag operations have no Simplify parameter and always merge the raw response. |
A simplified person looks like this, with the rest of the fields being whatever Action Network stores for that record:
{
"id": "c2f3a1b0-5d6e-4f70-8a91-2b3c4d5e6f70",
"given_name": "Jane",
"family_name": "Activist",
"email_address": "jane@example.org",
"phone_number": "15551234567",
"postal_address": {
"address_lines": "123 Main St",
"locality": "Berkeley",
"region": "CA",
"postal_code": "94704",
"country": "US"
},
"language_spoken": "en"
}
Person Tag: Remove deletes a tagging and the API returns no body, so its output item is the input item unchanged — check the Error port or the error handling mode to confirm the delete succeeded.
Reference the result downstream by expression, for example {{ $json.id }}.
Usage Examples
- Create a new person in Action Network with email address
- List all events from Action Network
- Create a petition and gather signatures
- Tag a person in Action Network
- Record attendance for an event
Example Configuration
Create a person from an incoming item, with a subscribed primary email address and their name:
{
"type": "action_network",
"parameters": {
"resource": "person",
"operation": "create",
"simple": true,
"email_addresses": {
"email_addresses_fields": {
"address": "{{ $json.email }}",
"status": "subscribed"
}
},
"additionalFields": {
"given_name": "{{ $json.firstName }}",
"family_name": "{{ $json.lastName }}",
"languages_spoken": "en"
}
}
}
Apply an existing tag to that person:
{
"type": "action_network",
"parameters": {
"resource": "personTag",
"operation": "add",
"tagId": "8f14e45f-ceea-467a-9f4e-1c2b3a4d5e6f",
"personId": "{{ $json.id }}"
}
}
Create an event with a street address and coordinates:
{
"type": "action_network",
"parameters": {
"resource": "event",
"operation": "create",
"originSystem": "Field Team Signup",
"title": "{{ $json.title }}",
"simple": true,
"additionalFields": {
"description": "{{ $json.summary }}",
"start_date": "{{ $json.startsAt }}",
"end_date": "{{ $json.endsAt }}",
"location": {
"postal_addresses_fields": {
"primary": true,
"address_lines": "123 Main St",
"locality": "San Francisco",
"region": "CA",
"postal_code": "94102",
"country": "US",
"location": {
"location_fields": {
"latitude": "37.7749",
"longitude": "-122.4194"
}
}
}
}
}
}
}
List the first 50 events, one output item per event:
{
"type": "action_network",
"parameters": {
"resource": "event",
"operation": "getAll",
"returnAll": false,
"limit": 50,
"simple": true
}
}
Sign a petition on behalf of a person and leave a comment:
{
"type": "action_network",
"parameters": {
"resource": "signature",
"operation": "create",
"petitionId": "{{ $json.petitionId }}",
"personId": "{{ $json.personId }}",
"simple": true,
"additionalFields": {
"comments": "{{ $json.comment }}"
}
}
}
Update a person’s surname and preferred language:
{
"type": "action_network",
"parameters": {
"resource": "person",
"operation": "update",
"personId": "{{ $json.id }}",
"simple": true,
"updateFields": {
"family_name": "{{ $json.lastName }}",
"languages_spoken": "es"
}
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Manage people, events, petitions, signatures, attendances, and tags on Action Network for nonprofit advocacy campaigns.
Frequently asked questions
What credential do I need to connect this node to Action Network?
You need an Action Network API credential, configured in BusyBot as the 'Action Network API' (actionNetworkApi) type. You can generate an API key from your Action Network account settings under the API & Sync section. Each key is scoped to a single Action Network group, so if you manage multiple groups you'll need a separate credential for each.
What kinds of records can this node actually create or modify?
The node covers seven record types: people, events, petitions, signatures, attendances, tags, and person-tag associations. That means you can do things like create a new supporter profile, record that a specific person signed a specific petition, tag a person, or retrieve a paginated list of attendees for an event — all from within a single workflow.
What happens when the API call fails — does the workflow just stop?
No. The node has two separate outputs: Output and Error. A failed API call routes to the Error output rather than halting the workflow, so you can wire up a separate branch to log the failure, send an alert, or retry without losing the rest of your automation.
How many operations does this node support, and is there anything complex about its setup?
The node exposes 77 parameters covering create, retrieve, update, and list operations across all supported record types. The parameter set is large because Action Network's OSDI data model has distinct endpoints and fields for each resource — selecting the right resource and operation first will narrow down the relevant fields significantly.
Is this node suitable for syncing supporter data from an external CRM into Action Network?
Yes, that's a common use case. You can use the People resource operations to create new person records or update existing ones in Action Network from data arriving via another node in your workflow. Pair it with the tag and person-tag operations to segment incoming supporters automatically based on their source or attributes.
Build with the Action Network node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Action Network API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.