Journal · 9 December 2025
Attributing in-app actions across sessions
Last-click attribution is a story we tell because the column exists. A person taps a paid search ad, installs, backgrounds the app, returns six hours later from a push, and completes checkout_completed. The ad network would like the checkout. The push system would like it too. The truth is a sequence with a gap, and App Analytics that flatten the gap into a single “source” will fight your finance team forever.
The hour when the user is still a device
On first open, many apps have no account. Identity is a vendor ID, a Keychain value, or an advertising identifier that consent has not granted. If you attach campaign parameters only after login, you will systematically under-credit the install path and over-credit whatever the person did once they had a password. Write the identity plot in the catalogue: device → optional login → reset. Then decide which actions are allowed to carry campaign properties during the anonymous hour.
Deferred deep links make this worse. A link that opens a specific item after install is a gift to the product and a nightmare to the join. Android 12+ and iOS privacy changes have made “the link we think they used” a probabilistic artefact. Treat it as a hint. Do not build a bonus scheme on it.
Sessions are not chapters
SDKs love session_id. Humans do not live in sessions. A cold start after eight hours is not a new character in the novel; it is the same person with a dead process. If you reset campaign attribution on every new session, paid social will look like a slot machine. Prefer a lookback you can defend — 24 hours for a content app, longer for a mortgage eligibility flow — and put the lookback in the memo.
In-app actions that matter (item_saved, application_submitted) should carry a small set of context properties: entry_surface, had_account, hours_since_first_open. That is usually enough to stop a growth lead inventing a new UTM for every button. It is not enough to settle a multi-touch argument, and it should not pretend to.
What we refuse to model in a four-week clinic
We do not teach you to beat a network’s self-attributed numbers. We do not connect SKAdNetwork postbacks into a fairy tale of user-level truth. The clinic is for product trios who need to know whether a deep link actually opened the item, and whether a second user was created because the anonymous ID was rotated. Those are instrumentation questions. Media mix is a different room, and not ours.
If the catalogue itself is still a sitemap, attribution work will only decorate the mess. Start with the taxonomy note, or ask about the Session Attribution Clinic once the verbs are stable.