Best Practices

Join campaign details with campaign reports

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.

Use Append for multi-account reporting

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.

Pull subscribers and mailing lists separately

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.

Data refresh and scheduling

Schedule around your send cadence

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.

Use daily refreshes for subscriber data

Subscriber status can change daily as people bounce or unsubscribe. A daily refresh keeps your destination list health data current without hammering the API.

Performance optimization

Avoid pulling campaign recipients for every campaign

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.

Use AI destinations for narrative reporting

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.

Common pitfalls

triangle-exclamation

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

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

Last updated

Was this helpful?