Blog

The maker's notes

Indie iOS analytics, written from running four live apps — no filler, no press releases.

Apple Search Ads attribution: AdServices without an MMP

AdServices end to end: token, API call, 404 retries, the payload you get without ATT, and joining keyword IDs to actual subscribers.

July 17, 2026 · attribution

App update revenue impact: how to measure it honestly

Why calendar before/after lies, version-anchored cohorts, the phased-release and trial-lag timing rule, and matching the metric to the change you shipped.

July 17, 2026 · money

RevenueCat webhooks vs entitlements: keeping status in sync

The CANCELLATION trap, the five-retry delivery limit, and the fetch-current-state pattern — with daily reconciliation as the repair layer that keeps subscription status matching RevenueCat's.

July 15, 2026 · revenue data

iOS attribution without ATT: AdServices, SKAN, AdAttributionKit

AdServices, SKAdNetwork 4, and AdAttributionKit sorted by the question each answers — and the user-level paid-social data none of them will ever give back.

July 15, 2026 · attribution

Why your PostHog and RevenueCat numbers never match (and how to join behavior to revenue)

Two SDKs, two identity spaces. The concrete failure modes behind mismatched counts, why connectors can't fully fix it, and the one-ID pattern that can.

July 14, 2026 · data quality

The onboarding steps that drive paid conversion in an iOS subscription app

Five events, two cuts that matter, and honest math at indie sample sizes — measuring onboarding against money instead of completion rates.

July 14, 2026 · growth

Revenue vs proceeds vs your Apple payout: which number should an indie developer use?

A decision table for the three money numbers, then the four gaps between them: commission, VAT inside prices, Apple's fiscal calendar, FX and withholding.

July 14, 2026 · money