How we count
zPod IAB Podcast Measurement v2.2 methodology
1. Filter HEAD requests (no body transferred).
2. Count GET 200 and qualifying GET 206 only.
3. Drop invalid traffic: known bots, empty/malformed user agents, 0–1 byte range probes.
4. Drop Apple Watch / atc/* watchOS paired-device duplicates.
5. Apply the 1-minute threshold: partial requests are reassembled per IP+UA+episode; the combined transfer must cover at least 60 seconds of audio (or equivalent bytes at the declared bitrate, default 128 kbps).
6. Unique downloads: IP hash + user-agent hash within a disclosed 24-hour window per episode. Play-pause-play of the same episode is one download.
7. High-density NAT IPs may be allowlisted to avoid under-counting; abusive IPs are denylisted. Anomalous spikes (single IP exceeding a non-human request rate) are excluded and logged.
8. Prefix analytics (OP3 or commercial prefixes) are optional and never enabled without an explicit publisher opt-in.
9. Raw logs retain hashed IP/UA only. Retention of raw request rows for IAB reprocessing is 13 months in R2; Analytics Engine holds 90 days of real-time points.