Skip to main content

CRM Data Export

📊 CRM Data Export API

ActiveCampaign integration provides comprehensive CRM data export with support for pagination, filtering, and multi-field ordering.

📋 API Endpoints

MethodEndpointDescriptionAuth Required
GET/v1/integrations/activecampaign/export/contactsExport contact data✅ JWT
GET/v1/integrations/activecampaign/export/dealsExport deal data✅ JWT
GET/v1/integrations/activecampaign/export/accountsExport account data✅ JWT

🔧 Common Query Parameters

All export endpoints support these parameters:

ParameterTypeDescriptionDefault
pageIntegerPage number1
limitIntegerRecords per page20
orders[field]StringSort direction (ASC/DESC)-
filters[field]StringFilter by field value-

📖 Export Contacts

Endpoint: GET /export/contacts

Basic Request

GET /v1/integrations/activecampaign/export/contacts
Authorization: Bearer {jwt_token}

Response

{
"success": true,
"message": "SUCCESS",
"data": [
{
"id": "1",
"email": "john.doe@example.com",
"phone": "+1234567890",
"firstName": "John",
"lastName": "Doe",
"cdate": "2020-06-12T01:49:23-05:00",
"udate": "2020-06-12T01:49:24-05:00",
"orgid": "1",
"orgname": "Acme Corporation",
"hash": "206bc0036b925e82bc6f98c7799bf4ef",
"gravatar": "1",
"deleted": "0",
"anonymized": "0",
"scoreValues": [],
"accountContacts": ["1"],
"links": {
"bounceLogs": "https://...api-us1.com/api/3/contacts/1/bounceLogs",
"contactAutomations": "https://...api-us1.com/api/3/contacts/1/contactAutomations",
"contactData": "https://...api-us1.com/api/3/contacts/1/contactData",
"contactLists": "https://...api-us1.com/api/3/contacts/1/contactLists",
"contactTags": "https://...api-us1.com/api/3/contacts/1/contactTags",
"contactDeals": "https://...api-us1.com/api/3/contacts/1/contactDeals",
"deals": "https://...api-us1.com/api/3/contacts/1/deals",
"fieldValues": "https://...api-us1.com/api/3/contacts/1/fieldValues",
"notes": "https://...api-us1.com/api/3/contacts/1/notes",
"organization": "https://...api-us1.com/api/3/contacts/1/organization"
},
"organization": "1"
}
],
"pagination": {
"page": "1",
"limit": "20",
"total": "150",
"next_page": 2,
"prev_page": null
}
}

Contact Fields

FieldTypeDescription
idStringContact ID
emailStringEmail address
phoneStringPhone number
firstNameStringFirst name
lastNameStringLast name
cdateDateTimeCreated date
udateDateTimeUpdated date
orgidStringOrganization ID
orgnameStringOrganization name
hashStringContact hash
gravatarStringGravatar enabled (0/1)
deletedStringDeleted flag (0/1)
anonymizedStringAnonymized flag (0/1)
scoreValuesArrayLead scoring values
accountContactsArrayAssociated account IDs
linksObjectRelated resource URLs
organizationStringPrimary organization ID

Pagination Example

GET /v1/integrations/activecampaign/export/contacts?page=2&limit=50
Authorization: Bearer {jwt_token}

Ordering Example

# Sort by email ascending
GET /v1/integrations/activecampaign/export/contacts?orders[email]=ASC
Authorization: Bearer {jwt_token}

# Sort by first name descending
GET /v1/integrations/activecampaign/export/contacts?orders[firstName]=DESC
Authorization: Bearer {jwt_token}

Filtering Example

# Filter by first name
GET /v1/integrations/activecampaign/export/contacts?filters[firstName]=John
Authorization: Bearer {jwt_token}

# Filter by email
GET /v1/integrations/activecampaign/export/contacts?filters[email]=john@example.com
Authorization: Bearer {jwt_token}

Combined Example

GET /v1/integrations/activecampaign/export/contacts?page=1&limit=100&orders[email]=ASC&filters[firstName]=John
Authorization: Bearer {jwt_token}

📖 Export Deals

Endpoint: GET /export/deals

Basic Request

GET /v1/integrations/activecampaign/export/deals
Authorization: Bearer {jwt_token}

Response

{
"success": true,
"message": "SUCCESS",
"data": [
{
"id": "1",
"hash": "3baba795",
"owner": "1",
"contact": "1",
"organization": "3",
"group": "1",
"stage": "1",
"title": "Deal 1",
"description": "Deal 1 description",
"percent": "0",
"value": "10000",
"currency": "usd",
"status": "0",
"cdate": "2020-06-12T22:56:20-05:00",
"mdate": "2020-06-12T22:56:20-05:00",
"nextdate": null,
"nexttaskid": null,
"edate": null,
"winProbability": null,
"winProbabilityMdate": null,
"activitycount": "1",
"nextdealid": "1",
"isDisabled": false,
"account": "3",
"customerAccount": "3",
"links": {
"dealActivities": "https://...api-us1.com/api/3/deals/1/dealActivities",
"contact": "https://...api-us1.com/api/3/deals/1/contact",
"contactDeals": "https://...api-us1.com/api/3/deals/1/contactDeals",
"group": "https://...api-us1.com/api/3/deals/1/group",
"nextTask": "https://...api-us1.com/api/3/deals/1/nextTask",
"notes": "https://...api-us1.com/api/3/deals/1/notes",
"account": "https://...api-us1.com/api/3/deals/1/account",
"organization": "https://...api-us1.com/api/3/deals/1/organization",
"owner": "https://...api-us1.com/api/3/deals/1/owner",
"stage": "https://...api-us1.com/api/3/deals/1/stage",
"tasks": "https://...api-us1.com/api/3/deals/1/tasks",
"dealCustomFieldData": "https://...api-us1.com/api/3/deals/1/dealCustomFieldData"
}
}
],
"pagination": {
"page": "1",
"limit": "20",
"total": "45",
"next_page": 2,
"prev_page": null
}
}

Deal Fields

FieldTypeDescription
idStringDeal ID
hashStringDeal hash
ownerStringOwner user ID
contactStringAssociated contact ID
organizationStringOrganization ID
groupStringPipeline group ID
stageStringPipeline stage ID
titleStringDeal title
descriptionStringDeal description
percentStringCompletion percentage
valueStringDeal value (cents)
currencyStringCurrency code (usd, eur, etc.)
statusStringDeal status (0=open, 1=won, 2=lost)
cdateDateTimeCreated date
mdateDateTimeModified date
nextdateDateTimeNext task date
nexttaskidStringNext task ID
edateDateTimeExpected close date
winProbabilityStringWin probability percentage
activitycountStringNumber of activities
isDisabledBooleanDisabled flag
accountStringAccount ID
linksObjectRelated resource URLs

Ordering Example

# Sort by value descending (highest first)
GET /v1/integrations/activecampaign/export/deals?orders[value]=DESC
Authorization: Bearer {jwt_token}

# Sort by title ascending
GET /v1/integrations/activecampaign/export/deals?orders[title]=ASC
Authorization: Bearer {jwt_token}

Filtering Example

# Filter by status (0=open)
GET /v1/integrations/activecampaign/export/deals?filters[status]=0
Authorization: Bearer {jwt_token}

# Filter by stage
GET /v1/integrations/activecampaign/export/deals?filters[stage]=1
Authorization: Bearer {jwt_token}

📖 Export Accounts

Endpoint: GET /export/accounts

Basic Request

GET /v1/integrations/activecampaign/export/accounts
Authorization: Bearer {jwt_token}

Response

{
"success": true,
"message": "SUCCESS",
"data": [
{
"id": "1",
"name": "Acme Corporation",
"accountUrl": "https://acme.com",
"createdTimestamp": "2020-06-12T07:46:53-05:00",
"updatedTimestamp": "2020-06-12T07:47:00-05:00",
"contactCount": "5",
"dealCount": "3",
"links": {
"notes": "https://...api-us1.com/api/3/accounts/1/notes",
"accountCustomFieldData": "https://...api-us1.com/api/3/accounts/1/accountCustomFieldData",
"accountContacts": "https://...api-us1.com/api/3/accounts/1/accountContacts",
"emailActivities": "https://...api-us1.com/api/3/accounts/1/emailActivities",
"contactEmails": "https://...api-us1.com/api/3/accounts/1/contactEmails"
}
}
],
"pagination": {
"page": "1",
"limit": "20",
"total": "30",
"next_page": 2,
"prev_page": null
}
}

Account Fields

FieldTypeDescription
idStringAccount ID
nameStringAccount name
accountUrlStringAccount website URL
createdTimestampDateTimeCreated timestamp
updatedTimestampDateTimeUpdated timestamp
contactCountStringNumber of contacts
dealCountStringNumber of deals
linksObjectRelated resource URLs

Ordering Example

# Sort by name descending
GET /v1/integrations/activecampaign/export/accounts?orders[name]=DESC
Authorization: Bearer {jwt_token}

# Sort by created timestamp ascending (oldest first)
GET /v1/integrations/activecampaign/export/accounts?orders[createdTimestamp]=ASC
Authorization: Bearer {jwt_token}

Filtering Example

# Filter by name
GET /v1/integrations/activecampaign/export/accounts?filters[name]=Acme
Authorization: Bearer {jwt_token}

📊 Pagination Details

Response Structure

{
"pagination": {
"page": "1", // Current page number
"limit": "50", // Records per page
"total": "150", // Total record count
"next_page": 2, // Next page number (null if last page)
"prev_page": null // Previous page number (null if first page)
}
}
// First page
GET /export/contacts?page=1&limit=50

// Next page
GET /export/contacts?page=2&limit=50

// Last page calculation
const lastPage = Math.ceil(total / limit);

🔧 Advanced Query Examples

Multi-Field Ordering

# Sort by status (ascending), then value (descending)
GET /v1/integrations/activecampaign/export/deals?orders[status]=ASC&orders[value]=DESC
Authorization: Bearer {jwt_token}

Multi-Field Filtering

# Filter by first name AND organization
GET /v1/integrations/activecampaign/export/contacts?filters[firstName]=John&filters[orgid]=1
Authorization: Bearer {jwt_token}

Complex Query

# Paginated, filtered, and ordered
GET /v1/integrations/activecampaign/export/contacts?page=2&limit=100&orders[email]=ASC&filters[deleted]=0
Authorization: Bearer {jwt_token}

⚠️ Error Handling

ErrorStatusResponse
No credentials found400{ success: false, errno: 400, message: "Unauthorised Access." }
Invalid credentials401/403Error from ActiveCampaign API
Rate limit exceeded429Error from ActiveCampaign API
Invalid parameters400Error from ActiveCampaign API

📝 Important Notes

  • 🔑 Authentication Required: Must save credentials before exporting
  • 📊 Pagination: Default limit is 20, maximum depends on ActiveCampaign plan
  • 🔍 Filtering: Case-sensitive exact match filtering
  • 📈 Ordering: Multiple fields supported for complex sorting
  • Performance: Large exports (10,000+ records) require multiple requests
  • 🌍 Base URL: Uses stored account-specific base URL
  • 🔄 Live Data: Always fetches current data from ActiveCampaign

🚀 Best Practices

For Large Exports

  1. Use Pagination: Don't fetch all at once
  2. Optimize Page Size: 100-250 records is optimal
  3. Implement Progress Tracking: Show progress for long exports
  4. Handle Errors: Implement retry logic for failed pages
  5. Cache Results: Store frequently accessed data

For Performance

  1. Filter Early: Apply filters to reduce data transfer
  2. Limit Fields: Request only needed fields (if API supports)
  3. Batch Processing: Use queue-based processing for large syncs
  4. Monitor Rate Limits: Respect ActiveCampaign's rate limits

Example Queue Implementation

// Queue job for large contact export
{
type: 'activecampaign-export-contacts',
account_id: '12345',
user_id: 'user_abc',
page_size: 100,
filters: { deleted: '0' },
orders: { email: 'ASC' }
}
💬

Documentation Assistant

Ask me anything about the docs

Hi! I'm your documentation assistant. Ask me anything about the docs!

I can help you with:
- Code examples
- Configuration details
- Troubleshooting
- Best practices

Try asking: How do I configure the API?
09:30 AM