> 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/campayn/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>Join Reports and Emails in one data flow</strong></td><td>Add both the Emails and Reports entities to the same data flow and use Coupler.io's Join transformation on campaign ID. This gives you a single table with subject lines, send dates, and engagement metrics — far more useful than two separate sheets.</td></tr><tr><td><strong>Use Aggregate to monitor list health</strong></td><td>Pull the Contacts entity and apply an Aggregate transformation to count contacts by subscription status (active, unsubscribed, bounced). This gives you a quick health check on your audience without manual counting.</td></tr><tr><td><strong>Append data from multiple accounts</strong></td><td>If your organization uses more than one Campayn account, add multiple sources in the same data flow and use Append to combine them into a unified dataset for cross-account 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>Match refresh frequency to send cadence</strong></td><td>If you send campaigns weekly, a daily refresh is more than enough. If you send daily, consider a refresh every few hours. Refreshing more often than your send frequency just pulls duplicate data.</td></tr><tr><td><strong>Refresh Reports shortly after sends</strong></td><td>Open and click data accumulates in the 24–48 hours after a send. Schedule your Reports refresh to run a day or two after your typical send time to capture the bulk of engagement activity.</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>Pull only the entities you need</strong></td><td>Avoid pulling all five entities into a single data flow if you only need reports. Separate data flows for separate purposes keep runs faster and make troubleshooting easier.</td></tr><tr><td><strong>Use AI destinations for quick analysis</strong></td><td>Send your Reports data directly to ChatGPT, Claude, or Gemini to get instant narrative summaries of campaign performance — useful for weekly email briefs without building a full dashboard.</td></tr></tbody></table>

## Common pitfalls

{% hint style="danger" %}
Do not share or expose your Campayn API key in public documents, shared spreadsheets, or version-controlled code. Anyone with your API key has full read access to your account data. Regenerate it immediately if it's ever compromised.
{% endhint %}

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

* Generate your API key from an admin account to ensure full data access
* Join Reports with Emails so your metrics always have context (subject line, send date)
* Run a manual data flow first to confirm data looks correct before scheduling
  {% endcolumn %}

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

* Use a restricted or read-limited user's API key — it may silently return partial data
* Expect Reports to contain per-recipient data — it's campaign-level only
* Pull Contacts and Lists separately and manually try to reconcile counts — use the Join transformation instead
  {% 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/campayn/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.
