Best Practices
Recommended setup
Use separate data flows per entity
Each Coupler.io data flow exports one ActiveCampaign entity. Set up a dedicated flow for Campaigns, one for Contacts, and one for Deals to keep your data clean and easy to refresh independently. Use Coupler.io's data join to combine entities when needed.
Use an admin API key for full data access
The ActiveCampaign API respects the permissions of the user account that owns the API key. Using a non-admin key can result in restricted deal data (pipelines you don't have access to) or missing entities. Authenticate with an admin account key to ensure full access.
Start with a full export to discover available columns
Run the data flow once without any column filtering to see all available fields in your destination. Then use that output to identify which columns you actually need and refine your setup accordingly.
Divide deal values by 100 in your destination
ActiveCampaign stores deal values in the smallest currency unit (cents for USD). Always apply a divide-by-100 transformation in your destination tool or via a Coupler.io formula column so monetary values display correctly in dashboards.
Data refresh and scheduling
Use "Replace" mode for standard exports
Because the ActiveCampaign source does not have a built-in date filter, each run exports all records. Use "Replace" (overwrite) destination mode to ensure your destination always reflects the current state of your data, rather than accumulating duplicate rows over time.
Daily refresh for Campaigns and Deals
Campaign metrics (opens, clicks, bounces) update as recipients engage with emails. A daily refresh keeps your reporting current without unnecessary API usage. For Deals in active sales cycles, consider a twice-daily refresh to capture same-day pipeline changes.
Less frequent refresh for Lists and Segments
Lists and Segments change less frequently than Contacts or Deals. A weekly refresh is typically sufficient for monitoring list counts and segment definitions. Adjust frequency if your team actively manages lists daily.
Schedule during off-peak hours for large accounts
For accounts with large contact databases (50,000+ contacts), schedule data flows to run overnight. This avoids API rate limit pressure during business hours and reduces the risk of timeouts competing with normal ActiveCampaign usage.
Performance optimization
Avoid running multiple flows simultaneously
Running several ActiveCampaign data flows at the same time increases API request volume and can trigger rate limits. Stagger your data flow schedules by at least 15–30 minutes to spread the load.
Filter deleted contacts in your destination, not in the source
Since the source exports both active and deleted contacts, apply a filter in your destination (e.g., a Google Sheets filter or Looker Studio filter on deleted = 0) rather than trying to filter at the API level. This is more reliable and lets you keep the full raw export for auditing.
Use Coupler.io formula columns for deal value conversion
Instead of adding manual calculations in your destination spreadsheet, set up a Coupler.io formula column that divides the value field by 100. This keeps the transformation embedded in the data flow and consistent across all downstream uses of the data.
Join Deals with Contacts using the contact ID
The Deals entity includes a contact field (the linked contact ID). To enrich deals with contact details (email, name), set up a separate Contacts data flow and join on contact (from Deals) = id (from Contacts).
Dashboard accuracy
Use unique metrics for email performance KPIs
When building email dashboards, prefer uniqueopens and uniquelinkclicks over their non-unique counterparts for calculating open rate and click rate. The non-unique fields count multiple opens/clicks from the same contact, which inflates rates.
Use status codes for deal stage filtering
The Deals status field uses numeric codes: 0 = open, 1 = won, 2 = lost. Build your pipeline dashboards using these codes to filter correctly. Label them with a lookup table or a formula column for readable display in charts.
Account for restricted pipeline deals in totals
If your API key's user doesn't have access to all pipelines, restricted deals appear with isDisabled = 1 and minimal data. If your deal count totals seem low, check whether restricted deals are affecting the export and consider using an admin API key.
Track both hard and soft bounces separately
The Campaigns entity includes separate hardbounces and softbounces fields. Hard bounces indicate permanent delivery failures and should be monitored closely for list hygiene. Soft bounces are temporary — track them separately rather than combining them into a single "bounce" metric.
Common pitfalls to avoid
Do
Use an admin API key so you get complete data across all pipelines and entities
Divide deal
valueby 100 to display correct monetary amountsUse "Replace" destination mode to avoid accumulating duplicate rows
Filter on
deleted = 0in your destination to exclude deleted contactsUse
uniqueopensanduniquelinkclicksfor open rate and click rate calculationsStagger multiple data flow schedules to avoid API rate limits
Don't
Don't try to combine multiple entities in a single data flow — use data join instead
Don't use "Append" mode for standard ActiveCampaign exports — it accumulates duplicate records over time
Don't rely on ActiveCampaign's in-app reports being available via API — only raw entity data is exported
Don't expect automation run history or individual email reply content — these are not available through the API
Don't run multiple data flows simultaneously on large accounts — stagger them to avoid rate limits
ActiveCampaign automation data is not available via API. Coupler.io exports raw entity records (Campaigns, Contacts, Deals, etc.) only. Automation-specific data — such as which contacts are in which automation, automation step history, or goal completion rates — must be analyzed within ActiveCampaign's built-in reports.
Last updated
Was this helpful?
