Email Marketing Analytics: What to Track and How to Report It
Email marketing analytics is the practice of collecting and interpreting two layers of data: what your sending platform records (delivery, bounces, complaints, clicks, approximate opens) and what happens after the click (site visits, signups, orders, revenue). You need both, because the first layer tells you whether the email arrived and got read, and the second tells you whether it was worth sending.
What email marketing analytics actually covers
The platform layer is generated for you. Every send produces a delivered count, a bounce count, complaint reports from mailbox providers, click events, and opens that are only approximate — Apple's Mail Privacy Protection and blocked images mean an "open" can be recorded without a human ever seeing the message. Treat opens as directional, not as a headcount.
The business layer you have to build. It comes from UTM-tagged links landing in your web analytics, or from server-side events and webhooks that fire when someone converts. This is where revenue attribution lives, and it is the layer most teams skip because it takes an afternoon to set up.
The gap between the two layers is where bad decisions happen. A campaign with a 42% open rate and zero orders is not a good campaign. A campaign with a 9% open rate that drives your best revenue week is not a bad one. If you only look at platform metrics, you cannot tell the difference.
The metric ladder: from delivery to revenue
Think of your metrics as rungs on a ladder. Each rung answers a different question, and when a number moves, you check the rung below it first before blaming the rung above.
Delivery and list health
Delivered rate = delivered ÷ sent. Anything below your own normal range points at list quality or authentication problems, not at your subject line.
Bounce rate, split into hard and soft. Hard bounces are permanent — the address does not exist. Soft bounces are temporary — a full inbox or a greylisted server. Hard bounces and complaints should be suppressed automatically, not cleaned by hand on a quarterly basis; manual cleaning always lags behind the damage. In Mailerflow, bounces and complaints are suppressed automatically and sending reputation is monitored, so this happens without a maintenance task.
Complaint rate = spam complaints ÷ delivered. This is the number mailbox providers weigh most heavily. It looks small in absolute terms, which is exactly why teams ignore it until deliverability drops.
Unsubscribe rate and list growth vs. churn. A list that grows by 500 contacts a month but loses 700 to churn is shrinking in quality even while it looks healthy in size.
Establish a baseline by averaging these over your last 90 days of sends, then compare each new send against it. Do not import benchmarks from elsewhere — your list, your cadence and your content determine what normal looks like.
Engagement: clicks, approximate opens and replies
Click rate = unique clicks ÷ delivered. This is the most reliable engagement metric you have, because a click requires a deliberate action.
Click-to-open rate (CTOR) = unique clicks ÷ unique opens. It is useful for comparing two subject lines on the same list, and fragile for almost everything else, because the denominator is unreliable. If opens are inflated by privacy features, CTOR is artificially deflated.
Reply rate matters for plain-text and sales-style sends. A reply is the strongest engagement signal a mailbox provider can observe, and it is worth tracking separately from clicks.
Build a clicked but didn't convert segment here. These are the people who showed intent and stopped. They are the bridge to the next rung and usually the highest-value segment on your list.
Conversions and revenue
Conversion rate = conversions ÷ delivered.
Revenue per email sent = total attributed revenue ÷ emails sent. This is the number that survives leadership scrutiny, because it lets you compare email against every other channel on the same terms.
Revenue per recipient is the same idea scoped to a segment, and it is how you decide whether a small, highly engaged segment deserves more sends than a large, cold one.
Attribution is the hard part. Last-click gives all credit to the final email before purchase, which overstates a cart-abandonment send and understates the newsletter that started the consideration. Assisted attribution spreads credit across touchpoints. Pick one model, state it in your reporting, and stay consistent — the model matters less than not switching it mid-quarter.
How the data gets collected
Three sources feed your analytics, and knowing which one is broken is most of the debugging work.
- Platform tracking. Your sending platform records delivery, bounces, complaints, clicks and approximate opens by embedding tracking in the message. This is automatic.
- Link tracking with UTMs. Every link carries
utm_source,utm_mediumandutm_campaign, so your web analytics can attribute sessions and conversions back to the send. - Server-side events or webhooks. For conversions and revenue, client-side tracking loses data to ad blockers and cookie restrictions. A webhook from your store to your CRM or warehouse is more reliable. Mailerflow exposes signed real-time webhooks with retries and delivery logs, which is the usual way to push send and event data into a warehouse or CRM without polling.
If you need to pull data on a schedule instead, a REST API with scoped keys and idempotency keys lets you query without duplicating records on retries. Mailerflow's API follows that pattern, with an OpenAPI spec and code samples.
A minimal UTM convention that works:
utm_source=mailerflow
utm_medium=email
utm_campaign=spring_launch_2026
utm_content=hero_cta
Keep utm_campaign identical across every link in one send. If it varies per link, your campaign-level revenue report fragments into pieces.
Building your measurement plan: five decisions
1. Pick one primary metric per email type
Newsletter: click rate. Promotional send: revenue per email. Onboarding sequence: the activation event (first project created, first integration connected). Transactional: delivery and complaint rate.
One primary metric per type ends the meeting where everyone cites whichever number moved in their favor.
2. Define your conversion event before you send
For an ecommerce send, the conversion is order placed with a value attached. For a B2B send, it is demo request or trial started — a demo request has no revenue value, so track it as a count and assign value separately.
The failure mode is retrofitting. If you decide after the campaign that "engaged" means anyone who visited pricing, you will find a definition that flatters the result. Decide first, write it down, then send.
3. Set your comparison baseline
Three options, each answering a different question:
- Rolling 90-day average — is this send normal for us?
- Previous send — did the last change help?
- Control group — did this send cause anything at all?
For automations, use a holdout: keep 5–10% of an eligible segment out of the sequence and compare revenue between the two groups. This measures incremental effect, which A/B testing does not. A/B testing of campaigns (available in Mailerflow) tells you which subject line or send time won; a holdout tells you whether the sequence was worth running.
4. Decide the reporting cadence and owner
- Per-send check within 48 hours — delivery, bounces, complaints, clicks.
- Weekly rollup — list health, engagement trends, revenue.
- Monthly review — attribution, automation performance, segment shifts.
Name one owner. A dashboard nobody opens is worse than a spreadsheet someone maintains, because it creates the appearance of measurement without the practice.
5. Choose where the numbers live
In-platform analytics for day-to-day decisions; a warehouse or BI tool for cross-channel views. Platform analytics is fast but siloed to email. A warehouse is flexible but needs maintenance and someone who owns the schema.
Mailerflow's analytics cover delivery, bounces, complaints, clicks and approximate opens, per campaign and overall — enough for the per-send check without exporting anything. Reach for the warehouse when you need email revenue next to paid and organic in one chart.
The reports worth building
Send performance report
One row per campaign: subject line, segment, send time, delivered, bounce, complaint, click rate, conversions, revenue. Look at it within 48 hours of every send. Its only job is to surface outliers fast.
List health report
Growth, churn, hard bounces, complaints, unsubscribes, and the ratio of engaged to unengaged contacts. Weekly. Its job is to catch deliverability problems before they compound into a reputation issue.
Engagement decay report
Contacts grouped by recency of last click: 30, 60, 90, 180+ days. Monthly. Its output is a re-engagement segment. Dynamic segments on engagement and website behavior are the mechanism — in Mailerflow you can build these from fields, tags, engagement, events and website behavior, and they update as people act.
Revenue attribution report
Revenue by campaign and by automation, with the attribution model stated at the top. Monthly. Its job is to justify the channel and move effort toward what works.
Automation performance report
Per automation: entries, completion rate, the step where people drop off, and revenue. Monthly. Visual automations with waits, conditions and webhooks make step-level drop-off measurable — you can see exactly which email or wait loses people.
Worked example: diagnosing a drop in clicks
This is an illustrative scenario, not a customer story.
A weekly newsletter normally lands in a certain click-rate range. This week it comes in noticeably lower. Work down the ladder:
- Delivered rate and bounces. If delivered dropped or hard bounces spiked, the problem is list quality or authentication. Fix that before touching the content.
- Complaint and unsubscribe rate. If both rose, you have a relevance or frequency problem, not a copy problem.
- Click-to-open. If opens held steady and clicks fell, the audience saw the email and did not act. The offer, the subject-to-content match, or the link placement is the issue.
- Device split and link-level clicks. A layout that breaks on mobile, or a single CTA buried below a long intro, shows up here.
- Segment composition. If the send went to a broader segment than usual, the lower rate may be entirely explained by who received it.
The point is that the fix differs completely depending on which rung moved. Reaching for a new subject line when the real problem is a soft-bounce spike wastes a week.
Common mistakes
- Treating opens as precise. They are approximate. Use them for trends, never for headcounts.
- Optimizing click-to-open when opens are unreliable. You are optimizing a ratio with a noisy denominator.
- No conversion definition. Without one, every result can be spun as a win.
- Comparing campaigns with different segments. A send to your most engaged 2,000 contacts will beat a send to 50,000 cold ones. That is not a content insight.
- Ignoring complaints because they look small. Small and rising is the pattern that precedes deliverability damage.
- Measuring only the last send in a sequence. The first email often does the work; the last one gets the credit.
- Reporting revenue without a holdout. You cannot separate what email caused from what would have happened anyway.
- Letting dashboards go stale. A report nobody has opened in six weeks is a signal to delete it or fix the cadence.
Checklist
- [ ] Verify DKIM, SPF and DMARC on every sending domain.
- [ ] Confirm hard bounces and complaints are suppressed automatically.
- [ ] Standardize UTM parameters across every template.
- [ ] Define one conversion event per email type, with a value where applicable.
- [ ] Calculate your 90-day baseline for delivery, bounce, complaint and click rate.
- [ ] Build the clicked-but-didn't-convert segment.
- [ ] Set up a holdout group for at least your main automation.
- [ ] Schedule the 48-hour per-send check and name its owner.
- [ ] Build the five reports above, and delete any report nobody reads.
- [ ] State your attribution model in writing.
- [ ] Review list health weekly, revenue monthly.
FAQ
Are open rates still useful? Yes, as a directional signal. They are inflated by privacy features and image blocking, so use them to compare sends to each other over time, not as an absolute measure of how many people read your email.
What's a good click rate? It depends entirely on your list, your cadence and your offer. A weekly newsletter to a permission-based list and a monthly promotional send to a purchased-adjacent list will not have comparable numbers. Build your own baseline and compare against it.
How do I track revenue from email? Two ways: UTM parameters that let your web analytics attribute the order to the campaign, or a server-side event — usually a webhook from your store — that records the order against the contact. Server-side is more reliable because it survives ad blockers and cookie restrictions.
How long should I wait before judging a campaign? Most clicks land in the first 48 hours, so that is a reasonable window for a per-send check. Revenue attribution needs longer, especially for considered purchases. Pick a window, apply it consistently, and note in your report that later conversions may still arrive.
What's the difference between click rate and click-to-open rate? Click rate is clicks divided by delivered emails — it measures how many recipients acted. Click-to-open rate is clicks divided by opens — it measures how compelling the content was among those who opened. Use click rate for performance, CTOR for comparing content on the same list.
Where to go next
If you are setting this up from scratch, start with conversion tracking and your 90-day baseline — everything else depends on those two. The rest of this cluster covers the narrower jobs: building a re-engagement segment from engagement decay, reading an A/B test without fooling yourself, and wiring webhooks into a warehouse.
If you are choosing a platform at the same time, Mailerflow's analytics cover delivery, bounces, complaints, clicks and approximate opens per campaign and overall, and A/B testing of campaigns is built in — enough to run the per-send check and the tests that follow from it without exporting data.
Track deliveries, clicks and conversions per campaign and run A/B tests in Mailerflow.
