Marketing & analytics

Why CPA clicks and your stats don't match

A CPA network and your site count a "click" in different places and at different moments — so the numbers rarely line up. Here's what that means and what to check first.

The short version

With CPA (cost per action) affiliate traffic, the click is recorded on the network's tracker page, not on your site. The user taps the ad → lands on the CPA site → gets redirected to your landing page or app store.

Both the CPA dashboard and your analytics have numbers — but when and where they count differs, so comparing "click to click" without context is misleading.

To see how many people actually reached you, use session reports in your web analytics (e.g. Yandex Metrica) filtered by the CPA campaign source: those are visits on your domain, not taps on the tracker.

Typical user path:

Ad / publisher site CPA tracker page AppsFlyer link (or similar) Your landing or store

How to read the gap

More CPA clicks than visits on your side

Usually people drop off between the tracker and your site: the page never opens, a redirect breaks, the tag doesn't fire, or the user closes the tab before load.

Fewer CPA clicks than visits

Direct or return visits that skip the tracker, different attribution rules, CPA-side deduplication, or different "unique click" windows (cookie, IP, 24h).

If the gap is large (many CPA clicks, few arrivals) — start with mobile. Desktop and phone are often separate pages or templates; a break on one platform can skew everything.

Common reasons

1. Before your site loads

  • CPA middle page didn't fully load — the click is already counted (JS or server pixel) but the user never continued.
  • Your site never opens — CPA shows a redirect, but traffic never hits your domain: broken link, blocking, geo, anti-bot.
  • Server is very slow — the tab is closed before load; CPA already counted the click, your tag didn't (or the opposite if the tag is at the bottom).

2. Trackers and attribution (AppsFlyer, etc.)

  • No obvious HTTP redirect in DevTools — the handoff may run via script or a deferred deep link.
  • AppsFlyer loads after the main page — content doesn't finish, the script never runs: CPA sees a click, store handoff doesn't happen.
  • Tag missing on one platform — separate desktop and mobile templates: tracker on one, stripped on the other.
  • Different "uniqueness" rules — CPA counts clicks, you or an MMP count deduplicated users; comparing without the same definition creates a fake gap.

Where to start

  • Walk the full chain on phone and desktop (real device + DevTools emulation): redirects, network errors, time to load.
  • Load critical tracking as early as possible (inline or a deliberate defer order), not only a heavy bundle at the bottom.
  • List everything on the landing page: render blockers, third-party CDNs, ad blockers and browser privacy rules (ITP, etc.).
  • Ask your CPA partner what exactly counts as a click — tracker request, JS event, uniqueness by cookie, IP, or day.

Useful links

More articles