ActiveCampaign Connector

Connect your ActiveCampaign account to Brevo via Tajo for comprehensive contact migration, deal pipeline synchronization, automation mapping, and unified marketing data across both platforms.

Overview

PropertyValue
PlatformActiveCampaign
CategoryMarketing
Setup ComplexityMedium
Official IntegrationYes
Data SyncedContacts, Deals, Automations, Events
API Base URLhttps://{account}.api-us1.com/api/3

Features

  • Contact migration - Migrate contacts with custom fields, tags, and list memberships
  • Deal pipeline sync - Sync deal stages, values, and owners for revenue tracking
  • Automation mapping - Map ActiveCampaign automations to Brevo workflow triggers
  • Event tracking - Sync site tracking and custom events for behavioral segmentation
  • List and tag sync - Replicate list structures and tag-based segments in Brevo
  • E-commerce integration - Sync Deep Data (orders, customers, carts) to Brevo
  • Custom object sync - Map ActiveCampaign custom objects to Brevo attributes
  • Score sync - Transfer lead and contact scores to Brevo attributes

Prerequisites

Before you begin, ensure you have:

  1. An ActiveCampaign account (Lite, Plus, Professional, or Enterprise)
  2. API URL and API key from Settings > Developer
  3. A Brevo account with API access
  4. A Tajo account

Authentication

API Key Authentication

ActiveCampaign uses an API key passed as a header or query parameter.

Terminal window
curl "https://{account}.api-us1.com/api/3/contacts" \
-H "Api-Token: YOUR_API_KEY" \
-H "Content-Type: application/json"

Find your API URL and key in ActiveCampaign Settings > Developer.

API URL

Your API URL is unique to your account (e.g., https://yourcompany.api-us1.com). Always use this URL, not the dashboard URL.

Configuration

Basic Setup

connectors:
activecampaign:
enabled: true
api_url: "https://yourcompany.api-us1.com"
api_key: "${AC_API_KEY}"
# Data sync options
sync:
contacts: true
deals: true
automations: true
events: true
ecommerce: true
# List mapping to Brevo
list_mapping:
"Main List": 50
"Newsletter": 51
"Customers": 52

Field Mapping

Map ActiveCampaign fields to Brevo contact attributes:

Default Mappings

Parameter Type Description
email required
string

Contact email (unique identifier)

firstName optional
string

Maps to FIRSTNAME attribute

lastName optional
string

Maps to LASTNAME attribute

phone optional
string

Maps to SMS attribute

tags optional
array

Contact tags for segmentation

score optional
integer

Contact engagement score

deals optional
array

Associated deal records

fieldValues optional
array

Custom field values

Custom Field Mapping

field_mapping:
# Standard fields
email: email
firstName: FIRSTNAME
lastName: LASTNAME
phone: SMS
# Engagement fields
score: LEAD_SCORE
rating: ENGAGEMENT_RATING
# Deal fields
deals.value: DEAL_VALUE
deals.stage: DEAL_STAGE
deals.owner: DEAL_OWNER
# Custom fields
fieldValues.company: COMPANY_NAME
fieldValues.industry: INDUSTRY
fieldValues.plan_tier: PLAN_TIER

API Endpoints

Contacts

MethodEndpointDescription
GET/api/3/contactsList all contacts
POST/api/3/contactsCreate a contact
PUT/api/3/contacts/{id}Update a contact
GET/api/3/contacts/{id}Retrieve a contact
POST/api/3/contact/syncSync a contact (create or update)
POST/api/3/import/bulk_importBulk import contacts

Deals

MethodEndpointDescription
GET/api/3/dealsList all deals
POST/api/3/dealsCreate a deal
PUT/api/3/deals/{id}Update a deal
GET/api/3/dealStagesList all deal stages
GET/api/3/dealPipelinesList all pipelines

Automations

MethodEndpointDescription
GET/api/3/automationsList automations
GET/api/3/automations/{id}Retrieve an automation
POST/api/3/contactAutomationsAdd contact to automation

E-commerce (Deep Data)

MethodEndpointDescription
POST/api/3/ecomOrdersCreate an order
GET/api/3/ecomOrdersList orders
POST/api/3/ecomCustomersCreate a customer
GET/api/3/ecomCustomersList customers

Event Tracking

MethodEndpointDescription
POST/api/3/tracking/eventTrack a custom event
GET/api/3/eventTrackingEventsList all event names
POST/api/3/eventTrackingEventsCreate an event name

Events

Contact Events

EventTriggerUse Case
contact_addNew contact createdWelcome flow
contact_updateContact data changedAttribute sync
contact_tag_addedTag assignedSegment update
contact_tag_removedTag removedSegment cleanup

Deal Events

EventTriggerUse Case
deal_addNew deal createdSales notification
deal_updateDeal stage changedPipeline automation
deal_tasktype_addTask added to dealActivity tracking

Automation Events

EventTriggerUse Case
automation_contact_addContact entered automationFlow tracking
automation_contact_completeContact completed automationNext-step trigger

Code Examples

Initialize Connector

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Connect ActiveCampaign
await tajo.connectors.connect('activecampaign', {
apiUrl: process.env.AC_API_URL,
apiKey: process.env.AC_API_KEY
});

Migrate Contacts to Brevo

// Full contact migration with custom fields and tags
await tajo.connectors.sync('activecampaign', {
type: 'full',
resources: ['contacts', 'deals', 'events'],
options: {
includeTags: true,
includeCustomFields: true,
includeScores: true,
includeListMemberships: true
}
});
// Check sync status
const status = await tajo.connectors.status('activecampaign');
console.log(status);
// {
// connected: true,
// lastSync: '2024-01-15T10:30:00Z',
// contactsMigrated: 28000,
// dealsSynced: 4500,
// eventsSynced: 120000
// }

Track Custom Events

// Forward ActiveCampaign events to Brevo
await tajo.activecampaign.trackEvent({
event: 'product_demo_requested',
eventData: {
product: 'Enterprise Plan',
source: 'website'
}
});

Rate Limits

ActiveCampaign API rate limits:

PlanRate LimitDetails
Lite5 requests/secondPer account
Plus10 requests/secondPer account
Professional10 requests/secondPer account
Enterprise20 requests/secondPer account

Additional limits:

  • Bulk import: 250 contacts per batch
  • Bulk import frequency: 1 import at a time
  • Event tracking: 2 requests/second
  • Daily limit: No explicit daily limit (rate-based only)

Rate Limit Handling

ActiveCampaign returns 429 Too Many Requests when limits are exceeded. Implement retry logic with the Retry-After header value.

Troubleshooting

Common Issues

IssueCauseSolution
403 ForbiddenInvalid API key or URLVerify API URL and key in AC Settings > Developer
Contact not syncedDuplicate email handlingUse /contact/sync endpoint for upsert behavior
Custom field emptyField ID mismatchMap fields by ID, not label (labels can change)
Webhook not receivedWebhook not configuredSet up webhooks in AC Settings > Developer > Webhooks
Deal not createdMissing required fieldsEnsure pipeline, stage, and contact are provided

Debug Mode

Enable verbose logging:

connectors:
activecampaign:
debug: true
log_level: verbose
log_webhooks: true

Test Connection

Terminal window
tajo connectors test activecampaign
# ✓ API connection successful
# ✓ Contacts readable
# ✓ Deals readable
# ✓ Automations accessible
# ✓ Event tracking enabled

Best Practices

  1. Use contact sync endpoint - Use /contact/sync for upsert operations instead of separate create/update
  2. Map fields by ID - Custom field IDs are stable; labels can change
  3. Preserve list memberships - Migrate list assignments alongside contact data
  4. Sync deal pipelines - Map pipeline stages for consistent CRM reporting
  5. Implement event tracking - Use site tracking for behavioral data in Brevo
  6. Batch imports - Use bulk import for datasets larger than 1,000 contacts

Security

  • API Key Authentication - Token-based access via Api-Token header
  • Webhook verification - Validate webhook source IP ranges
  • TLS encryption - All API communication encrypted via HTTPS
  • Account-level access - API key provides full account access; use with care
  • IP restrictions - Available on Enterprise plans

Open-Source Implementation Map

No official open-source repository was found in the current Tajo connector catalog for ActiveCampaign. Keep this page focused on the verified public API contract and vendor documentation until an official schema, SDK, MCP server, or public integration repository is available.

Tajo Revamp Checklist

  • Verify authentication and scope requirements against the vendor documentation before each connector release.
  • Document primary sync objects, external IDs, pagination strategy, and rate limits explicitly.
  • Add smoke tests from public API examples rather than undocumented behavior.
  • Capture webhook signature verification and replay protection when the vendor supports webhooks.
  • Record gaps where no official public repository or schema exists so future maintainers know what still needs source-backed validation.

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI Assistant

Hi! Ask me anything about the docs.