# Reach, frequency and users: why you can't add them up

> Reach, frequency and users count unique people, so adding rows inflates the total. See what Meta, Google Ads and GA4 say and how to report them.

- URL: https://relator.digital/en/blog/metricas-nao-aditivas
- Publicado: 2026-10-21
- Atualizado: 2026-10-21
- Autor: Time Relator Digital
- Categoria: marketing-data

Reach, frequency and users count unique people, and a person who appears in two rows is counted twice when you add them. That is why the sum of daily, ad set or campaign reach almost always comes out higher than the real reach. The right approach is to ask the platform for the already deduplicated number at the cut you will report, and to recompute rates from numerators and denominators.

> [!NOTE]
> **In short**
> - Reach and users count unique people; impressions and clicks count occurrences. Only occurrences can be added without care.
> - Meta says campaign-level reach may not match the sum of ad set reach, because of de-duplication.
> - In Google Ads, the API documentation says `unique_users` cannot be aggregated and is only available for date ranges of 92 days or less.
> - In GA4, users are counted as unique within the selected date range: each day's count does not add up to the period's count.
> - Frequency and rates (CTR, CPC, CPM) are ratios. Recompute the ratio from the sums; never average ratios.

## People metrics don't add up; occurrence metrics do

A metric is additive when the sum of the parts equals the whole. Impressions work that way: if an ad appeared 100 times on Monday and 120 times on Tuesday, it appeared 220 times over the two days. Meta defines an impression as the number of times an instance of an ad was on screen, and says impressions and clicks don't use sampling.

Reach is different. Meta defines it as the number of Meta Accounts that saw your ads at least once. If the same account saw the ad on Monday and Tuesday, it is counted once in the reach of the two days. Adding each day's reach counts that person twice.

The same reasoning applies to GA4 users. Google's documentation defines total users as the number of unique users who triggered any event in the specified date range, and active users as those who engaged with your site or app in the date range. The count belongs to the chosen range, not to the day.

![Two circles representing two ad sets overlap. The shared area is counted twice in the sum and once in the real reach](https://uploads.relator.digital/blog/metricas-nao-aditivas/a028a8d2-sobreposicao.en.svg "The person in both ad sets shows up twice in the sum and once in the real reach")

## What each platform says about adding

Checked today on the official pages.

**Meta.** The page "Troubleshoot reasons why ad metrics may not add up" explains that unique metrics are de-duplicated, so the result changes with the level you are viewing. Meta's own example: if ad set 1 reached people A and B and ad set 2 reached B and C, each ad set has a reach of 2 and the campaign has a reach of 3. Reach and all unique metrics are estimated and may rely on sampled data; Meta warns that sampling can cause differences between the sum of your breakdowns and the summary row total, and that the total is sampled separately, so it can even end up lower than the breakdowns.

Meta also says frequency is calculated as impressions divided by reach, and that this metric is estimated and uses sampled data.

In the API, the Insights best practices guide says unique metrics are time-consuming to compute and recommends querying them in separate calls from non-unique metrics. Since June 10, 2025, standard queries that use breakdowns with a start date more than 13 months back don't return `reach` or related fields such as `frequency` and `cpp`.

**Google Ads.** In the API metrics reference, `unique_users` is "the number of unique users who saw your ad during the requested time period". The description says the metric cannot be aggregated, can only be requested for date ranges of 92 days or less, and is available for Display, Video, Discovery and App campaigns. The `average_impression_frequency_per_user` metric has the same aggregation and date range restrictions. In other words: if you pull reach by week and add it up, you are aggregating a metric the documentation says cannot be aggregated.

Outside search, Google follows the same logic in other products. The Campaign Manager 360 help says reach data "can't be summed or compared across reports" and that the 93-day blocks of the reach report can't be added together accurately.

**GA4.** The definitions of total, new and active users always speak of unique users in the specified date range. The same page notes that new and active users won't exceed total users, and that factors such as thresholding (withholding data when few users would make it possible to identify someone) may cause discrepancies between those numbers. When a report exceeds the row limit, GA4 also condenses the less common values into an "(other)" row, which changes what appears in each row.

## An example with the math

The numbers below are hypothetical, just to show the calculation.

A campaign has two ad sets. Ad set A reached 40,000 people and ad set B reached 35,000. Of those, 12,000 saw both. Combined impressions for the two ad sets were 180,000.

| Calculation | Reach | Frequency |
| --- | --- | --- |
| Sum of ad sets (wrong) | 40,000 + 35,000 = 75,000 | 180,000 ÷ 75,000 = 2.40 |
| Real campaign reach | 40,000 + 35,000 − 12,000 = 63,000 | 180,000 ÷ 63,000 = 2.86 |

The sum overstates reach by 12,000 people, about 19% of the real reach (12,000 ÷ 63,000). And since frequency is impressions divided by reach, the error carries over: the campaign looks less repetitive than it is. Someone judging creative fatigue by 2.40 instead of 2.86 underestimates repetition.

The same goes for time. Imagine a campaign with weekly reach of 30,000, 26,000, 24,000 and 22,000 people. Added up, that is 102,000. If the platform reports 58,000 for the whole month (a hypothetical value), it is because many people repeated across weeks. With 174,000 impressions in the month, the correct frequency is 174,000 ÷ 58,000 = 3.00; using the weekly sum it would fall to 174,000 ÷ 102,000 = 1.71.

![Bars compare the four-week summed reach, 102,000, with the monthly reach reported by the platform, 58,000](https://uploads.relator.digital/blog/metricas-nao-aditivas/21c43496-soma-vs-real.en.svg "Hypothetical example: adding four weeks of reach nearly doubles the month's number")

## Rates don't add up or average out either

Frequency is a ratio, and ratios follow another rule: don't add them or take a simple average. Recompute from the components. This applies to CTR (clicks ÷ impressions), CPC (spend ÷ clicks), CPM (spend ÷ impressions × 1,000) and ROAS (revenue ÷ spend).

Hypothetical example: campaign A had 1,000 clicks on 100,000 impressions (CTR 1.00%) and campaign B had 300 clicks on 10,000 impressions (CTR 3.00%). The simple average gives 2.00%. The right calculation is total clicks over total impressions: 1,300 ÷ 110,000 = 1.18%. Campaign B is small and pulls the average up without deserving that weight.

| Metric | Can you add across rows? | What to do |
| --- | --- | --- |
| Spend, impressions, clicks | Yes | Add them and keep the total |
| Reach, unique users | No | Request it already de-duplicated for the report's cut and period |
| Frequency | No | Impressions ÷ reach, with reach from the same cut |
| CTR, CPC, CPM, ROAS | No | Add numerator and denominator, then divide |

## How to report without misleading the client

A few habits solve most of the problem.

1. **Label the cut.** Every unique number must say at which level and period it was measured: "campaign reach, September 1 to 30".
2. **Ask for the whole period, not the parts.** If the report is monthly, query the month's reach, not each week's. In Google Ads, remember the 92-day limit; on Meta, that reach with older breakdowns may come back empty.
3. **Store numerator and denominator.** For frequency and rates, store the counts (impressions, clicks, spend) and compute the ratio at display time.
4. **Avoid stacking reach in charts.** A stacked bar chart of reach by campaign suggests the total is the sum. Show the de-duplicated total beside it, labeled as such.
5. **Write the note in the report.** A line like "Reach can't be added across campaigns; the total counts unique people" avoids the question "why 63k if it's 75k?".

## How to apply

1. List in your report the metrics that count unique people: reach, frequency, users and the "unique" variants of clicks and views.
2. For each one, note the level and period at which it is calculated in the source platform.
3. Replace every sum of those metrics with a direct query at the level and period you will show. Where the platform doesn't deliver the total (for example, `unique_users` outside the listed campaign types or above 92 days), show the value per campaign or period and don't invent a total.
4. Recompute frequency, CTR, CPC, CPM and ROAS from the sums of numerators and denominators.
5. Say in the caption when a total is estimated or sampled. Meta classifies reach as estimated.
6. Record in the client's metrics dictionary which metrics are additive and which are not.

## Sources

Checked on October 21, 2026.

- [Meta: Reach](https://www.facebook.com/business/help/710746785663278)
- [Meta: Frequency](https://www.facebook.com/business/help/1546570362238584)
- [Meta: Impressions](https://www.facebook.com/business/help/675615482516035)
- [Meta: Troubleshoot reasons why ad metrics may not add up](https://www.facebook.com/business/help/1098122253564910)
- [Meta: About data sampling](https://www.facebook.com/business/help/1691983057707189)
- [Meta Marketing API: Insights API, best practices](https://developers.facebook.com/docs/marketing-api/insights/best-practices)
- [Google Ads API: metrics reference (v26)](https://developers.google.com/google-ads/api/fields/v26/metrics)
- [Campaign Manager 360: Unique Reach](https://support.google.com/campaignmanager/answer/2823516)
- [Google Analytics: dimensions and metrics](https://support.google.com/analytics/answer/12253918)
- [Google Analytics: about data thresholds](https://support.google.com/analytics/answer/9383630)
- [Google Analytics: about the (other) row](https://support.google.com/analytics/answer/9309767)
