# Ecommerce email metrics that still work after Apple MPP

> The email metrics that matter for online stores after Apple Mail Privacy Protection: delivery, clicks, conversion, revenue per email, unsubscribes, complaints.

Source: https://pidgely.com/blog/ecommerce-email-metrics/ · Published: 2026-10-18 · Pidgely

The email metrics that matter for an ecommerce store are the ones tied to money and to your ability to keep sending: **delivery rate, click rate, conversion rate, revenue per delivered email, unsubscribes and spam complaints**. Open rate, the headline number of email reports for years, stopped being reliable after Apple Mail Privacy Protection and should be treated as a weak signal. Below are the formulas, where each metric misleads, and how to build an honest dashboard for your store.

## What Apple MPP changed

Apple describes Protect Mail Activity this way: when it is on, "your IP address is hidden from senders and remote content is privately downloaded in the background" ([Apple Mail User Guide](https://support.apple.com/guide/mail/protect-email-privacy-mlhlp1205/mac)). In practice:

- the tracking pixel loads when the message arrives, not when someone reads it;
- Apple Mail users with the protection on show up as "opened", read or not;
- open location and open time are no longer trustworthy.

The result: inflated open rates, subject-line A/B tests that crown the wrong winner, and "didn't open, resend" automations firing at people who already read the email. Keep the number if you like, but stop using it to decide.

## The metrics that matter, with formulas

| Metric | Formula | What it answers |
|--------|---------|-----------------|
| Delivery rate | delivered / sent | Did the email reach the recipient's server? |
| Bounce rate | bounces / sent | Does the list have invalid addresses? |
| Click rate (CTR) | unique clicks / delivered | Did the content create interest? |
| Click-to-open (CTOR) | unique clicks / unique opens | Weak after MPP; handle with care |
| Conversion rate | attributed orders / delivered | Did the email turn into sales? |
| Revenue per delivered email | attributed revenue / delivered | What each send is worth |
| Email AOV | attributed revenue / attributed orders | Big baskets or small ones? |
| Unsubscribe rate | unsubscribes / delivered | Frequency or relevance problems |
| Complaint rate | spam complaints / delivered | Are you losing the right to reach the inbox? |

Two notes:

- **Divide by delivered**, not sent, so a delivery problem never disguises itself as a content problem.
- **Unique clicks, not total clicks**. One person clicking the same link five times is not five times the interest.

## Delivery: the metric before every other metric

If the email didn't arrive, nothing else matters. Watch:

- **Delivered**: the recipient's server accepted the message. Not a guarantee of the inbox, but the floor.
- **Hard bounces**: the address doesn't exist. Remove it immediately. More in [hard vs. soft bounces](/blog/hard-vs-soft-bounces/).
- **Delays (`4xx`)**: a spike at a single mailbox provider usually means reputation-based throttling.

On Pidgely these numbers come from delivery webhooks (`email.sent`, `email.delivered`, `email.delivery_delayed`, `email.bounced`, `email.complained`), the per-email log and the Metrics page. Hard bounces and complaints go straight to the [suppression list](https://docs.pidgely.com/guides/suppressions/), so you never keep mailing people who shouldn't get your email.

## Complaints: the metric that decides whether you keep reaching people

Complaint rate is what mailbox providers watch. Google's [sender guidelines](https://support.google.com/a/answer/81126) ask senders to keep the spam rate reported in Postmaster Tools below 0.30% and recommend staying below 0.10%. For a store sending 100,000 emails in one campaign, 0.30% is 300 people pressing "report spam". That's not many.

What pushes complaints up for stores:

- mailing people who bought once two years ago and never clearly agreed to marketing;
- ramping frequency suddenly (Black Friday week is the classic case);
- hiding the unsubscribe link, so people use the spam button instead.

How providers count complaints is covered in [feedback loops and complaint rate](/blog/feedback-loops-complaint-rate/).

## Revenue: attributing sales to email without fooling yourself

Revenue per email is the metric store owners understand. But "attributed revenue" depends on a choice: **which window and which model**.

- **Last click**: the sale counts for email if the last click before purchase came from it. Conservative and easy to explain.
- **Click window**: the sale counts if it happened within X days of an email click. Pick X (many stores use 1 to 7 days) and don't change it mid-season.
- **Open-based attribution**: avoid it. With MPP, "opened and bought within 5 days" credits email for sales it didn't drive.

The simplest reliable method today is **UTM parameters** on every link, with conversions read in your store analytics or platform reports:

```text
https://example.com/products/runner-shoe?utm_source=pidgely&utm_medium=email&utm_campaign=bfcm-2026-early-access&utm_content=hero
```

Standardize `utm_medium=email`, name `utm_campaign` so you'll understand it a year from now, and use `utm_content` to know which block got the click.

> Be honest with the dashboard: whenever you can, compare email revenue against a holdout group that didn't get the campaign (5% to 10% of the list). It is the only way to know how much of that revenue would have happened anyway.

## Metrics by email type

Not every email should be judged by the same ruler:

| Type | Primary metric | Warning metric |
|------|----------------|----------------|
| Transactional (order, shipping) | Delivery rate and time to deliver | Bounces and delays |
| Abandoned cart | Recovery rate (orders / carts emailed) | Unsubscribes |
| Welcome series | First purchase within 30 days | Complaints |
| Promotional campaign | Revenue per delivered email | Complaints and unsubscribes |
| Post-purchase and reviews | Reviews / delivered orders | Unsubscribes |
| Win-back and replenishment | Reactivated customers / recipients | Complaints |

For [order emails](/blog/order-confirmation-shipping-emails/), click rate is irrelevant: arriving within seconds is what counts. For [abandoned cart emails](/blog/abandoned-cart-email/), the right number is recovery rate, not opens.

## List metrics: the asset behind everything

- **Net list growth**: new consented contacts minus unsubscribes, bounces and complaints in the month.
- **Active base**: contacts who clicked or bought in the last 90 or 180 days. Without trustworthy opens, "active" has to mean clicks and purchases.
- **Revenue per contact**: monthly email-attributed revenue divided by the active base. It tells you whether growing the list is worth paying for.

Segmenting by these behaviors is the subject of [purchase behavior segmentation](/blog/purchase-behavior-segmentation/).

## Where Pidgely fits (and what it doesn't do)

Plainly:

- **Today**: delivery, open and click webhooks, a log and timeline for every email, open and click metrics with machine opens and bot clicks flagged, automatic suppression of bounces and complaints, one-click unsubscribe on broadcasts, contacts with properties and segments. You can store purchase data (last order date, total spent) as contact properties, personalize with them and build segments from your own system through the API.
- **Store integrations**: connect [Shopify](/integrations/shopify/), [WooCommerce](/integrations/woocommerce/), [Nuvemshop](/integrations/nuvemshop/) or [VTEX](/integrations/vtex/) to sync customers, products and orders and send order emails automatically.
- **Automations (Scale plan)**: abandoned cart, unpaid Pix/boleto, post-purchase and win-back for connected stores, with recovered revenue counted once per order within an attribution window.
- **Not offered**: revenue attribution for broadcasts. For campaign revenue, use UTMs and your store analytics as shown above.

## A minimal dashboard for your store

If you only look at six numbers per campaign, make it these:

1. Delivery rate
2. Bounce rate
3. Complaint rate
4. Click rate (via UTMs or your tool)
5. Attributed orders and revenue, with a fixed window
6. Unsubscribes

Compare each campaign with your own recent average, not with generic internet benchmarks: list, niche and frequency change everything. And when revenue rises together with complaints, be suspicious: you are trading today's result for tomorrow's inbox. How to avoid that is in [ecommerce campaigns that avoid spam](/blog/ecommerce-campaigns-avoid-spam/).

## Frequently asked questions

### Is open rate still useful?

As a trend signal, not as a result metric. Since Apple Mail Privacy Protection, remote content is downloaded privately in the background, which records opens that may never have happened. Use clicks, conversions and revenue to make decisions.

### What is the single most important email metric for a store?

Revenue per delivered email, read together with the spam complaint rate. The first tells you whether email sells; the second tells you whether you can keep sending at that pace without losing the inbox.

### How do I attribute sales to email without an attribution tool?

Add UTM parameters to every link (utm_source, utm_medium=email, utm_campaign) and read conversions in your store analytics or in your platform's reports, such as Shopify or WooCommerce. Pick an attribution window and keep it fixed.

### Does Pidgely track opens and clicks?

Yes. Open and click tracking is on by default for new domains and can be changed per domain or per send. Machine opens (such as Apple Mail Privacy Protection) and bot clicks are flagged, so metrics show human opens and clicks next to the raw numbers. Delivery events also arrive through webhooks, with a log for every email. For campaign revenue, use UTM parameters and your store analytics.

