<!-- BusyBot node reference — https://busybot.net/tools/action-network/ -->

> Node: Action Network (`action_network`) · Action · v1
> Category: Marketing · Credentials: Action Network API (`actionNetworkApi`)
> Updated: 2026-08-16

# 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](https://busybot.net/credentials/action-network-api/) 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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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.