Reference · Tools

Action Network

Manage activist organizing data via the Action Network OSDI API v2

Action Marketing v1

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

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Action Network API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Attendanceattendance
Eventevent
Personperson
Person TagpersonTag
Petitionpetition
Signaturesignature
Tagtag

Operations

The operations available depend on the resource you select.

Attendance

OperationValueDescription
CreatecreateRecord a person’s attendance at an event.
GetgetRetrieve one attendance record for an event.
Get ManygetAllList the attendance records for an event.

Event

OperationValueDescription
CreatecreateCreate an event.
GetgetRetrieve one event.
Get ManygetAllList events.

Person

OperationValueDescription
CreatecreateCreate a person.
GetgetRetrieve one person.
Get ManygetAllList people.
UpdateupdateUpdate an existing person.

Person Tag

OperationValueDescription
AddaddApply a tag to a person.
RemoveremoveRemove a tagging from a tag.

Petition

OperationValueDescription
CreatecreateCreate a petition.
GetgetRetrieve one petition.
Get ManygetAllList petitions.
UpdateupdateUpdate an existing petition.

Signature

OperationValueDescription
CreatecreateSign a petition on behalf of a person.
GetgetRetrieve one signature on a petition.
Get ManygetAllList the signatures on a petition.
UpdateupdateUpdate an existing signature.

Tag

OperationValueDescription
CreatecreateCreate a tag.
GetgetRetrieve one tag.
Get ManygetAllList tags.

Parameters

Attendance: Create

ParameterTypeRequiredDefaultDescription
Person IDstringYesID of the person to create an attendance for. Supports expressions.
Event IDstringYesID of the event. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Attendance: Get

ParameterTypeRequiredDefaultDescription
Event IDstringYesID of the event whose attendance to retrieve. Supports expressions.
Attendance IDstringYesID of the attendance to retrieve. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Attendance: Get Many

ParameterTypeRequiredDefaultDescription
Event IDstringYesID of the event whose attendances to list. Supports expressions.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Event: Create

ParameterTypeRequiredDefaultDescription
Origin SystemstringYesSource where the event originated. Supports expressions.
TitlestringYesTitle of the event to create. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Additional FieldscollectionNo{}Optional event fields to send with the new event.
— Browser URLstringNoURL to this event’s page.
— DescriptionstringNoDescription of the event. HTML supported.
— End DatedateTimeNoEnd date and time of the event.
— Featured Image URLstringNoURL to this event’s featured image.
— InstructionsstringNoEvent’s instructions for activists. HTML supported.
— LocationfixedCollectionNo{}Where the event takes place. Uses the same fields as a postal address.
— — PrimarybooleanNofalseWhether this is the person’s primary address.
— — Address LinestringNoLine for a person’s address.
— — LocalitystringNoCity or other local administrative area.
— — RegionstringNoState or subdivision code per ISO 3166-2.
— — Postal CodestringNoRegion-specific postal code, such as ZIP code.
— — CountrystringNoCountry code per ISO 3166-1 Alpha-2. Defaults to US.
— — LanguagestringNoLanguage in which the address is recorded, per ISO 639.
— — LocationfixedCollectionNo{}Geographic coordinates for this address.
— — — LatitudestringNoLatitude of the location.
— — — LongitudestringNoLongitude of the location.
— NamestringNoInternal (not public) title of the event.
— Start DatedateTimeNoStart date and time of the event.

Event: Get

ParameterTypeRequiredDefaultDescription
Event IDstringYesID of the event to retrieve. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Event: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Person: Create

ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Email AddressfixedCollectionNo{}Person’s email addresses.
— AddressstringNoPerson’s email address.
— StatusoptionsNosubscribedSubscription status of this email address.
Options: bouncing, previous bounce, previous spam complaint, spam complaint, subscribed, unsubscribed
Additional FieldscollectionNo{}Optional person fields to send with the new person.
— Family NamestringNoPerson’s last name.
— Given NamestringNoPerson’s first name.
— Language SpokenoptionsNoLanguage 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 NumberfixedCollectionNo{}Person’s phone number.
— — NumberstringNoPerson’s mobile number in international format without plus sign.
— — StatusoptionsNosubscribedSubscription status of this number.
Options: bouncing, previous bounce, subscribed, unsubscribed
— Postal AddressesfixedCollectionNo{}Person’s postal addresses. You can add more than one.
— — PrimarybooleanNofalseWhether this is the person’s primary address.
— — Address LinestringNoLine for a person’s address.
— — LocalitystringNoCity or other local administrative area.
— — RegionstringNoState or subdivision code per ISO 3166-2.
— — Postal CodestringNoRegion-specific postal code, such as ZIP code.
— — CountrystringNoCountry code per ISO 3166-1 Alpha-2. Defaults to US.
— — LanguagestringNoLanguage in which the address is recorded, per ISO 639.
— — LocationfixedCollectionNo{}Geographic coordinates for this address.
— — — LatitudestringNoLatitude of the location.
— — — LongitudestringNoLongitude of the location.

Person: Get

ParameterTypeRequiredDefaultDescription
Person IDstringYesID of the person to retrieve. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Person: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo25Max number of results to return. (shown when Return All is false)
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Person: Update

ParameterTypeRequiredDefaultDescription
Person IDstringYesID of the person to update. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Update FieldscollectionNo{}Person fields to change. Add at least one — the node fails if this is empty.
— Family NamestringNoPerson’s last name.
— Given NamestringNoPerson’s first name.
— Language SpokenoptionsNoLanguage 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 NumberfixedCollectionNo{}Person’s phone number.
— — NumberstringNoPerson’s mobile number in international format without plus sign.
— — StatusoptionsNosubscribedSubscription status of this number.
Options: bouncing, previous bounce, subscribed, unsubscribed
— Postal AddressesfixedCollectionNo{}Person’s postal addresses. You can add more than one.
— — PrimarybooleanNofalseWhether this is the person’s primary address.
— — Address LinestringNoLine for a person’s address.
— — LocalitystringNoCity or other local administrative area.
— — RegionstringNoState or subdivision code per ISO 3166-2.
— — Postal CodestringNoRegion-specific postal code, such as ZIP code.
— — CountrystringNoCountry code per ISO 3166-1 Alpha-2. Defaults to US.
— — LanguagestringNoLanguage in which the address is recorded, per ISO 639.
— — LocationfixedCollectionNo{}Geographic coordinates for this address.
— — — LatitudestringNoLatitude of the location.
— — — LongitudestringNoLongitude of the location.

Person Tag: Add

ParameterTypeRequiredDefaultDescription
Tag IDstringYesID of the tag to add. You can find tag IDs by using the Tag: Get Many operation. Supports expressions.
Person IDstringYesID of the person to add the tag to. Supports expressions.

Person Tag: Remove

ParameterTypeRequiredDefaultDescription
Tag IDstringYesID of the tag whose tagging to delete. You can find tag IDs by using the Tag: Get Many operation. Supports expressions.
Tagging IDstringYesID of the tagging to remove. You can list taggings via the API endpoint GET /tags/{tagId}/taggings. Supports expressions.

Petition: Create

ParameterTypeRequiredDefaultDescription
Origin SystemstringYesSource where the petition originated. Supports expressions.
TitlestringYesTitle of the petition to create. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Additional FieldscollectionNo{}Optional petition fields to send with the new petition.
— Browser URLstringNoURL to this petition’s page.
— Featured Image URLstringNoURL to this petition’s featured image.
— NamestringNoInternal (not public) title of the petition.
— Petition TextstringNoText of the letter to the petition’s target.
— TargetsstringNoComma-separated names of targets for this petition.

Petition: Get

ParameterTypeRequiredDefaultDescription
Petition IDstringYesID of the petition to retrieve. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Petition: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Petition: Update

ParameterTypeRequiredDefaultDescription
Petition IDstringYesID of the petition to update. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Update FieldscollectionNo{}Petition fields to change. Add at least one — the node fails if this is empty.
— Browser URLstringNoURL to this petition’s page.
— Featured Image URLstringNoURL to this petition’s featured image.
— NamestringNoInternal (not public) title of the petition.
— Petition TextstringNoText of the letter to the petition’s target.
— TargetsstringNoComma-separated names of targets for this petition.

Signature: Create

ParameterTypeRequiredDefaultDescription
Petition IDstringYesID of the petition to sign. Supports expressions.
Person IDstringYesID of the person whose signature to create. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Additional FieldscollectionNo{}Optional signature fields to send with the new signature.
— CommentsstringNoComments to leave when signing this petition.

Signature: Get

ParameterTypeRequiredDefaultDescription
Petition IDstringYesID of the petition whose signature to retrieve. Supports expressions.
Signature IDstringYesID of the signature to retrieve. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Signature: Get Many

ParameterTypeRequiredDefaultDescription
Petition IDstringYesID of the petition whose signatures to retrieve. Supports expressions.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Signature: Update

ParameterTypeRequiredDefaultDescription
Petition IDstringYesID of the petition whose signature to update. Supports expressions.
Signature IDstringYesID of the signature to update. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Update FieldscollectionNo{}Signature fields to change. Add at least one — the node fails if this is empty.
— CommentsstringNoComments to leave when signing this petition.

Tag: Create

ParameterTypeRequiredDefaultDescription
NamestringYesName of the tag to create. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Tag: Get

ParameterTypeRequiredDefaultDescription
Tag IDstringYesID of the tag to retrieve. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Tag: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum 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.

ResourceWhat Simplify does
PersonAdds 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.
PetitionAdds id, plus creator (a simplified person) when the API embeds one. Removes identifiers, _links, action_network:hidden, _embedded.
Attendance, Event, Signature, TagAdds id. Removes identifiers, _links, action_network:sponsor, reminders.
Person TagNothing — 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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes 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 BusyBot

Last updated . Spotted something wrong? Tell us.