Performance data from Klaviyo
Better Email can show how the emails you build actually perform after they are sent from Klaviyo: sends, deliveries, opens, clicks, bounces, unsubscribes, spam complaints, top clicked links, and how engagement develops in the hours after a send.
This guide covers the API key scopes involved and how to switch it on. It assumes you have already connected Klaviyo to Better Email.
For what the finished result looks like and how to read it, see Campaign performance.
Your profile data stays in Klaviyo
Before anything else, the most important thing to know:
Better Email never receives, processes, or stores profile-level data. No email addresses, no profile IDs, no per-recipient events.
Better Email reads Klaviyo's reporting endpoints, which return campaign-level totals — counts, link URLs, and send metadata such as subject lines. The per-person events behind those totals stay in your Klaviyo account.
A useful side effect: because Better Email only reads campaign-level totals, API usage stays small and predictable — roughly one report request per hour, whether you send a thousand emails or ten million.
Nothing to set up inside Klaviyo
Klaviyo reports the full set of metrics itself, so there is no aggregation job to install and no data to prepare. Everything in the report — including spam complaints, total as well as unique opens and clicks, clicks per link, and the engagement timeline — arrives as soon as the integration is switched on.
The only requirement is an API key with the right scopes.
API key scopes
Performance data needs a private API key with these scopes:
| Scope | Needed for |
|---|---|
campaigns:read | Campaign names, subjects, send times, and the performance report |
metrics:read | Per-link clicks and the engagement timeline |
A key you created earlier only for exporting templates will not have these scopes, and Klaviyo keys cannot be edited after they are created. Create a new private key with the scopes you need, then paste it into the integration — see the Klaviyo integration guide for the full list, including the scopes for exporting and for creating campaigns.
If the key is missing a scope, Better Email records the integration as needing setup rather than reporting a sync failure. Update the key and the next sync picks it up.
Enable performance data in Better Email
- Open your Klaviyo integration in Better Email.
- Turn on
Sync performance data. - Save the integration.
Better Email refreshes performance data about once an hour.
How campaigns are matched
Better Email matches a Klaviyo campaign to the campaign you built by name: the Klaviyo campaign's name is compared with the name of the Better Email campaign that was exported to that integration.
In practice that means keeping the name you gave the campaign in Better Email when you build the campaign in Klaviyo. If you rename it to something unrelated, the send still goes out normally — Better Email simply has nothing to attach the numbers to.
If you let Better Email create the campaign in Klaviyo the name matches by construction, so there is nothing to keep in step.
Good to know
- Performance data covers sends from the last 30 days at the time the feature is enabled, and keeps history for everything synced after that.
- Metrics for a send keep refreshing while it is inside that 30-day window, so opens and clicks that arrive days after a send are still counted.
- The engagement timeline covers the first 7 days after each send, in 3-hour intervals.
- Klaviyo's reporting takes a few minutes to catch up with a send. A campaign that has just gone out can show its name and send time with the counters still at zero — they fill in on a later sync.
- A/B tested campaigns are reported as one campaign, matching how Klaviyo reports them.
- Campaigns only. Emails sent from Klaviyo flows are not included.
Troubleshooting
No performance data at all. Check that Sync performance data is enabled on the integration, and that the private API key has campaigns:read and metrics:read. Klaviyo keys cannot be edited after creation, so a key that predates this feature needs replacing rather than updating.
A campaign shows its name and send time but every number is zero. Either the send is very recent and Klaviyo's reporting has not caught up yet, or the campaign genuinely has no engagement. Give it an hour and check again.
A sent campaign shows no performance at all. The Klaviyo campaign's name probably differs from the Better Email campaign's name — see How campaigns are matched.
The engagement chart and top links are empty, but the headline numbers are there. Better Email could not find Klaviyo's Opened Email and Clicked Email metrics with the current key. Check that the key has metrics:read.
Numbers differ slightly from Klaviyo's own reports. Opens and clicks keep accruing after a send, and the two systems refresh at different moments. Better Email refreshes hourly. Metrics for a send stop updating 30 days after it was sent.