Best Practices

Join Reports and Emails in one data flow

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.

Use Aggregate to monitor list health

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.

Append data from multiple accounts

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.

Data refresh and scheduling

Match refresh frequency to send cadence

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.

Refresh Reports shortly after sends

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.

Performance optimization

Pull only the entities you need

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.

Use AI destinations for quick analysis

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.

Common pitfalls

triangle-exclamation

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

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

Last updated

Was this helpful?