Newsletter reporting means tracking, for each issue and each month, how many people received your newsletter, how many opened and clicked, how many left, and whether the list is growing. A useful report fits on one page: a row per issue, a monthly summary, and two or three lines on what to change. Here are the template, the formulas behind it and a filled-in example.
The newsletter report template
Per issue:
| Issue | Sent | Delivered | Unique opens | Open rate | Unique clicks | Click rate | Click-to-open | Unsubscribes | Unsub rate | Top link | |-------|-----:|----------:|-------------:|----------:|--------------:|-----------:|--------------:|-------------:|-----------:|----------| | | | | | | | | | | | |
Monthly summary:
| Measure | This month | Last month | Change | |-----------------------------------|-----------:|-----------:|-------:| | Subscribers at month end | | | | | New subscribers | | | | | Unsubscribes | | | | | Bounced addresses removed | | | | | Net list growth % | | | | | Issues sent | | | | | Average open rate | | | | | Average click rate | | | | | Sessions from email (GA4) | | | | | Signups or sales from email | | | | | Sponsor or product revenue | | | | **What worked:** **What to change next month:**
The formulas
- Delivered = sent - bounces
- Open rate = unique opens / delivered
- Click rate = unique clicks / delivered
- Click-to-open rate = unique clicks / unique opens. It shows whether the content earned a click from the people who opened.
- Unsubscribe rate = unsubscribes / delivered
- Net list growth = (new subscribers - unsubscribes - bounced addresses removed) / subscribers at the start of the month
Platforms don't all calculate these the same way, so write down where each number came from.
Open rates need a footnote
Since Apple's Mail Privacy Protection arrived in 2021 with iOS 15 and macOS Monterey, Apple Mail preloads tracking pixels, so emails delivered there count as opened whether or not anyone read them. Open rates rose and stopped meaning much. Two fixes: make clicks your main engagement number, and where your platform offers it, report the open rate without Apple's automatic opens. Mailchimp, for example, returns proxy_excluded_open_rate next to open_rate in its reports API.
Example: one month of a weekly newsletter
| Issue | Delivered | Open rate | Click rate | Click-to-open | Unsubscribes | Top link |
|---|---|---|---|---|---|---|
| Oct 1 | 18,240 | 41.2% | 3.9% | 9.5% | 22 | Pricing teardown |
| Oct 8 | 18,410 | 39.8% | 2.6% | 6.5% | 31 | Job board |
| Oct 15 | 18,530 | 42.5% | 5.1% | 12.0% | 19 | Free template |
| Oct 22 | 18,690 | 40.1% | 3.2% | 8.0% | 27 | Case study |
The monthly summary that goes with it: the list started October at 18,350 subscribers, gained 890, lost 99 to unsubscribes and 61 bounced addresses, and ended at 19,080, net growth of 4.0%. Average open rate was 40.9% and average click rate 3.7%. The template issue had the best click-to-open rate at 12.0%; the job board issue had the worst, at 6.5%, and the most unsubscribes. Next month: one more practical resource issue, and move the job board below the main story.
What to include and why
- Clicks before opens, for the reason above.
- Unsubscribes per issue. They show which topics cost you readers. An issue with twice the usual unsubscribes is worth a look.
- List growth net of losses. A rising subscriber total can hide a list that loses nearly as many as it gains.
- What happens after the click. Tag links with UTM parameters, such as
utm_medium=email, and report sessions and key events from email in GA4. That number connects the newsletter to the business. - One line of interpretation. Numbers without a "so what" get skimmed.
Automate the newsletter report
The numbers live in your email platform's reports and in GA4, and both have APIs an agent can read. Mailchimp's GET /3.0/reports lists campaign reports with opens, clicks, bounces and unsubscribes, and filters by since_send_time; the Mailchimp campaign report skill reads it every Tuesday and sets each campaign against your audience's usual rates, using the open rate without machine opens. For HubSpot marketing emails, the HubSpot marketing email report does the same job every Friday, with click rate as the headline number. Pair it with GA4 conversions by channel to see what email traffic did on the site.
A prompt for any platform your agent can reach:
List every newsletter issue we sent last month from [platform], with delivered, unique opens, unique clicks and unsubscribes. Fill in this template: [paste it], computing the rates from the counts. Use the open rate that excludes Apple privacy opens if the platform reports one. Then name the best and worst issue by click-to-open rate, with one line each on why.
Scheduled for the first of the month, the result can post to your Briefkin board as one card, next to the rest of your recurring reports.
Questions
What is a good open rate for email?
It depends on your audience, the age of your list and how your platform counts Apple's automatic opens, so published averages vary widely. Compare each issue with your own last three months, and judge engagement mainly by click rate.
Which newsletter metrics matter most?
Click rate, unsubscribe rate and net list growth, plus what email readers do on your site. Open rate still helps you spot delivery problems, such as a sudden drop that points to spam filtering.
How often should I report on a newsletter?
Check each issue a few days after it goes out, once the numbers settle, and write the full report monthly so one odd issue doesn't drive decisions.
Does this template work for beehiiv, Kit or Substack?
Yes. It uses counts every email platform tracks in some form; map your platform's column names to these and note how it counts opens.