Real traffic & ad estimator

1. Definitions

Let’s define the numbers you already have:

VariableMeaning
CF_uvCloudflare unique visitors (all IPs, bots + humans)
CF_reqCloudflare total requests
Mat_uvMatomo unique visitors (JS-enabled humans)
Mat_pvMatomo pageviews
bot_factorEstimated % of Cloudflare traffic that is bots (0–1)
JS_factorFraction of real humans that trigger Matomo/JS (0–1)

2. Step 1: Estimate human visitors from Cloudflare

HumansCF=CF_uv×(1bot_factor)Humans_{CF} = CF\_uv \times (1 – bot\_factor)

HumansCF​=CF_uv×(1−bot_factor)

  • Example: bot_factor = 0.98 (98% bots)

HumansCF=2,580,000×(10.98)=51,600Humans_{CF} = 2{,}580{,}000 \times (1 – 0.98) = 51{,}600

HumansCF​=2,580,000×(1−0.98)=51,600


3. Step 2: Adjust Matomo for JS undercounting

Humansreal=Mat_uv/JS_factorHumans_{real} = Mat\_uv / JS\_factor

Humansreal​=Mat_uv/JS_factor

  • Example: JS_factor = 0.05 (only 5% of humans trigger JS)

Humansreal=2,509/0.0550,180Humans_{real} = 2{,}509 / 0.05 \approx 50{,}180

Humansreal​=2,509/0.05≈50,180

✅ Notice this roughly matches the Cloudflare-estimated human count.


4. Step 3: Estimate real ad impressions

If your ad triggers on each pageview:

AdImpressionsreal=Humansreal×AvgPagesPerHuman×AdEngagementFactorAdImpressions_{real} = Humans_{real} \times AvgPagesPerHuman \times AdEngagementFactor

AdImpressionsreal​=Humansreal​×AvgPagesPerHuman×AdEngagementFactor

  • AvgPagesPerHuman ≈ Mat_pv / Mat_uv = 5,769 / 2,509 ≈ 2.3
  • AdEngagementFactor = fraction of pages where ad is actually viewed (0–1), e.g., 0.5

AdImpressionsreal=50,180×2.3×0.557,700AdImpressions_{real} = 50{,}180 \times 2.3 \times 0.5 \approx 57{,}700

AdImpressionsreal​=50,180×2.3×0.5≈57,700

  • Compare to Cloudflare requests (8.3M) — huge difference because most requests are bots or non-engaged humans.

5. Step 4: Optional shortcut formula

AdImpressionsrealMat_uv×1JS_factor×Mat_pvMat_uv×AdEngagementFactorAdImpressions_{real} \approx Mat\_uv \times \frac{1}{JS\_factor} \times \frac{Mat\_pv}{Mat\_uv} \times AdEngagementFactor

AdImpressionsreal​≈Mat_uv×JS_factor1​×Mat_uvMat_pv​×AdEngagementFactor

  • Only requires Matomo numbers + your estimate of JS coverage + ad view factor.
  • No need to deal directly with raw Cloudflare numbers unless you want bot analysis.

Leave a Comment

Licensed under CC BY-NC 4.0

DevOps viewpoints are those of its owner. You may share and adapt this article for non-commercial purposes, provided proper attribution is given. Attribution should include:

Title: Real traffic & ad estimator
Author: peter arthur martin
Original URL: https://www.woodcentral.com/-/peter/real-traffic-ad-estimator/
License: CC BY-NC 4.0

Site Index

👍 This page answered my questions

Your vote helps other woodworkers quickly find the answers and techniques that actually work in the shop.