> For the complete documentation index, see [llms.txt](https://docs.coupler.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coupler.io/sources/category/email/campaign-monitor/best-practices.md).

# Best Practices

## Recommended setup

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Use an account-level API key</strong></td><td>If you manage multiple clients or want access to suppression lists and admin data, use an account-level key. Client-level keys are scoped and will silently exclude data from other clients.</td></tr><tr><td><strong>Set a start date for large accounts</strong></td><td>If you have years of campaign history, set a start date in the data flow to limit how much data is pulled on the first run. This keeps the initial sync fast and avoids timeouts.</td></tr><tr><td><strong>Add multiple entities to one data flow</strong></td><td>Rather than creating separate data flows for Sent campaigns, Subscriber lists, and People, add them all as sources in a single data flow. Use the Join or Append transformation to combine them for richer reporting.</td></tr></tbody></table>

## Data refresh and scheduling

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Wait before snapshotting campaign metrics</strong></td><td>Open and click data continues to update for 24–48 hours after a campaign is sent. Schedule your data flow to run at least a day after typical send times to capture more stable metrics.</td></tr><tr><td><strong>Refresh suppression lists regularly</strong></td><td>If you're syncing suppression data to a CRM or ad platform, set a frequent refresh schedule. Stale suppression lists can lead to compliance issues or wasted ad spend on suppressed contacts.</td></tr></tbody></table>

## Performance optimization

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Filter People by list, not account-wide</strong></td><td>Pulling all People across an account with many large lists can be slow and produce messy output due to inconsistent custom fields. Scope your source to a specific subscriber list for cleaner, faster exports.</td></tr><tr><td><strong>Use Aggregate for campaign trend reporting</strong></td><td>Instead of exporting every row of raw campaign data to a spreadsheet, apply the Aggregate transformation in Coupler.io to group metrics by month or campaign type before they land in your destination.</td></tr></tbody></table>

## Common pitfalls

{% hint style="danger" %}
Don't confuse Sent, Draft, and Scheduled campaign entities — they are separate and only Sent campaigns include performance metrics like opens and clicks. Building a report on Draft campaigns will return no engagement data.
{% endhint %}

{% columns %}
{% column %}
**Do**

* Use account-level API keys for agency or multi-client setups
* Set a start date to scope syncs to relevant time periods
* Re-run the data flow after 24–48 hours to capture settled campaign metrics
* Use the Append transformation to combine Sent campaigns from multiple client accounts into one report
  {% endcolumn %}

{% column %}
**Don't**

* Rely on a single snapshot for open/click rates taken immediately after sending
* Pull People across all lists when custom fields differ per list
* Use a client-level API key when you need account-wide data like suppression lists or admins
* Build dashboards on Draft or Scheduled campaign data expecting performance metrics
  {% endcolumn %}
  {% endcolumns %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.coupler.io/sources/category/email/campaign-monitor/best-practices.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
