What each one counts
Impressions are events. Every time a platform renders your content in front of somebody, that is one impression. The same person scrolling past a post three times generates three impressions. Impressions are cheap to count, exactly additive across any set of time windows, and completely silent about how many humans were involved.
Reach is a population. It counts the distinct people or accounts that saw the content at least once inside a stated window. It is expensive to compute because it requires deduplication, it is never exact, and it is not additive across windows. Reach is the number that answers the question a marketer actually asked: how many people did we talk to.
Frequency ties them together. Impressions divided by reach gives the average number of exposures per person. On the post used throughout our engagement rate example, 6,900 impressions against 4,150 unique accounts is a frequency of 1.66, so the typical viewer saw it once and a substantial minority saw it twice.
Two hard consequences follow from the definitions, and they are worth committing to memory. Reach can never exceed impressions. And frequency below 1.0 is always a data error, never a finding.
The additivity trap
This is the single most common reporting mistake with these two metrics, and it survives in production dashboards for years because it produces plausible looking numbers.
Take the campaign week in the table below. Daily reach runs between 2,400 and 3,800 and sums to 21,000. Daily impressions sum to 35,000. The impressions figure is correct: impressions are events and events add. The reach figure is not, because Monday's audience and Tuesday's audience overlap heavily. Ask the platform for the week as a single window and it returns a deduplicated reach of 9,800.
So the naive report says you reached 21,000 people and the true answer is 9,800. You overstated the audience by 114%. Worse, the two frequency numbers you can compute from this week disagree by design: daily frequency averages around 1.67, while weekly frequency is 35,000 divided by 9,800, or 3.57. Neither is wrong. They answer different questions over different windows.
The operating rules that follow are short. Never sum a reach column. Always pull reach for exactly the window you intend to report. Always state the window next to any frequency number.
The definitions differ per platform
The words are shared and the definitions are not. Meta counts an impression when an ad enters the screen, so scrolling back up the feed can count again. Instagram moved its main organic metric to views during 2024 and unified it across formats, so a chart that splices an old impressions series onto a new views series is plotting a definition change as if it were performance. X reports impressions on every post and does not expose a deduplicated organic reach at all, which is why "impressions" gets casually and wrongly reported as audience size. Display and video advertising adds a second layer entirely: served impressions versus viewable impressions under the MRC standard of 50% of pixels for one continuous second, two seconds for video. The gap between served and viewable is routinely a fifth to a third of inventory.
Email has the messiest version of all. Total opens behave like impressions and unique opens behave like reach, but since Apple Mail Privacy Protection began prefetching tracking pixels in 2021, a large share of both are machines rather than people. That is the main reason serious email teams moved their health metrics to reply rate, click rate and provider-reported reputation. See deliverability.
Which metric answers which question
- How big is our audience? Reach, for the exact period you care about.
- Are we wearing people out? Frequency, with the window stated. Rising frequency plus falling click-through is the textbook saturation signature.
- What did we pay for? Impressions, because CPM is priced per thousand of them.
- Was the content good? Interactions divided by reach, not by impressions, since reach is the count of humans who had the opportunity to act.
- Is distribution being restricted? Reach split into followers and non-followers, tracked daily. See shadowban.
Frequency in paid media
Frequency is the number that decides whether more budget helps. If frequency is low and results are good, the audience still has room and more budget buys more people. If frequency is climbing while cost per result rises, more budget buys the same people again, and the fix is a wider audience or new creative.
Commonly cited working ranges put prospecting somewhere around 1.5 to 2.5 over a seven day window, with retargeting deliberately higher because the audience is small and the intent is warm. Treat those as starting points rather than laws: a considered B2B purchase tolerates far more repetition than an impulse consumer offer. The signal to trust is your own curve of cost per result against frequency, which nearly always has a visible knee.
Reach is always an estimate
Deduplication needs identity, and identity is imperfect. One person on a phone, a laptop and a logged-out browser may count as two or three. Two colleagues sharing a screen count as one. Ad platforms model reach at large numbers rather than counting it, and they say so in their own metric documentation. This is not a reason to distrust reach, it is a reason not to quote it to four significant figures or to treat a 3% week over week move as meaningful.
The messaging equivalent
The same three concepts map directly onto outbound messaging, and the mapping is worth making explicit because the additivity trap reappears there in a costlier form. Messages sent is your impression count. Unique contacts messaged is your reach. Touches per contact is your frequency.
A three step drip campaign that sends on days 0, 3 and 7 has a designed frequency of 3.0 against a reach that never changes. Reporting the sum of daily contacts messaged as "people reached" would triple your claimed audience. And unlike a feed impression, an unwanted extra touch on a messaging channel carries a real cost: reports, blocks and eventually a restriction on the sending account. See flood wait and account warm-up.
Common mistakes
- Summing reach across days, weeks or campaigns. The overlap is exactly the thing reach was invented to remove.
- Calling impressions reach. Common on X, where only one of the two is published.
- Quoting frequency without a window. The same campaign is 1.67 daily and 3.57 weekly. Both are true.
- Mixing served and viewable impressions in one trend line, or buying on one and reporting on the other.
- Splicing a metric rename into an existing series. Instagram's move from impressions to views is a definition change, and it will look like a performance jump if you let it.
- Using impressions as an engagement denominator when you meant to judge content quality. It systematically understates the rate whenever frequency is above 1.
Related concepts
- Engagement rate: the metric whose value changes with the denominator you pick here.
- Shadowban: diagnosed by splitting reach, never by watching a total.
- Drip campaign: where frequency is a design parameter rather than an outcome.
- Deliverability: why email opens stopped being a usable impression proxy.
- Lead magnet: the conversion event that reach is ultimately supposed to produce.
- Omnichannel CRM: the only place these metrics can be deduplicated across channels.
How Pinlyx handles it
Pinlyx stores reach and impressions as separate series per post and per channel, and computes frequency for whatever window a report asks for rather than caching a single figure that silently goes stale. Reach is never summed across periods in our reporting layer; requesting a wider window re-queries the wider window. On the outbound side the same discipline applies to messaging: contacts touched is deduplicated per sequence, so a three step campaign reports one audience and three touches instead of three audiences.