Marketing metrics explained

Email click-through rate: click rate, click-to-open rate and what's good

A good email click-through rate depends on what the email asks for and who it goes to.

A broadcast to the whole list asking people to read a blog post and an automated message to someone who left a full basket an hour ago are both emails, and their click rates will be a long way apart for reasons that have nothing to do with the copy. Two different metrics also hide behind the one phrase, and a figure quoted without saying which one it is tells you very little.

Two rates, two formulas

Click rate = unique clicks ÷ delivered emails

Click-to-open rate = unique clicks ÷ unique opens

Delivered means sent minus bounces. Unique means each recipient counts once however many times they clicked. The first rate asks how many of the people you reached did something. The second looks only at those who opened, which makes it a question about the content rather than the subject line or the list.

As an illustration with made-up numbers: a campaign is delivered to 10,000 people, 2,500 open it and 300 click. The click rate is 300 ÷ 10,000, which is 3.00%. The click-to-open rate is 300 ÷ 2,500, which is 12.00%. The open rate, for completeness, is 25.00%; the email open rate formula page covers it.

In Google Sheets, with delivered in B2, unique opens in C2 and unique clicks in D2:

=IF(B2=0, "", D2/B2)
=IF(C2=0, "", D2/C2)

One caution on the second formula. Mail clients that fetch images automatically register opens nobody made, which inflates the denominator and makes the click-to-open rate read lower than it is. The click rate is less affected, because a click usually needs a person. Some mail security tools do follow links in incoming messages to check them, which registers a click nobody made.

Published benchmarks

Email platforms publish click rates and click-to-open rates across the accounts they host, split by industry and by campaign type. Each row names the platform, because each platform's figure describes its own customers.

ContextReported figureSource
Click rate, all industries2.62%Mailchimp, Email Marketing Benchmarks, updated December 2023
Click rate, ecommerce1.74% (Mailchimp); 1.69% for campaigns on KlaviyoMailchimp, 2023; Klaviyo, Omnichannel Benchmark Report, 2026
Click-to-open rate, all industries6.81% medianMailerLite, Email Marketing Benchmarks, 2025, 3.6 million campaigns
Click rate, automated flows, ecommerce brands5.58%Klaviyo, Omnichannel Benchmark Report, 2026

Flows click at more than three times the rate of campaigns in the same report, because a welcome or abandoned basket email arrives when the person was just doing the thing it is about.

Why benchmarks mislead

A benchmark that mixes scheduled broadcasts with automated flows is averaging two different products. Flows go to people who just did something; broadcasts go to everyone.

Platforms count differently. One counts unique clicks, another counts every click. One excludes the unsubscribe link, another doesn't. The same campaign produces different rates on different platforms.

A publisher whose whole email is links and a shop whose email has one button are both in the "all industries" row.

List hygiene changes the rate without changing the email. A list that drops people who never engage reports a higher click rate than one that keeps them, with the same number of actual clicks. The benchmark averages both practices.

The lists in the sample are the ones still sending.

Find your own baseline

Take your last twelve campaigns of one kind, broadcasts or one flow, never both mixed. With delivered in column B and unique clicks in column D, the baseline click rate is total clicks divided by total delivered. Do not average the twelve rates:

=IF(SUM(B2:B13)=0, "", SUM(D2:D13)/SUM(B2:B13))

Use click rate as the headline, because it survives the open-rate inflation. Use click-to-open rate to compare two emails that went to the same kind of audience, where the question is which content worked. Compare a flow with itself over time and a broadcast with other broadcasts, and treat the gap between the two as a fact about audiences rather than a problem to fix.

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 clicks, opens and the number of emails behind them, so both rates update without an export.

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 Mailchimp, the columns are Unique clicks and Emails sent:

=SUM(INDEX('Mailchimp'!A:Z, 0, MATCH("Unique clicks", 'Mailchimp'!1:1, 0))) / SUM(INDEX('Mailchimp'!A:Z, 0, MATCH("Emails sent", 'Mailchimp'!1:1, 0)))

Emails sent includes bounces, so subtract the Hard bounces and Soft bounces columns from the denominator for clicks per delivered email. With Klaviyo the columns are Clicks and Delivered, and the click-to-open rate is a column of its own.

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.