Marketing metrics explained

Average email open rate: what counts as good

The average email open rate depends on who is on the list and how they got there.

A list of customers who bought last month opens at a different rate from a list bought from a trade show, and an automated message sent the moment someone abandons a basket differs again. The other thing that moves the figure is that an open is no longer a reliable sign that anyone read anything.

How an open is counted

An open is recorded when a tiny image in the email is fetched from the sender's server. The open rate is unique opens divided by delivered emails, where delivered means sent minus bounces. The email open rate formula page has the Google Sheets version.

Some mail clients and privacy features now fetch every image in an email when it arrives, whether or not the recipient ever looks at it. Each of those fetches counts as an open. A list with a lot of those recipients will report a high open rate that says nothing about attention. The effect is uneven. It depends on which mail clients your subscribers use, so it inflates one list more than another.

Published benchmarks

Email platforms publish averages across the accounts they host, usually split by industry and by campaign type. The year matters, because figures from before the pre-loading change and after it are not comparable; everything below is from after it.

ContextReported open rateSource
All industries, all Mailchimp users35.63%Mailchimp, Email Marketing Benchmarks, updated December 2023
Ecommerce, Mailchimp users29.81%Mailchimp, updated December 2023
Scheduled campaigns, ecommerce brands on Klaviyo31% (top 10% of brands: 45.1%)Klaviyo, Omnichannel Benchmark Report, 2026
Automated flows (welcome, abandoned basket), ecommerce brands on Klaviyo32.2%Klaviyo, Omnichannel Benchmark Report, 2026

Klaviyo's 2025 report had campaigns at 37.93% and flows at 48.57%, a year earlier, from the same kind of panel. A fall of that size in one year on one platform is a change in how opens are counted and who is on the platform as much as a change in readers, which is the point about benchmarks made below.

Why benchmarks mislead

A charity's supporters and a software vendor's trial sign-ups open at different rates for reasons that have nothing to do with the emails, and an industry average blends them.

The pre-loading effect lifts every benchmark by an amount that depends on the mail clients in the sample. Your list has its own mix and its own inflation.

Platforms count differently. One divides by sent, another by delivered. One counts a recipient who opened three times as one open, another as three. The same campaign gives two different rates.

The sample is skewed by who is left in it. Lists that stop emailing people who never open show a rising open rate. Lists that keep everyone show a falling one. The benchmark averages both and describes neither.

Open rate is a weaker metric than it was, so read the email click-through rate alongside it.

Find your own baseline

Take your last twelve campaigns of the same kind, scheduled sends or one automated flow, never both mixed. With delivered in column B and unique opens in column C, the baseline is total opens divided by total delivered. Do not average the twelve rates:

=IF(SUM(B2:B13)=0, "", SUM(C2:C13)/SUM(B2:B13))

Then compare each new campaign against that figure, and compare like with like. A flow to recent buyers will always beat a broadcast to the whole list.

Watch the trend rather than the level. If the baseline rises over a quarter and the click rate does not, the rise is probably pre-loading rather than interest.

Keeping it current

A scheduled Fresh Sheets report can pull Klaviyo or Mailchimp results into a tab of its own, one row per send with its opens and the number of emails behind them, so the baseline updates without anyone exporting a report.

Fresh Sheets replaces that tab's contents on every refresh, so keep your formulas on a separate tab. This version finds each column by its heading, so it still works if a field is added and the columns move. With Klaviyo, the columns are Opens and Delivered:

=SUM(INDEX('Klaviyo'!A:Z, 0, MATCH("Opens", 'Klaviyo'!1:1, 0))) / SUM(INDEX('Klaviyo'!A:Z, 0, MATCH("Delivered", 'Klaviyo'!1:1, 0)))

With Mailchimp, the columns are Unique opens and Emails sent; Mailchimp counts bounces in Emails sent, so subtract the Hard bounces and Soft bounces columns from the denominator if you want opens per delivered email.

Start free trial

30 days of Plus, free from sign-up. No card needed.

Sign in with Google or a work or school Microsoft account.

Add to Google Sheets

Prefer to stay in Google Sheets? Add the add-on and start from the Extensions menu.