# 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 the Report entity for performance metrics</strong></td><td>The Campaigns list entity shows campaign metadata (status, channel, send time) but not performance numbers. If you need opens, clicks, or revenue, use the Report entity and select the metrics you want explicitly.</td></tr><tr><td><strong>Filter profiles before exporting</strong></td><td>Exporting your full Profiles list for large accounts causes frequent timeouts. Use the Advanced filters option to export only the segment you need — for example, active subscribers or a specific list.</td></tr><tr><td><strong>Join Klaviyo and Shopify data for revenue accuracy</strong></td><td>Klaviyo's attributed revenue follows its own attribution window, which may not match your Shopify totals. Use Coupler.io's Join transformation to cross-reference Klaviyo revenue with Shopify order data for a cleaner picture.</td></tr><tr><td><strong>Use Append to combine multiple accounts</strong></td><td>If you manage Klaviyo for multiple brands or clients, create a separate data flow per account and use the Append transformation to merge them into one destination table.</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>Always do a successful manual run first</strong></td><td>Before scheduling, run the data flow manually and verify the data in your destination. This confirms your API key, entity, and date range are all set correctly — and is required before scheduling is available.</td></tr><tr><td><strong>Keep Report date ranges under one year</strong></td><td>The Klaviyo API enforces a 1-year maximum on Report requests. For long-term trend data, use multiple data flows (one per year) and combine them with Append, rather than trying to fit everything into one run.</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>Reduce dimensions to speed up Report queries</strong></td><td>Each additional dimension increases response size and processing time. Only include dimensions you'll actually use in your report. If you're timing out, remove low-value dimensions like URL or Email domain first.</td></tr><tr><td><strong>Use Split data by period for trend analysis</strong></td><td>Instead of exporting a flat aggregate for the whole date range, use the Split data by period option (Day, Week, Month) to get time-series data directly from the API — this is more reliable than trying to group it yourself downstream.</td></tr></tbody></table>

## Common pitfalls

{% hint style="danger" %}
**Don't use a metric ID that no longer exists.** If you delete or change metrics in Klaviyo, your Report data flow will fail with a 404 error. After making changes in Klaviyo, re-open your data flow and reselect your metrics from scratch.
{% endhint %}

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

* Use Advanced filters on Profiles to limit export size
* Re-select metrics after making changes in your Klaviyo account
* Use the Split by period option for time-series data
* Verify revenue metrics against your e-commerce platform's attribution settings
  {% endcolumn %}

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

* Export the full Profiles list for large accounts without filtering
* Set a Report date range longer than 12 months in a single data flow
* Assume Klaviyo's attributed revenue matches your store's reported revenue without checking attribution windows
* Use a Public API key — it will always fail
  {% endcolumn %}
  {% endcolumns %}
