<!-- BusyBot node reference — https://busybot.net/tools/active-campaign/ -->

> Node: ActiveCampaign (`active_campaign`) · Action · v1
> Category: Marketing · Credentials: ActiveCampaign API (`activeCampaignApi`)
> Updated: 2026-08-16

# ActiveCampaign

> Manage contacts, accounts, deals, tags, lists, and e-commerce data in ActiveCampaign.

## Overview

ActiveCampaign is a marketing automation platform that combines email marketing, CRM and sales automation. This node reads and writes your ActiveCampaign data through the v3 API: create, fetch, update and delete contacts, accounts, account-contact links, deals and deal notes, tags, connections, e-commerce customers, e-commerce orders and e-commerce order products, and page through your lists. Choose a resource first, then an operation — the node then shows only the fields that operation needs.

**Category:** Marketing  
**Tool Name:** `active_campaign`  
**Version:** 1

**Appearance:** Icon: `lucide-Megaphone` | Color: `#356ae6`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **ActiveCampaign API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/active-campaign-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Account | `account` |
| Account Contact | `accountContact` |
| Connection | `connection` |
| Contact | `contact` |
| Contact List | `contactList` |
| Contact Tag | `contactTag` |
| Deal | `deal` |
| E-Commerce Customer | `ecommerceCustomer` |
| E-Commerce Order | `ecommerceOrder` |
| E-Commerce Order Product | `ecommerceOrderProducts` |
| List | `list` |
| Tag | `tag` |

### Operations

Every resource carries its own operation list. Changing the resource changes both the operations offered and the fields shown below them.

**Account**

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a new account. |
| Delete | `delete` | Delete an existing account. |
| Get | `get` | Retrieve a single account by ID. |
| Get Many | `getAll` | Retrieve multiple accounts. |
| Update | `update` | Update an existing account. |

**Account Contact**

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Link a contact to an account. |
| Delete | `delete` | Delete an account-contact link. |
| Update | `update` | Update an account-contact link. |

**Connection**

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a new connection to an external service. |
| Delete | `delete` | Delete an existing connection. |
| Get | `get` | Retrieve a single connection by ID. |
| Get Many | `getAll` | Retrieve multiple connections. |
| Update | `update` | Update an existing connection. |

**Contact**

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a new contact, optionally updating one that already exists. |
| Delete | `delete` | Delete an existing contact. |
| Get | `get` | Retrieve a single contact by ID. |
| Get Many | `getAll` | Retrieve multiple contacts, with filtering and sorting. |
| Update | `update` | Update an existing contact. |

**Contact List**

| Operation | Value | Description |
|-----------|-------|-------------|
| Add | `add` | Subscribe a contact to a list. |
| Remove | `remove` | Unsubscribe a contact from a list. |

**Contact Tag**

| Operation | Value | Description |
|-----------|-------|-------------|
| Add | `add` | Apply a tag to a contact. |
| Remove | `remove` | Remove a contact-tag link. |

**Deal**

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a new deal. |
| Create Note | `createNote` | Add a note to a deal. |
| Delete | `delete` | Delete an existing deal. |
| Get | `get` | Retrieve a single deal by ID. |
| Get Many | `getAll` | Retrieve multiple deals. |
| Update | `update` | Update an existing deal. |
| Update Deal Note | `updateNote` | Update an existing note on a deal. |

**E-Commerce Customer**

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a new e-commerce customer. |
| Delete | `delete` | Delete an existing e-commerce customer. |
| Get | `get` | Retrieve a single e-commerce customer by ID. |
| Get Many | `getAll` | Retrieve multiple e-commerce customers. |
| Update | `update` | Update an existing e-commerce customer. |

**E-Commerce Order**

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a new e-commerce order or abandoned cart. |
| Delete | `delete` | Delete an existing e-commerce order. |
| Get | `get` | Retrieve a single e-commerce order by ID. |
| Get Many | `getAll` | Retrieve multiple e-commerce orders. |
| Update | `update` | Update an existing e-commerce order. |

**E-Commerce Order Product**

| Operation | Value | Description |
|-----------|-------|-------------|
| Get Many | `getAll` | Retrieve order products across all orders. |
| Get by Product ID | `getByProductId` | Retrieve a single order product by its ID. |
| Get by Order ID | `getByOrderId` | Retrieve every order product belonging to one order. |

**List**

| Operation | Value | Description |
|-----------|-------|-------------|
| Get Many | `getAll` | Retrieve the lists in your account. |

**Tag**

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a new tag. |
| Delete | `delete` | Delete an existing tag. |
| Get | `get` | Retrieve a single tag by ID. |
| Get Many | `getAll` | Retrieve multiple tags. |
| Update | `update` | Update an existing tag. |

### Parameters

#### Account: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Name | `string` | Yes | — | Account's name. |
| Additional Fields | `collection` | No | `{}` | Optional account fields to set. |
| — Account URL | `string` | No | — | Account's website. |
| — Fields | `fixedCollection` | No | `{}` | Account custom fields. Field ID can be found via GET /api/3/accountCustomFieldMeta. |
| — — Field ID (`customFieldId`) | `string` | No | — | ID of the custom field. |
| — — Field Value (`fieldValue`) | `string` | No | — | Value of the field to set. |

#### Account: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Account ID (`accountId`) | `number` | Yes | `0` | ID of the account to delete. |

#### Account: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Account ID (`accountId`) | `number` | Yes | `0` | ID of the account to get. |

#### Account: 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 | `100` | 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. |
| Filters | `collection` | No | `{}` | Narrows which accounts are returned. |
| — Search | `string` | No | — | Search by name. |

#### Account: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Account ID (`accountId`) | `number` | Yes | `0` | ID of the account to update. |
| Update Fields | `collection` | No | `{}` | The fields to update. |
| — Name | `string` | No | — | Account's name. |
| — Account URL | `string` | No | — | Account's website. |
| — Fields | `fixedCollection` | No | `{}` | Account custom fields. |
| — — Field ID (`customFieldId`) | `string` | No | — | ID of the custom field. |
| — — Field Value (`fieldValue`) | `string` | No | — | Value of the field to set. |

#### Account Contact: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Account ID (`account`) | `number` | Yes | `0` | The account ID. |
| Contact ID (`contact`) | `number` | Yes | `0` | The contact ID. |
| Additional Fields | `collection` | No | `{}` | Optional fields to set on the link. |
| — Job Title | `string` | No | — | Job title of the contact at the account. |

#### Account Contact: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Account Contact ID | `number` | Yes | `0` | ID of the account contact to delete. |

#### Account Contact: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Account Contact ID | `number` | Yes | — | ID of the account contact to update. |
| Update Fields | `collection` | No | `{}` | The fields to update. |
| — Job Title | `string` | No | — | Job title of the contact at the account. |

#### Connection: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Service | `string` | Yes | — | The name of the service. |
| External Account ID | `string` | Yes | — | The ID of the account in the external service. |
| Account Name | `string` | Yes | — | The name associated with the account in the external service. |
| Logo URL | `string` | Yes | — | The URL to a logo image for the external service. |
| Link URL | `string` | Yes | — | The URL to a page where the integration with the external service can be managed. |

#### Connection: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Connection ID (`connectionId`) | `number` | Yes | `0` | ID of the connection to delete. |

#### Connection: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Connection ID (`connectionId`) | `number` | Yes | `0` | ID of the connection to get. |

#### Connection: 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 | `100` | 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. |

#### Connection: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Connection ID (`connectionId`) | `number` | Yes | `0` | ID of the connection to update. |
| Update Fields | `collection` | No | `{}` | The fields to update. |
| — Service | `string` | No | — | The name of the service. |
| — External Account ID | `string` | No | — | The ID of the account in the external service. |
| — Account Name | `string` | No | — | The name associated with the account. |
| — Logo URL | `string` | No | — | The URL to a logo image. |
| — Link URL | `string` | No | — | The URL to a page for integration management. |
| — Status | `number` | No | `1` | The status of the connection (0 = error; 1 = connected). |
| — Sync Status | `number` | No | `1` | The sync status (0 = sync stopped; 1 = sync running). |

#### Contact: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Email | `string` | Yes | — | The email of the contact to create. |
| Update if Exists | `boolean` | No | `false` | Whether to update the contact if it exists already. If not set and the contact exists it will error instead. |
| Additional Fields | `collection` | No | `{}` | Optional contact fields to set. |
| — Custom Fields | `fixedCollection` | No | `{}` | Adds custom fields. Field ID can be found via GET /api/3/fields. |
| — — Field ID (`field`) | `string` | No | — | ID of the custom field. Find via GET /api/3/fields?limit=100. |
| — — Field Value (`value`) | `string` | No | — | Value of the field to set. |
| — First Name | `string` | No | — | The first name of the contact. |
| — Last Name | `string` | No | — | The last name of the contact. |
| — Phone | `string` | No | — | Phone number of the contact. |

#### Contact: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Contact ID (`contactId`) | `number` | Yes | `0` | ID of the contact to delete. |

#### Contact: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Contact ID (`contactId`) | `number` | Yes | `0` | ID of the contact to get. |

#### Contact: 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 | `100` | 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. |
| Additional Fields | `collection` | No | `{}` | Filters and sorting to apply to the query. |
| — Datetime | `string` | No | — | Contacts created on the specified date. |
| — Email | `string` | No | — | Email address of the contact you want to get. |
| — Email Like | `string` | No | — | Filter contacts that contain the given value in the email address. |
| — Exclude | `string` | No | — | Exclude from the response the contact with the given ID. |
| — Form ID | `string` | No | — | Filter contacts associated with the given form. |
| — List ID (`listid`) | `string` | No | — | Filter contacts associated with the given list. |
| — Search | `string` | No | — | Filter contacts that match the given value in contact names, organization, phone or email. |
| — Segment ID | `string` | No | — | Return only contacts that match a list segment. |
| — Series ID | `string` | No | — | Filter contacts associated with the given automation. |
| — Status | `options` | No | — | Restrict the result to contacts in one subscription state. |
| | | | | Options: `1` (Active), `-1` (Any), `3` (Bounced), `0` (Unconfirmed), `2` (Unsubscribed) |
| — Tag ID (`tagid`) | `string` | No | — | Filter contacts associated with the given tag. |
| — Created Before | `string` | No | — | Filter contacts that were created prior to this date. |
| — Created After | `string` | No | — | Filter contacts that were created after this date. |
| — Updated Before | `string` | No | — | Filter contacts that were updated before this date. |
| — Updated After | `string` | No | — | Filter contacts that were updated after this date. |
| — Wait ID | `string` | No | — | Filter by contacts in the wait queue of an automation block. |
| — Order By | `options` | No | — | Field the results are sorted on. |
| | | | | Options: `cdate` (Creation Date), `email`, `first_name`, `last_name`, `name`, `score` |
| — Order Direction | `options` | No | `DESC` | Sort direction, applied to the Order By field. |
| | | | | Options: `ASC` (Ascending), `DESC` (Descending) |

#### Contact: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Contact ID (`contactId`) | `number` | Yes | `0` | ID of the contact to update. |
| Update Fields | `collection` | No | `{}` | The fields to update. |
| — Custom Fields | `fixedCollection` | No | `{}` | Adds custom fields. Field ID can be found via GET /api/3/fields. |
| — — Field ID (`field`) | `string` | No | — | ID of the custom field. |
| — — Field Value (`value`) | `string` | No | — | Value of the field to set. |
| — Email | `string` | No | — | Email of the contact. |
| — First Name | `string` | No | — | First name of the contact. |
| — Last Name | `string` | No | — | Last name of the contact. |
| — Phone | `string` | No | — | Phone number of the contact. |

#### Contact List: Add

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| List ID (`listId`) | `number` | Yes | — | The list ID. |
| Contact ID (`contactId`) | `number` | Yes | — | The contact ID. |

#### Contact List: Remove

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| List ID (`listId`) | `number` | Yes | — | The list ID. |
| Contact ID (`contactId`) | `number` | Yes | — | The contact ID. |

#### Contact Tag: Add

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Tag ID (`tagId`) | `string` | Yes | — | The tag ID. Find via GET /api/3/tags or the Tag resource in this tool. |
| Contact ID (`contactId`) | `number` | Yes | — | The contact ID. |

#### Contact Tag: Remove

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Contact Tag ID | `number` | Yes | `0` | ID of the contact tag to delete. This is the ID of the contact-tag link, not the tag's own ID. |

#### Deal: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Title | `string` | Yes | — | The title of the deal. |
| Deal's Contact ID | `number` | Yes | `0` | The ID of the deal's contact. |
| Deal Value | `number` | Yes | `0` | The value of the deal in cents. |
| Currency | `string` | Yes | `usd` | The currency of the deal in 3-character ISO format (e.g. usd, eur, gbp). |
| Deal Pipeline ID | `string` | No | — | The pipeline ID of the deal. |
| Deal Stage ID | `string` | No | — | The stage ID of the deal. |
| Deal Owner ID | `string` | No | — | The owner ID of the deal. |
| Additional Fields | `collection` | No | `{}` | Optional deal fields to set. |
| — Description | `string` | No | — | The description of the deal. |
| — Deal Percentage | `number` | No | `0` | The percentage of the deal. |
| — Deal Status | `number` | No | `0` | The status of the deal. |

#### Deal: Create Note

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Deal ID | `number` | Yes | — | The ID of the deal. |
| Deal Note | `string` | Yes | — | The content of the deal note. |

#### Deal: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Deal ID | `number` | Yes | `0` | The ID of the deal to delete. |

#### Deal: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Deal ID | `number` | Yes | `0` | The ID of the deal to get. |

#### Deal: 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 | `100` | 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. |

#### Deal: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Deal ID | `number` | Yes | `0` | ID of the deal to update. |
| Update Fields | `collection` | No | `{}` | The fields to update. |
| — Title | `string` | No | — | The title of the deal. |
| — Deal's Contact ID | `number` | No | `0` | The ID of the deal's contact. |
| — Deal Value | `number` | No | `0` | The value of the deal in cents. |
| — Currency | `string` | No | `usd` | The currency of the deal in 3-character ISO format. |
| — Description | `string` | No | — | The description of the deal. |
| — Deal Pipeline ID | `string` | No | — | The pipeline ID of the deal. |
| — Deal Stage ID | `string` | No | — | The stage ID of the deal. |
| — Deal Owner ID | `string` | No | — | The owner ID of the deal. |
| — Deal Percentage | `number` | No | `0` | The percentage of the deal. |
| — Deal Status | `number` | No | `0` | The status of the deal. |

#### Deal: Update Deal Note

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Deal ID | `number` | Yes | — | The ID of the deal. |
| Deal Note ID | `number` | Yes | — | The ID of the deal note. |
| Deal Note | `string` | No | — | The content of the deal note. |

#### E-Commerce Customer: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Service ID | `string` | Yes | — | The ID of the connection object for the service where the customer originates. |
| Customer ID (`externalid`) | `string` | Yes | — | The ID of the customer in the external service. |
| Customer Email | `string` | Yes | — | The email address of the customer. |
| Additional Fields | `collection` | No | `{}` | Optional customer fields to set. |
| — Accepts Marketing | `boolean` | No | `false` | Whether the customer has opted in to marketing communications. |

#### E-Commerce Customer: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`ecommerceCustomerId`) | `number` | Yes | `0` | ID of the e-commerce customer to delete. |

#### E-Commerce Customer: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`ecommerceCustomerId`) | `number` | Yes | `0` | ID of the e-commerce customer to get. |

#### E-Commerce Customer: 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 | `100` | 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. |

#### E-Commerce Customer: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`ecommerceCustomerId`) | `number` | Yes | `0` | ID of the e-commerce customer to update. |
| Update Fields | `collection` | No | `{}` | The fields to update. |
| — Service ID | `string` | No | — | The ID of the connection object. |
| — Customer ID (`externalid`) | `string` | No | — | The ID of the customer in the external service. |
| — Customer Email | `string` | No | — | The email address of the customer. |
| — Accepts Marketing | `boolean` | No | `false` | Whether the customer has opted in to marketing communications. |

#### E-Commerce Order: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| External ID | `string` | No | — | The ID of the order in the external service. Required only if External Checkout ID is not included. |
| External Checkout ID | `string` | No | — | The ID of the cart in the external service. Required only if External ID is not included. |
| Order Source | `number` | Yes | `0` | The order source code (0 - will not trigger automations, 1 - will trigger automations). |
| Customer Email | `string` | Yes | — | The email address of the customer who placed the order. |
| Total Price | `number` | Yes | `0` | The total price of the order in cents, including tax and shipping charges (e.g. $456.78 => 45678). |
| Order Currency | `string` | Yes | `usd` | The currency of the order (3-digit ISO code, e.g. "USD"). |
| Connection ID (`connectionid`) | `number` | Yes | `0` | The ID of the connection from which this order originated. |
| Customer ID (`customerid`) | `number` | Yes | `0` | The ID of the customer associated with this order. |
| Creation Date (`externalCreatedDate`) | `string` | Yes | — | The date the order was placed (ISO 8601 format). |
| Abandoning Date | `string` | No | — | The date the cart was abandoned. Required only if you include External Checkout ID. |
| Products | `json` | No | `[]` | JSON array of ordered products. Each product: { name, price, quantity, externalid, category, sku, description, imageUrl, productUrl }. |
| Additional Fields | `collection` | No | `{}` | Optional order fields to set. |
| — Shipping Amount | `number` | No | `0` | The total shipping amount for the order in cents. |
| — Tax Amount | `number` | No | `0` | The total tax amount for the order in cents. |
| — Discount Amount | `number` | No | `0` | The total discount amount for the order in cents. |
| — Order URL | `string` | No | — | The URL for the order in the external service. |
| — External Updated Date | `string` | No | — | The date the order was updated. |
| — Shipping Method | `string` | No | — | The shipping method of the order. |
| — Order Number | `string` | No | — | The order number. |

#### E-Commerce Order: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID | `number` | No | `0` | The ID of the e-commerce order. |

#### E-Commerce Order: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID | `number` | No | `0` | The ID of the e-commerce order. |

#### E-Commerce Order: 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 | `100` | 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. |

#### E-Commerce Order: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID | `number` | No | `0` | The ID of the e-commerce order. |
| Update Fields | `collection` | No | `{}` | The fields to update. |
| — External ID | `string` | No | — | The ID of the order in the external service. |
| — External Checkout ID | `string` | No | — | The ID of the cart in the external service. |
| — Order Source | `number` | No | `0` | The order source code. |
| — Customer Email | `string` | No | — | The email address of the customer. |
| — Total Price | `number` | No | `0` | The total price of the order in cents. |
| — Order Currency | `string` | No | `usd` | The currency of the order (3-digit ISO code). |
| — Connection ID (`connectionid`) | `number` | No | `0` | The ID of the connection. |
| — Customer ID (`customerid`) | `number` | No | `0` | The ID of the customer. |
| — Creation Date (`externalupdatedDate`) | `string` | No | — | The date the order was placed. |
| — Abandoning Date | `string` | No | — | The date the cart was abandoned. |
| — Shipping Amount | `number` | No | `0` | The total shipping amount in cents. |
| — Tax Amount | `number` | No | `0` | The total tax amount in cents. |
| — Discount Amount | `number` | No | `0` | The total discount amount in cents. |
| — Order URL | `string` | No | — | The URL for the order. |
| — External Updated Date | `string` | No | — | The date the order was updated. |
| — Shipping Method | `string` | No | — | The shipping method of the order. |
| — Order Number | `string` | No | — | The order number. |
| — Products | `json` | No | `[]` | JSON array of ordered products. |

#### E-Commerce Order Product: 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 | `100` | 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. |

#### E-Commerce Order Product: Get by Product ID

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Product ID | `number` | No | `0` | The ID of the product you'd like returned. |

#### E-Commerce Order Product: Get by Order ID

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID | `number` | No | `0` | The ID of the order whose products you'd like returned. |

#### List: 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 | `100` | 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. |

#### Tag: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Type | `options` | Yes | `contact` | Tag-type of the new tag. |
| | | | | Options: `contact` (a tag you apply to contacts), `template` (a tag you apply to templates) |
| Name | `string` | Yes | — | Name of the new tag. |
| Additional Fields | `collection` | No | `{}` | Optional tag fields to set. |
| — Description | `string` | No | — | Description of the new tag. |

#### Tag: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Tag ID (`tagId`) | `number` | Yes | `0` | ID of the tag to delete. |

#### Tag: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Tag ID (`tagId`) | `number` | Yes | `0` | ID of the tag to get. |

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

#### Tag: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Tag ID (`tagId`) | `number` | Yes | `0` | ID of the tag to update. |
| Update Fields | `collection` | No | `{}` | The fields to update. |
| — Tag | `string` | No | — | Name of the tag. |
| — Description | `string` | No | — | Description of the tag being updated. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

The ActiveCampaign response is **merged onto the incoming item JSON** — the node returns `{ ...inputItem, ...result }`, so upstream fields survive unless the API returns a field with the same name. Binary data on the input item is forwarded unchanged.

Every operation except Get Many produces **one output item per input item**. The Get Many (`getAll`) operations on Account, Connection, Contact, Deal, E-Commerce Customer, E-Commerce Order, E-Commerce Order Product, List and Tag **fan out** — one output item per record returned — whenever Return All is on or Simplify is on. With both off, a Get Many produces a single item carrying the raw response envelope instead.

What lands on the item depends on the operation:

| Operation | Merged result |
|-----------|---------------|
| Contact, Account, Account Contact and Tag `create` / `update`; Contact Tag `add`; Contact List `add` / `remove` | The created or updated record's own fields, unwrapped from the response envelope. |
| Any resource's `get`; Deal, Connection, E-Commerce Customer and E-Commerce Order `create` / `update`; Deal `createNote` / `updateNote`; E-Commerce Order Product `getByProductId` / `getByOrderId` | The raw response envelope, with the record nested under its own key (for example `deal`, `connection`, `note`). |
| Any `delete`; Contact Tag `remove` | `success: true` when ActiveCampaign returns an empty body, otherwise the parsed response. Contact List `add` also falls back to `success: true` when the API returns nothing. |
| Get Many with Simplify on, or Return All on | One item per record, carrying that record's own fields. |
| Get Many with Simplify off and Return All off | A single item carrying the raw envelope — the record array under its resource key, plus the pagination metadata ActiveCampaign returns. |

A contact created from an item that already carried an `orderRef` field comes out looking like this:

```json
{
  "orderRef": "A-1001",
  "email": "john.doe@example.com",
  "firstName": "John",
  "lastName": "Doe",
  "phone": "+1234567890"
}
```

Here `orderRef` came from the input item and the rest is the ActiveCampaign record. The record also carries the identifiers, timestamps and relationship links ActiveCampaign assigns — reference them downstream by whatever names the API returns, for example `{{ $json.id }}`.

## Usage Examples

- Create a new contact in ActiveCampaign
- Get all deals from ActiveCampaign
- Add a tag to a contact
- Create an e-commerce order
- Update account information

## Example Configuration

Create a contact from an incoming item, updating it instead of failing when the address already exists:

```json
{
  "type": "active_campaign",
  "parameters": {
    "resource": "contact",
    "operation": "create",
    "email": "{{ $json.email }}",
    "updateIfExists": true,
    "additionalFields": {
      "firstName": "{{ $json.firstName }}",
      "lastName": "{{ $json.lastName }}",
      "phone": "{{ $json.phone }}",
      "fieldValues": {
        "property": [
          { "field": "1", "value": "{{ $json.plan }}" }
        ]
      }
    }
  }
}
```

Page through every active contact created since a given date, oldest email first, emitting one item per contact:

```json
{
  "type": "active_campaign",
  "parameters": {
    "resource": "contact",
    "operation": "getAll",
    "returnAll": true,
    "simple": true,
    "additionalFields": {
      "status": 1,
      "filters[created_after]": "{{ $json.since }}",
      "orderBy": "email",
      "orderDirection": "ASC"
    }
  }
}
```

Apply a tag to a contact:

```json
{
  "type": "active_campaign",
  "parameters": {
    "resource": "contactTag",
    "operation": "add",
    "tagId": "{{ $json.tagId }}",
    "contactId": "{{ $json.contactId }}"
  }
}
```

Open a deal against an existing contact, with the value in cents:

```json
{
  "type": "active_campaign",
  "parameters": {
    "resource": "deal",
    "operation": "create",
    "title": "{{ $json.company }} renewal",
    "contact": "{{ $json.contactId }}",
    "value": 50000,
    "currency": "usd",
    "group": "1",
    "stage": "2",
    "additionalFields": {
      "description": "Opened automatically from {{ $json.source }}",
      "percent": 25
    }
  }
}
```

Record an e-commerce order with its line items, triggering ActiveCampaign automations:

```json
{
  "type": "active_campaign",
  "parameters": {
    "resource": "ecommerceOrder",
    "operation": "create",
    "externalid": "{{ $json.orderId }}",
    "source": 1,
    "email": "{{ $json.customerEmail }}",
    "totalPrice": 9999,
    "currency": "USD",
    "connectionid": 1,
    "customerid": "{{ $json.acCustomerId }}",
    "externalCreatedDate": "{{ $json.placedAt }}",
    "orderProducts": [
      {
        "name": "{{ $json.productName }}",
        "price": 9999,
        "quantity": 1,
        "externalid": "{{ $json.sku }}",
        "category": "Electronics"
      }
    ],
    "additionalFields": {
      "shippingAmount": 500,
      "taxAmount": 800,
      "orderNumber": "{{ $json.orderNumber }}"
    }
  }
}
```

Update an account's name, website and one custom field:

```json
{
  "type": "active_campaign",
  "parameters": {
    "resource": "account",
    "operation": "update",
    "accountId": "{{ $json.accountId }}",
    "updateFields": {
      "name": "{{ $json.companyName }}",
      "accountUrl": "{{ $json.website }}",
      "fields": {
        "property": [
          { "customFieldId": "2", "fieldValue": "{{ $json.segment }}" }
        ]
      }
    }
  }
}
```

### 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 contacts, accounts, deals, tags, lists, and e-commerce data in ActiveCampaign CRM and marketing automation platform.

### Behavior notes

- **Return All ignores Limit.** With Return All on, the node pages through the whole collection 100 records at a time until ActiveCampaign reports no more. With it off, Limit is capped at 100 — the largest page the API returns — so a Limit of 500 still yields 100.
- **Simplify only applies to Get Many.** On (the default) the node unwraps the response and emits one item per record. Off, it emits a single item holding the raw envelope and its pagination metadata. Return All always emits one item per record regardless of Simplify.
- **Money is in cents.** Deal Value, Total Price, Shipping Amount, Tax Amount and Discount Amount are whole cents — $456.78 is `45678`.
- **Update if Exists changes what Create does.** On contact Create, turning it on syncs the contact by email address instead of erroring when that address is already in your account, which makes the node safe to re-run.
- **Contact List → Remove unsubscribes.** ActiveCampaign has no endpoint for deleting a list membership, so Remove writes the membership back with an unsubscribed status rather than deleting the record.
- **Contact Tag → Remove takes the link ID.** Add takes a Tag ID plus a Contact ID and creates a contact-tag link; Remove takes the Contact Tag ID of that link, not the tag's own ID. Keep the ID that Add returns if you plan to undo it later.
- **Custom fields are keyed differently per resource.** Contact custom fields are `field` / `value` pairs; account custom fields are `customFieldId` / `fieldValue` pairs. Copy the exact names when you build the collection by hand.
- **Order Direction needs Order By.** On contact Get Many, the sort is only applied when Order By is set; setting Order Direction on its own has no effect.
- **IDs come from ActiveCampaign.** Pipeline, stage, owner, list, tag and custom-field IDs are ActiveCampaign's own IDs. Read them first — with this node's Get Many operations, or via `GET /api/3/tags` and `GET /api/3/fields?limit=100` — rather than guessing them.
- **Chain the CRM steps.** A typical pipeline creates the contact, then feeds the returned contact ID into Contact List → Add, Contact Tag → Add and Deal → Create. Set Max Concurrency lower than the default if a large batch starts hitting ActiveCampaign's rate limits.