Blog
The maker's notes
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.
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.
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.
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.
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.
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.
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.