Working with Klaviyo rate metrics outside of the platform can be a real headache, and there are several reasons for why this is the case:
The metrics are based on unique opens and clicks
In the Klaviyo interface, Open Rate/Click Rate are attributed differently depending on if it’s a campaign or flow message.
Limitations in the Klaviyo API prevent us from mirroring how these metrics work in the platform
Working around the limitations
Depending on how your end report looks, the approach for creating your Rate Metrics is likely to vary. The most important factor to consider is what breakdown you are looking to include in your end report:
Case A: Open/Click Rate by Campaign
Case B: Open/Click Rate by Flow
Case A: Open/Click Rate by Campaign
Background:
When viewing campaigns in Klaviyo, rate metrics are shown as unique lifetime by default. In other words, this means that you will get a Unique Open/Click Rate for all unique opens and clicks that have happened since your campaign was sent. Changing the date range in this Klaviyo view simply filters the list of campaigns based on send date.
Unfortunately, this functionality is not available in the Klaviyo API. When fetching a campaign's unique opens or clicks via the API, a specific time interval must be specified (day
/week
/month
). This means that we only can get unique events happening within a given period—versus showing the unique total since the campaign was sent in the Klaviyo interface.
Example: If we fetch campaign data using the month
interval and User A opens an email once in November and once in December, the user would be counted twice since it stretches over two time intervals. This means that rates created outside of Klaviyo often will have inflated numbers (due to double counting).
Instructions:
1. Create a Unique Opens (or clicks) custom metric
Start by creating a rule-based Custom Metric in Funnel called something along the lines of Unique Opens (Month) and give it the value of the field Opened Email Unique, Calendar Month, Message
(or clicks if you are making a Click Rate field).
This step is important as it will make this field aggregatable. Without this step, we cannot sum unique opens happening across two time intervals (in this case months). More on none-aggregatable fields here.
2. Create your Rate Metric
You can now create your formula-based Rate Metric using the Unique Opens (Month)
field that you just created, as well as the Received Email
field.
3. Using the field and its limitations
💡 The data for the unique metrics will be attributed to the first date of the time interval selected in your custom metric. In other words, since we chose Month
as the interval in the previous step, we will always need to include the first day of the month in our report's date range when using either of the fields we created.
We can now use the field in our Data Explorer or end reports. In the below screenshot we are looking at a list of campaigns, filtered by Send Date
to ensure that we only show campaigns sent this month.
✅ Open rate with a filtered list of campaigns without a date breakdown
❌ Open rate by Campaign will not work with a Month
breakdown since all email sends happened in December
✅ Note: Even without a Month
breakdown, Open rate is likely to be slighly inflated when comparing with the number seen in the Klaviyo interface. This is due to unique opens from December and January being summed in Funnel.
Case B: Open/Click Rate by Flow
Background:
Unlike Campaigns, Flows are in the realm of marketing automation. Each flow consists of several emails (and/or SMS) that trigger when a defined condition is met.
When viewing flows in Klaviyo, we are shown metrics of all events (e.g. sends, opens, clicks) happening within the selected date span. While this is identical to how the API works, we are still limited by Unique Opens and Clicks needing to be fetched with a time interval (day
/week
/month
)
Example: If we fetch flow data from last month (January), Klaviyo will give us all events (sends/opens/clicks) coming from Flows that happened in January. If we also want to fetch Unique Opens
from January, we will need to specify if we want Unique Opens
split by day
, week
, or the full month
.
Instructions:
1. Create a Unique Opens (or clicks) custom metric
Start by deciding if you plan on reporting on your Flow data by day, week, or month.
Each interval you plan on reporting on will require it's own custom metric. For the sake of this example, let's say we want to create a table that compares Unique Open Rate between our Flows, month by month.
We will then start in the same way as demonstrated above in the campaign example:
Start by creating a rule-based Custom Metric in Funnel called something along the lines of Unique Opens (Month, flow) and give it the value of the field Opened Email Unique, Calendar Month, Flow
(or clicks if you are making a click rate field).
This step is important as it will make this field aggregatable. Without this step, we cannot sum unique opens happening across two time intervals (in this case months). More on none-aggregatable fields here.
2. Create your Rate Metric
You can now create your formula-based Rate Metric using the Unique Opens (Month, flow)
field that you just created, as well as the Received Email
field.
3. Using the field and its limitations
💡 The data for the unique metrics will be attributed to the first date of the time interval selected in your custom metric. In other words, since we chose Month
as the interval in the previous step, we will always need to include the first day of the month in our report's date range when using either of the fields we created.
We can now use the field in our Data Explorer or end reports. In the below screenshot we are looking at our list of Flows by month (since we opted for the month
interval for our Unique Opens
metric).
Keep in mind when viewing flow data spanning across multiple time intervals (day/week/month): Unique opens/clicks will sum across intervals, leading to slightly inflated numbers from recipients who opened/clicked emails in both December and January.