Email Open Rates After iOS 15 MPP: What Still Means Anything
Apple's Mail Privacy Protection auto-loads tracking pixels for ~50% of US email recipients. Open rate became fiction. What metrics still work (clicks, conversions, unsubscribes) and how to operate around MPP.
In September 2021, Apple shipped Mail Privacy Protection (MPP) with iOS 15. The feature auto-loads remote content — including tracking pixels — for every email opened in Apple Mail. From that day, "open rate" became fiction for the roughly half of US email recipients who use Apple Mail on iPhone or macOS.
Most email marketers know this and shrug. The actual consequence is more pointed: every metric and automation that depends on open behavior — open-rate triggered flows, "didn't open" re-send segments, list-cleaning rules based on open recency, and headline-style A/B tests scored on opens — is now noisy enough to mislead. This post walks through what MPP actually does technically, what metrics still mean something, and how to use Klaviyo's smart-send and equivalent features to operate around it.
The technical reality — what MPP actually does
Apple's iOS 15 announcement describes MPP as: "in the Mail app, Mail Privacy Protection stops senders from using invisible pixels to collect information about the user. The new feature helps users prevent senders from knowing when they open an email, and masks their IP address so it can't be linked to other online activity or used to determine their location."
Mechanically, MPP works in two parts:
Pre-fetch. When a Mail-using-iOS-or-macOS recipient receives an email, Apple's servers download all images and tracking pixels embedded in the email before the user opens it. The download happens from an Apple IP, not the user's. Result: every MPP-protected email reports as "opened" the moment it arrives in the inbox, regardless of whether the human ever sees it.
IP masking. When the user does open the email, requests to remote images go through an Apple proxy. The IP your tracking pixel sees is Apple's proxy IP, not the user's home network or device IP. Result: IP-based geolocation, IP-based open-time analysis, and IP-based "active hours" inference are all broken for MPP traffic.
The downstream consequence: Klaviyo, Mailchimp, Omnisend, ConvertKit, and every email platform on the planet record every MPP-protected email as a 100% open. Apple Mail share in the US, per Litmus's annual Email Client Market Share report, runs about 50-58% across iPhone Mail + macOS Mail + iPad Mail. The exact share varies month-to-month; what doesn't vary is that roughly half of your US list registers a fake open every time you send to them.
Important nuance: MPP is per-mail-client, not per-recipient. An Apple ID user who reads email in Gmail's iOS app is not covered by MPP — Gmail's iOS app is a different client. A Windows user reading email in Outlook is not covered. A user reading in Spark or Airmail is not covered (unless those clients have implemented their own pre-fetch). MPP is specifically Apple's Mail app on iOS 15+ / iPadOS 15+ / macOS Monterey+.
Why it matters for DTC attribution
Open rate was never a direct revenue metric, but it powered a lot of downstream operational decisions. After MPP, all of those decisions are corrupted:
Subject-line A/B tests scored on open rate. If you A/B test "Subject A" vs "Subject B" and score the winner on open rate, MPP-protected addresses report 100% open for both arms, contributing nothing to the test. Your effective sample size drops by ~50%, and the half of your audience whose mail client matters most (engaged Apple users) is the half you can't measure.
"Didn't open" re-send segments. Klaviyo's built-in "Sent but didn't open in 24 hours" segment is a common re-send rule. MPP-protected addresses are never in this segment because they always register as opened. You re-send to your Gmail/Outlook half of the list and miss the half that might actually need the nudge.
List hygiene based on open recency. "Suppress addresses that haven't opened in 90 days" — a standard deliverability hygiene rule — fails the opposite direction: MPP-protected addresses always look engaged, so you keep them on your active list even if they've truly gone cold.
Send-time optimization based on open time. "When does this contact typically open?" inference (Klaviyo's smart-send, Mailchimp's send-time optimization, Omnisend's predictive send-time) is corrupted because the open timestamp is when Apple's server pre-fetched the pixel, not when the user read the email. The pre-fetch usually happens within minutes of delivery, regardless of the user's habits, which biases every smart-send model toward sending right at delivery — useless.
Engagement-based segmentation. "VIP openers — last 30 days" and similar segments overweight MPP-protected addresses. You think you're targeting your most engaged 20%; you're targeting your iPhone-using 50%.
The cumulative effect: an email program optimized on post-MPP open data converges on a worse outcome than an email program ignoring opens entirely.
What metrics still mean something
Three signals survived MPP intact:
1. Click rate. A click requires the user to do something. Apple's MPP does not pre-fetch clicks. If your email gets clicked, a human moved their thumb. Click rate is now the primary engagement signal — use it for A/B tests, segmentation, and re-send rules.
2. Conversion rate (click-to-purchase). Still the truest economic signal. The customer clicked, landed on your site, completed checkout. This is what you actually care about and it's untouched by MPP.
3. Unsubscribe rate and complaint rate. These signals are deliberate user actions and remain accurate. Unsubscribe spikes after a send are still the canary for a bad subject line or list-fatigue issue.
Three signals are corrupted:
- Open rate (artificially inflated by ~50% for US lists)
- Open time (biased toward delivery time, not user behavior)
- IP-derived metrics (geo, device-class inference, "active hours")
Two signals are partially usable:
- Engagement scoring, if you weight clicks heavily and ignore opens entirely.
- Open rate filtered by mail-client domain — Klaviyo and Mailchimp will tell you the mail client per recipient. If you filter to "non-Apple-Mail clients," the remaining open rate is real. This filter loses ~50% of your sample but the remaining 50% gives you trustworthy A/B test data.
Methodology — how to operate around MPP
Step 1 — Reconfigure your A/B testing. Score every test on click rate, not open rate. Klaviyo's A/B test docs let you change the "winning metric" from Open Rate to Click Rate or Conversion Rate. Do this on every campaign. Open rate becomes a diagnostic metric you reference, not a decision metric.
Step 2 — Rewrite "didn't open" flows as "didn't click" flows. If you have a re-send rule that says "if recipient didn't open in 24 hours, send the follow-up," change it to "if recipient didn't click in 24 hours" or "if recipient didn't click and their primary mail client isn't Apple Mail." Klaviyo's flow filters support both.
Step 3 — Move list-hygiene rules to click recency. "Suppress addresses that haven't clicked in 180 days" is the post-MPP equivalent of "haven't opened in 90 days." Slightly longer window because clicks are rarer than opens.
Step 4 — Disable open-time send-time optimization. Klaviyo's smart-send-time and Mailchimp's send-time optimization are both corrupted post-MPP. Either disable them or switch to click-time prediction. Klaviyo offers a "Smart Send Time" feature that, per their docs, has been retrained to weight clicks more heavily — but the underlying signal is noisier than pre-MPP. We've generally seen better results from a simple manual send-time schedule than from smart-send post-MPP.
Step 5 — Build a "mail-client cohort" view. Most ESPs expose the recipient's mail client in their reports. Build a dashboard view that splits opens by Apple Mail vs everything else. Your Apple Mail open rate will be ~100% (useless); your non-Apple Mail open rate will be your real signal for the other half of your list.
Illustrative scenario — A/B test gone wrong
Imagine a DTC skincare brand running a subject-line A/B test on a 200,000-recipient list. The brand sends "Subject A: New launch" to 100K and "Subject B: 24-hr exclusive" to 100K. Their ESP reports:
- Subject A: 38% open rate, 4.2% click rate, $48K revenue
- Subject B: 41% open rate, 5.1% click rate, $61K revenue
The marketer concludes Subject B wins by 8% on opens and ~21% on clicks. They roll Subject B to the full list next time.
The problem: ~55% of the 200K list uses Apple Mail (US-skewed DTC list). MPP auto-opens ~110K emails before the user touches anything. Both Subject A and Subject B got those 110K phantom opens. The "open rate" comparison is essentially testing the ~90K non-Apple-Mail recipients — and even that test is being weighted incorrectly because the Apple-Mail half of opens are still in the denominator.
The honest comparison is the click rate. Subject A: 4,200 clicks out of 100K = 4.2%. Subject B: 5,100 clicks out of 100K = 5.1%. Subject B genuinely beat Subject A by 21% on clicks. The open-rate "winner" by 8% was noise. The click-rate "winner" by 21% is the real signal.
The illustrative consequence: if the brand had been scoring A/B tests on open rate for the past year, roughly half of their declared winners are bad calls — small noise-driven open-rate deltas with no underlying click-rate truth. The fix is process: every A/B test from now on is decided on click rate, period. The numbers above are illustrative; the methodology applies to any DTC list with significant Apple Mail share.
What we do at Admaxxer
Admaxxer's Klaviyo connector pulls click-based engagement data (not just open data) so the dashboards we build score email performance on the post-MPP signal. The marketing acquisition view ranks email campaigns by attributed revenue — the truest economic outcome — not by open rate. For brands running click-based re-send rules, our revenue tracking pipeline reconciles email-attributed revenue against Shopify's canonical order data so the engagement → revenue chain is intact end-to-end.
FAQ
Should I just hide open rate from my dashboard?
You can still reference it as a deliverability canary — if your open rate suddenly drops, something is wrong with sender reputation. But don't use it for A/B test decisions, smart-send timing, or segmentation. Treat it as a diagnostic, not a decision metric.
Does Apple Mail's MPP affect Gmail or Outlook users?
No. MPP is specific to Apple's Mail app. Gmail's iOS app, Outlook's iOS app, Spark, Airmail, and every web-based mail client behave normally. The pre-fetch is performed by Apple's servers only when the email is being delivered to Apple's Mail app.
What about the iOS 16 / iOS 17 changes — did anything come back?
No. Apple has not relaxed MPP. iOS 16 and iOS 17 added Hide My Email (a relay that generates a unique @icloud.com address per sender) but the underlying pre-fetch and IP masking behavior of MPP is unchanged.
Can I tell which of my subscribers use Apple Mail?
Yes. Klaviyo, Mailchimp, and most major ESPs expose the recipient's mail client per open event in the raw reports API (and sometimes in the UI under "Recipient details"). Pull it for your list and segment from there.
Does this break double-opt-in / list confirmation flows?
No. Double-opt-in confirmation requires a click, not an open. The user clicks the confirmation link in the welcome email, which is a real human action MPP does not pre-fetch. Confirmation flows are unaffected.
Is open rate completely useless now?
For decision-making, mostly yes. As a smoke test for deliverability (sudden drop = sender reputation problem), it's still mildly useful, but click rate is a better smoke test for the same reason.
How does smart-send work post-MPP?
Klaviyo's smart-send-time relies on per-recipient timing data. Post-MPP, opens are biased toward the moment Apple pre-fetched (usually within minutes of delivery), which biases the model toward sending at delivery time — defeating the point. Best practice is to either disable smart-send and run a manual schedule based on your overall click-time data, or switch to a click-based smart-send if your ESP supports it.