Skip to content

ActiveCampaign ​

Email marketing automation platform with CRM, contacts, deals pipeline, tags, automations, and campaign management.

Capabilities ​

IntegrationAvailableNotes
API✓REST API v3 for contacts, deals, automations, campaigns, tags
MCP-Not available
CLI✓activecampaign.js
SDK✓Python, PHP, Node.js, Ruby

Authentication ​

  • Type: API Token
  • Header: Api-Token: {api_token}
  • Base URL: https://{yourAccountName}.api-us1.com/api/3
  • Get key: Settings > Developer tab in your ActiveCampaign account
  • Note: Each user has a unique API key. Base URL is account-specific (found in Settings > Developer).

Common Agent Operations ​

Get current user ​

bash
GET https://{account}.api-us1.com/api/3/users/me

List contacts ​

bash
GET https://{account}.api-us1.com/api/3/contacts?limit=20&offset=0

# Search by email
GET https://{account}.api-us1.com/api/3/contacts?email=user@example.com

# Search by name
GET https://{account}.api-us1.com/api/3/contacts?search=Jane

Create contact ​

bash
POST https://{account}.api-us1.com/api/3/contacts

{
  "contact": {
    "email": "user@example.com",
    "firstName": "Jane",
    "lastName": "Doe",
    "phone": "+15551234567"
  }
}

Update contact ​

bash
PUT https://{account}.api-us1.com/api/3/contacts/{contactId}

{
  "contact": {
    "firstName": "Updated",
    "lastName": "Name"
  }
}

Sync contact (create or update) ​

bash
POST https://{account}.api-us1.com/api/3/contact/sync

{
  "contact": {
    "email": "user@example.com",
    "firstName": "Jane",
    "lastName": "Doe"
  }
}

Delete contact ​

bash
DELETE https://{account}.api-us1.com/api/3/contacts/{contactId}

List all lists ​

bash
GET https://{account}.api-us1.com/api/3/lists?limit=20&offset=0

Create list ​

bash
POST https://{account}.api-us1.com/api/3/lists

{
  "list": {
    "name": "Newsletter",
    "stringid": "newsletter",
    "sender_url": "https://example.com",
    "sender_reminder": "You signed up for our newsletter."
  }
}

Subscribe contact to list ​

bash
POST https://{account}.api-us1.com/api/3/contactLists

{
  "contactList": {
    "list": "1",
    "contact": "1",
    "status": 1
  }
}

Unsubscribe contact from list ​

bash
POST https://{account}.api-us1.com/api/3/contactLists

{
  "contactList": {
    "list": "1",
    "contact": "1",
    "status": 2
  }
}

List campaigns ​

bash
GET https://{account}.api-us1.com/api/3/campaigns?limit=20&offset=0

List deals ​

bash
GET https://{account}.api-us1.com/api/3/deals?limit=20&offset=0

# Filter by pipeline stage
GET https://{account}.api-us1.com/api/3/deals?filters[stage]=1

Create deal ​

bash
POST https://{account}.api-us1.com/api/3/deals

{
  "deal": {
    "title": "New Enterprise Deal",
    "value": 50000,
    "currency": "usd",
    "group": "1",
    "stage": "1",
    "owner": "1",
    "contact": "1"
  }
}

Update deal ​

bash
PUT https://{account}.api-us1.com/api/3/deals/{dealId}

{
  "deal": {
    "stage": "2",
    "value": 75000
  }
}

List automations ​

bash
GET https://{account}.api-us1.com/api/3/automations?limit=20&offset=0

Add contact to automation ​

bash
POST https://{account}.api-us1.com/api/3/contactAutomations

{
  "contactAutomation": {
    "contact": "1",
    "automation": "1"
  }
}

List tags ​

bash
GET https://{account}.api-us1.com/api/3/tags?limit=20&offset=0

Create tag ​

bash
POST https://{account}.api-us1.com/api/3/tags

{
  "tag": {
    "tag": "VIP Customer",
    "tagType": "contact"
  }
}

Add tag to contact ​

bash
POST https://{account}.api-us1.com/api/3/contactTags

{
  "contactTag": {
    "contact": "1",
    "tag": "1"
  }
}

List pipelines (deal groups) ​

bash
GET https://{account}.api-us1.com/api/3/dealGroups?limit=20&offset=0

List webhooks ​

bash
GET https://{account}.api-us1.com/api/3/webhooks?limit=20&offset=0

Create webhook ​

bash
POST https://{account}.api-us1.com/api/3/webhooks

{
  "webhook": {
    "name": "Contact Updated",
    "url": "https://example.com/webhook",
    "events": ["subscribe", "unsubscribe"],
    "sources": ["public", "admin", "api", "system"]
  }
}

API Pattern ​

ActiveCampaign uses REST with resource wrapping (e.g., { "contact": {...} }). Responses include the resource object plus metadata. Related resources are managed via junction endpoints (e.g., /contactLists, /contactTags, /contactAutomations). The base URL is account-specific. Pagination uses limit and offset parameters.

Key Metrics ​

Contact Fields ​

  • email - Email address
  • firstName, lastName - Name fields
  • phone - Phone number
  • cdate - Creation date
  • udate - Last updated date
  • deals - Related deals count

Deal Fields ​

  • title - Deal name
  • value - Deal value in cents
  • currency - Currency code
  • stage - Pipeline stage ID
  • group - Pipeline (deal group) ID
  • owner - Assigned user ID
  • status - 0 (open), 1 (won), 2 (lost)

Campaign Metrics ​

  • sends - Total sends
  • opens - Opens count
  • clicks - Clicks count
  • uniqueopens - Unique opens
  • uniquelinks - Unique clicks

Parameters ​

Contact List Status ​

  • 1 - Subscribed (active)
  • 2 - Unsubscribed

Deal Status ​

  • 0 - Open
  • 1 - Won
  • 2 - Lost

Tag Types ​

  • contact - Contact tags
  • deal - Deal tags

Common Query Parameters ​

  • limit - Results per page (default 20)
  • offset - Skip N results
  • search - Text search
  • email - Filter contacts by email
  • filters[stage] - Filter deals by stage
  • filters[owner] - Filter deals by owner

When to Use ​

  • Marketing automation with complex conditional workflows
  • CRM with deal pipeline management
  • Contact management with tagging and segmentation
  • Email campaign creation and tracking
  • Triggering automations based on external events
  • B2B sales pipeline tracking integrated with marketing

Rate Limits ​

  • 5 requests per second per account
  • Rate limit applies across all API users on the same account
  • 429 responses include Retry-After header

Relevant Skills ​

  • email-sequence
  • lifecycle-marketing
  • crm-integration
  • sales-pipeline
  • marketing-automation

Released under the MIT License.