tools/integrations/activecampaign.md
Email marketing automation platform with CRM, contacts, deals pipeline, tags, automations, and campaign management.
| Integration | Available | Notes |
|---|---|---|
| API | ✓ | REST API v3 for contacts, deals, automations, campaigns, tags |
| MCP | - | Not available |
| CLI | ✓ | activecampaign.js |
| SDK | ✓ | Python, PHP, Node.js, Ruby |
Api-Token: {api_token}https://{yourAccountName}.api-us1.com/api/3GET https://{account}.api-us1.com/api/3/users/me
GET https://{account}.api-us1.com/api/3/contacts?limit=20&offset=0
# Search by email
GET https://{account}.api-us1.com/api/3/[email protected]
# Search by name
GET https://{account}.api-us1.com/api/3/contacts?search=Jane
POST https://{account}.api-us1.com/api/3/contacts
{
"contact": {
"email": "[email protected]",
"firstName": "Jane",
"lastName": "Doe",
"phone": "+15551234567"
}
}
PUT https://{account}.api-us1.com/api/3/contacts/{contactId}
{
"contact": {
"firstName": "Updated",
"lastName": "Name"
}
}
POST https://{account}.api-us1.com/api/3/contact/sync
{
"contact": {
"email": "[email protected]",
"firstName": "Jane",
"lastName": "Doe"
}
}
DELETE https://{account}.api-us1.com/api/3/contacts/{contactId}
GET https://{account}.api-us1.com/api/3/lists?limit=20&offset=0
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."
}
}
POST https://{account}.api-us1.com/api/3/contactLists
{
"contactList": {
"list": "1",
"contact": "1",
"status": 1
}
}
POST https://{account}.api-us1.com/api/3/contactLists
{
"contactList": {
"list": "1",
"contact": "1",
"status": 2
}
}
GET https://{account}.api-us1.com/api/3/campaigns?limit=20&offset=0
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
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"
}
}
PUT https://{account}.api-us1.com/api/3/deals/{dealId}
{
"deal": {
"stage": "2",
"value": 75000
}
}
GET https://{account}.api-us1.com/api/3/automations?limit=20&offset=0
POST https://{account}.api-us1.com/api/3/contactAutomations
{
"contactAutomation": {
"contact": "1",
"automation": "1"
}
}
GET https://{account}.api-us1.com/api/3/tags?limit=20&offset=0
POST https://{account}.api-us1.com/api/3/tags
{
"tag": {
"tag": "VIP Customer",
"tagType": "contact"
}
}
POST https://{account}.api-us1.com/api/3/contactTags
{
"contactTag": {
"contact": "1",
"tag": "1"
}
}
GET https://{account}.api-us1.com/api/3/dealGroups?limit=20&offset=0
GET https://{account}.api-us1.com/api/3/webhooks?limit=20&offset=0
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"]
}
}
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.
email - Email addressfirstName, lastName - Name fieldsphone - Phone numbercdate - Creation dateudate - Last updated datedeals - Related deals counttitle - Deal namevalue - Deal value in centscurrency - Currency codestage - Pipeline stage IDgroup - Pipeline (deal group) IDowner - Assigned user IDstatus - 0 (open), 1 (won), 2 (lost)sends - Total sendsopens - Opens countclicks - Clicks countuniqueopens - Unique opensuniquelinks - Unique clicks1 - Subscribed (active)2 - Unsubscribed0 - Open1 - Won2 - Lostcontact - Contact tagsdeal - Deal tagslimit - Results per page (default 20)offset - Skip N resultssearch - Text searchemail - Filter contacts by emailfilters[stage] - Filter deals by stagefilters[owner] - Filter deals by ownerRetry-After header