> 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/zoho-campaign/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 campaign details with campaign reports</strong></td><td>Campaign reports contain the performance numbers, but campaign details hold the context (subject line, sender, schedule). Join them on Campaign ID in your data flow to get a complete picture in one table.</td></tr><tr><td><strong>Use Append for multi-account reporting</strong></td><td>If your organization runs multiple Zoho Campaigns accounts, add each as a separate source in the same data flow and use Append to combine them into one unified dataset in your destination.</td></tr><tr><td><strong>Pull subscribers and mailing lists separately</strong></td><td>Don't rely solely on Total contacts for list health reporting. Pull the Subscribers entity for status-level detail (active vs. bounced vs. unsubscribed) to spot list decay before it affects deliverability.</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>Schedule around your send cadence</strong></td><td>Sync campaign reports a few hours after your typical send time — open and click rates stabilize within 24–48 hours of a send. Syncing too soon captures only partial engagement data.</td></tr><tr><td><strong>Use daily refreshes for subscriber data</strong></td><td>Subscriber status can change daily as people bounce or unsubscribe. A daily refresh keeps your destination list health data current without hammering the API.</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>Avoid pulling campaign recipients for every campaign</strong></td><td>The campaign recipients entity can return very large datasets for high-volume senders. Pull it only for specific campaigns you're investigating rather than as a blanket sync.</td></tr><tr><td><strong>Use AI destinations for narrative reporting</strong></td><td>Send campaign reports data to Claude or ChatGPT to auto-generate written summaries of campaign performance — useful for weekly email marketing recaps without manual writeups.</td></tr></tbody></table>

## Common pitfalls

{% hint style="danger" %}
Don't use raw open rates from the API as your single source of truth. Apple Mail Privacy Protection inflates open counts — always cross-reference with click data to assess true engagement.
{% endhint %}

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

* Join campaign reports with campaign details for full context
* Monitor bounce and unsubscribe fields alongside opens and clicks
* Use tags and topics fields to filter and segment performance in your destination
* Test your data flow with a manual run before scheduling
  {% endcolumn %}

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

* Pull all entities in one data flow if you have large lists — split them up to avoid rate limit errors
* Rely on Recent campaigns as your only campaign history source — it only returns a recent window
* Ignore the subscriber status field — treating bounced contacts the same as active ones skews list size 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/zoho-campaign/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.
