Best Practices

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 value by 100 to display correct monetary amounts

  • Use "Replace" destination mode to avoid accumulating duplicate rows

  • Filter on deleted = 0 in your destination to exclude deleted contacts

  • Use uniqueopens and uniquelinkclicks for open rate and click rate calculations

  • Stagger 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

triangle-exclamation

Last updated

Was this helpful?