Skip to main content
Solved

Discrepancy between Metric Aggregates API and Reporting API data for “Placed Order” metric

  • January 9, 2026
  • 1 reply
  • 76 views

Forum|alt.badge.img

Hi everyone,

I’m facing a data discrepancy issue between the Metric Aggregates API and the Reporting API in Klaviyo, and I’d appreciate any guidance.

Context

I’m fetching revenue data for the Placed Order metric using:

  1. Metric Aggregates API

  2. Campaign Values Reporting API

The issue is that Reporting API data matches the Klaviyo dashboard UI, but Metric Aggregates API data does not, even when filtering by the same campaign.

Metric Aggregates API

Endpoint:
https://a.klaviyo.com/api/metric-aggregates

Request body:

 

{ "data": { "type": "metric-aggregate", "attributes": { "metric_id": "Y_metric_id", "measurements": ["sum_value"], "interval": "day", "timezone": "UTC", "page_size": 500, "by": ["$attributed_message"], "filter": [ "greater-or-equal(datetime,2025-12-01T00:00:00)", "less-than(datetime,2025-12-31T00:00:00)" ] } } }

Reporting API

Request body:

 

{ "data": { "type": "campaign-values-report", "attributes": { "statistics": ["conversion_value"], "timeframe": { "start": "2025-12-01T00:00:00Z", "end": "2025-12-31T23:59:59Z" }, "conversion_metric_id": "my_metric_id" } } }

Observations

  • For the same campaign, values returned by both APIs do not match.

  • The Reporting API values match exactly with the Klaviyo dashboard UI.

  • The Metric Aggregates API returns lower/different values.

  • I checked the account timezone using:

     

    https://a.klaviyo.com/api/accounts

    It returns Europe/London.

  • I also tried setting timezone: "Europe/London" in the Metric Aggregates API, but the results remain unchanged.

My Questions

  1. Is the Metric Aggregates API based strictly on event occurrence time, while the Reporting API is based on send/attribution logic used in the UI?

  2. Is it expected that campaign-level revenue will not match between these two APIs?

  3. Is there a recommended way to align Metric Aggregates data with dashboard campaign revenue?

  4. Are there any known caveats around timezone handling or attribution windows for the Metric Aggregates API?

This discrepancy is causing reporting issues in our system, so any clarification or best practice would be really helpful.

Thanks in advance!

Best answer by cadence

Hey ​@Ayesha, there are some more details in this Klaviyo Developer Guide around the expected behavior for the Metric Aggregates  API -  https://developers.klaviyo.com/en/docs/using_the_query_metric_aggregates_endpoint.


To answer your questions: 

  1. Is the Metric Aggregates API based strictly on event occurrence time, while the Reporting API is based on send/attribution logic used in the UI?

Yes, that’s exactly right. This is the reason for the discrepancies.

The Reporting APIs were built to match the Campaign/Flow analytics UIs, which group events based on attributed send time. The Metric Aggregates) API groups events based on time of the event. 

  1. Is it expected that campaign-level revenue will not match between these two APIs?

It is expected that the numbers returned by these APIs will be different given the difference in how the events are grouped by date. 

We can imagine a simple example where a campaign is sent on Dec 31. If your attribution window is set to 3 days, then all orders placed 3 days after opens/clicks on that campaign will be attributed to that campaign. If you filter both APIs to the date range of the month of December (as in your post): 

Metric Aggregates API- will only return for this campaign revenue from orders that occurred on the send date, Dec 31.

Reporting API - will tell you all the revenue generated from this campaign 

  1. Is there a recommended way to align Metric Aggregates data with dashboard campaign revenue?

No, given the fundamental discrepancy mentioned above, there isn’t a way to get the outputs from the Metric Aggregates API to exactly match the data in the campaign revenue API, which is returned by the reporting API.

If your goal is to match the dashboard campaign revenue, you should use the campaign reporting API. 

  1. Are there any known caveats around timezone handling or attribution windows for the Metric Aggregates API?

When grouping by $attributed_message, the attribution used will still be based on the attribution windows for your account.  

Re timezones, I think by default Klaviyo will use your account timezone (Europe/London) to process the query. I think the timezone input in the req payload is an override to that.

I hope this helps! 

Cadence / Book a demo

1 reply

cadence
Expert Problem Solver III
Forum|alt.badge.img+12
  • Expert Problem Solver III
  • Answer
  • January 10, 2026

Hey ​@Ayesha, there are some more details in this Klaviyo Developer Guide around the expected behavior for the Metric Aggregates  API -  https://developers.klaviyo.com/en/docs/using_the_query_metric_aggregates_endpoint.


To answer your questions: 

  1. Is the Metric Aggregates API based strictly on event occurrence time, while the Reporting API is based on send/attribution logic used in the UI?

Yes, that’s exactly right. This is the reason for the discrepancies.

The Reporting APIs were built to match the Campaign/Flow analytics UIs, which group events based on attributed send time. The Metric Aggregates) API groups events based on time of the event. 

  1. Is it expected that campaign-level revenue will not match between these two APIs?

It is expected that the numbers returned by these APIs will be different given the difference in how the events are grouped by date. 

We can imagine a simple example where a campaign is sent on Dec 31. If your attribution window is set to 3 days, then all orders placed 3 days after opens/clicks on that campaign will be attributed to that campaign. If you filter both APIs to the date range of the month of December (as in your post): 

Metric Aggregates API- will only return for this campaign revenue from orders that occurred on the send date, Dec 31.

Reporting API - will tell you all the revenue generated from this campaign 

  1. Is there a recommended way to align Metric Aggregates data with dashboard campaign revenue?

No, given the fundamental discrepancy mentioned above, there isn’t a way to get the outputs from the Metric Aggregates API to exactly match the data in the campaign revenue API, which is returned by the reporting API.

If your goal is to match the dashboard campaign revenue, you should use the campaign reporting API. 

  1. Are there any known caveats around timezone handling or attribution windows for the Metric Aggregates API?

When grouping by $attributed_message, the attribution used will still be based on the attribution windows for your account.  

Re timezones, I think by default Klaviyo will use your account timezone (Europe/London) to process the query. I think the timezone input in the req payload is an override to that.

I hope this helps! 

Cadence / Book a demo