Skip to content

fix: drop the GA4 first_open tail from the Play figures - #4

Merged
TadelUnso merged 1 commit into
mainfrom
fix/drop-ga4-first-open-tail
Aug 9, 2026
Merged

fix: drop the GA4 first_open tail from the Play figures#4
TadelUnso merged 1 commit into
mainfrom
fix/drop-ga4-first-open-tail

Conversation

@TadelUnso

Copy link
Copy Markdown
Owner

Why

The panel's Google number visibly fell (25 → 15) whenever Play's reports caught up. Root cause: the GA4 supplement counted Firebase first_open events as installs for days Play had not reported yet, and first_open is not an install — it fires on reinstalls, data wipes and the first launch after an SDK rollout.

Proven against real data:

  • 2026-08-03: GA4 counted 10 first_opens; Play later confirmed 0 installs for that day (the Firebase build rolled out that day).
  • Play Console through 2026-08-06: exactly 1 new user (Aug 5), while GA4 logged 4 first_opens on Aug 6 alone.
  • GA4 history only begins when the SDK ships, so it can never source a lifetime figure.

Every time Play published a day, the inflated GA4 estimate for it left the query window and the "lifetime" total dropped. A lifetime count that goes down is worse than one that runs a few days behind — and at this widget's volumes the 2–3-day Play lag costs nothing.

What

  • Remove GoogleAnalyticsClient, GoogleAnalyticsInstallsService and their tests
  • Unhook the supplement from FiguresModel; the Google row is now Play-only
  • Remove the GA4 section from Settings, its keys from WidgetSettings, its validators from StoreCredentials, and its assembly from StoreAccounts
  • Return GoogleServiceAccountToken.make to its pre-GA4 shape (no scope parameter)
  • Drop the GA4 setup section from the README

Verification

  • swift build clean, 130/130 tests pass
  • Play-only figures verified against the production service: lifetime=7 today=0 asOf=2026-08-04, matching Play Console

🤖 Generated with Claude Code

https://claude.ai/code/session_01UQfMsv3osfTrJbDnCnSxJa

The tail supplemented the confirmed Play total with Firebase first_open
events for days Play had not reported yet, on the assumption that Play
would later confirm roughly the same number. Real data disproved the
assumption: first_open fires on reinstalls, data wipes and the first
launch after an SDK rollout, so the panel counted 10 "installs" on a day
Play confirmed zero — and the lifetime figure visibly fell every time
Play caught up and the inflated days left the query window. A lifetime
count that goes down is worse than one that runs a few days behind.

The panel now shows only what Play has confirmed, dated by the report
day it comes from. At the volumes this widget watches, the two-to-three
day report lag costs nothing; the phantom installs cost trust.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQfMsv3osfTrJbDnCnSxJa
@TadelUnso
TadelUnso merged commit 93318b6 into main Aug 9, 2026
2 checks passed
@TadelUnso
TadelUnso deleted the fix/drop-ga4-first-open-tail branch August 9, 2026 14:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant