Skip to main content
tkejriwal
Contributor I
Contributor I
December 16, 2025
Solved

Question about campaign report values & A/B message aggregation

  • December 16, 2025
  • 2 replies
  • 145 views

Hi Klaviyo Devs,

We’re currently building our first Klaviyo integration, and overall the experience has been very smooth so far — thank you for the great APIs and documentation.

We’re running into some confusion specifically around querying campaign report values, and we were hoping you could provide some guidance or clarification.

What we’re trying to achieve

For a given campaign, we’d like to retrieve metrics such as:

  • Open rate

  • Bounce / failed rate

In particular, we’re unsure how this should work when:

  • A campaign uses A/B testing

  • The campaign contains multiple messages

  • We want aggregated metrics at the campaign level (or clarity on how to aggregate per-message metrics correctly)

What we’ve tried

We attempted to use the campaign-values-reports endpoint to retrieve these metrics, but haven’t been able to get it working as expected.

Example request we tried:

curl --location 'https://a.klaviyo.com/api/campaign-values-reports' \
--header 'revision: 2025-10-15' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Accept: application/vnd.api+json' \
--header 'Authorization: Klaviyo-API-Key <API_KEY>' \
--data '{
"data": {
"type": "campaign-values-report",
"attributes": {
"statistics": [
"conversion_uniques",
"failed_rate"
],
"timeframe": {
"key": "last_week"
},
"conversion_metric_id": "<string>",
"filter": "<string>"
}
}
}'

However, this does not return usable results for our use case, and we’re not confident we’re using the correct approach.

Questions

  1. What is the recommended way to retrieve open rate and bounce/failed rate for a campaign?

  2. How should metrics be handled for A/B campaigns with multiple messages?

    • Are metrics aggregated automatically at the campaign level?

    • Or should we fetch metrics per message and aggregate ourselves?

  3. Is campaign-values-reports the correct endpoint for this, or should we be using a different API altogether?

We’d really appreciate any guidance or examples you can share. Happy to provide more context if needed.

Thanks in advance for your help,
Tanmay

    Best answer by Byrne C

    Hi ​@tkejriwal,

    I can confirm that when calling the Query Campaign Values endpoint, the values from both variations of the A/B test will be bundled together. At the moment, there isn’t a way to separate these values by variation. 

    You mentioned that when you used this endpoint, you haven’t seen it work as expected. Would you mind providing a bit more information on what you notice happening? Is the API call failing, or is certain information missing/not appearing in a certain way? Looking forward to hearing back from you and working to find a solution!

    2 replies

    talha.hussain
    Problem Solver IV
    Problem Solver IV
    December 17, 2025

    Hi ​@tkejriwal, Klaviyo aggregates campaign metrics at the campaign level once an A/B test completes. After a winner is chosen, opens, clicks, and revenue are rolled up and attributed to the winning message in the main campaign report. This is expected behavior and cannot be changed in the UI.

    If you need true A vs B performance data, you have two options:

    • View the A/B test results while the test is active, which shows variation level metrics

    • Export engagement metrics or use the Klaviyo API to pull raw event level data and analyze variation performance externally

    There is no way to force permanent per variation reporting in the campaign summary itself.

    Talha Hussain - Senior Email Marketing Spacilest
    Byrne C
    Community Manager
    Byrne CAnswer
    Community Manager
    December 18, 2025

    Hi ​@tkejriwal,

    I can confirm that when calling the Query Campaign Values endpoint, the values from both variations of the A/B test will be bundled together. At the moment, there isn’t a way to separate these values by variation. 

    You mentioned that when you used this endpoint, you haven’t seen it work as expected. Would you mind providing a bit more information on what you notice happening? Is the API call failing, or is certain information missing/not appearing in a certain way? Looking forward to hearing back from you and working to find a solution!