Journal · 9 December 2025

Attributing in-app actions across sessions

Helena Crowe · Session Attribution Clinic

Workshop discussion with notes on a table

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.