1. The Measurement Challenge: Why Mobile Needs MMPs
In web e-commerce, tracking a conversion is straightforward: the user clicks an ad containing a campaign query string, navigates to the merchant website, and fires a conversion pixel on the checkout confirmation page. The conversion path stays within a single continuous browser session.
In mobile app marketing, this chain is fundamentally broken:
- The ad click occurs in App A (e.g. Twitter / X).
- The user is redirected outside the app into a closed walled garden: the Apple App Store or Google Play Store.
- The app binary downloads over Wi-Fi or cellular network (a process that may take minutes or hours).
- The user opens App B hours later.
Neither Apple nor Google natively exposes user-level browsing click history directly to the newly installed app. Mobile Measurement Partners (MMPs) like AppsFlyer, Adjust, Branch, Kochava, and Singular exist to bridge this gap, serving as an impartial referee across competing ad networks.
2. Complete Attribution Flow Architecture
[Ad Creative Displayed in App A]
│
▼ 1. User Taps Ad CTA
[MMP Tracking Redirect Link]
│ (Logs clickid, timestamp, IP, User-Agent, Campaign ID, Device ID)
▼ 2. 302 Redirect
[App Store / Google Play]
│
▼ 3. Download & Install Binary
[First App Launch of App B]
│
▼ 4. Embedded MMP SDK Initializes
[MMP Attribution Engine]
│ 5. Matches install signals against recent click database
├───────────────────────────────┬───────────────────────────────┐
▼ ▼ ▼
[Attributed Campaign Verified] [Self-Attributing Network (SAN)] [Organic Fallback]
│ │
▼ 6. S2S Postback Dispatched ▼ 6. Claims Evaluation
[DSP / Ad Network Dashboard] [Meta / Google / Apple Search Ads]
3. Attribution Methodologies
A. Deterministic Matching (Highest Accuracy)
Occurs when a matching unique identifier exists on both the click and the install:
- Device ID Matching: The ad click captures the hardware advertising ID (GAID on Android, IDFA on iOS with ATT consent). When the app launches, the MMP SDK reads the same ID. If the install occurs within the attribution window (standard: 7 days), it is attributed deterministically.
- Google Play Install Referrer: On Android, the Google Play Store allows ad networks to pass a parameter directly through the store URL. When the app is installed, the Google Play Install Referrer API returns the original click token directly to the MMP SDK with 100% precision.
B. Probabilistic Modeling (Fallback / Non-IDFA)
When device identifiers are masked (e.g. iOS users who deny ATT consent), the MMP captures device metadata at click time:
- Public IP Address (or subnet)
- HTTP
User-Agent(Device model, OS build) - Language and Timezone
If an un-attributed install launches from the same IP with matching device characteristics within a narrow 2 to 24-hour lookback window, it is attributed probabilistically.
4. Apple's SKAdNetwork (SKAN 4.0) Mechanics
On iOS, privacy restrictions prevent traditional device-level attribution for unconsented users. Apple's SKAdNetwork operates on the OS level:
- The ad network registers with Apple and receives a signed ad impression token.
- When the user installs and launches the app, the iOS operating system directly records the conversion.
- iOS delays the postback by 24 to 48 hours and strips out all user IDs, device identifiers, and exact timestamps to prevent user re-identification.
- The postback is sent directly from the user's iPhone to the ad network and MMP, containing only a Source Identifier (Campaign ID) and a Conversion Value (0–63) representing in-app engagement or revenue tier.
5. Server-to-Server (S2S) Postback Architecture
Once attribution is claimed, the MMP dispatches an automated HTTP GET or POST request to the winning DSP's conversion endpoint:
POST https://postbacks.dsp-partner.example/v1/install
Content-Type: application/json
{
"click_id": "clk_8910248194",
"campaign_id": "cmp_spring_sale_us",
"app_bundle": "com.finance.investapp",
"conversion_timestamp": "2026-04-03T12:41:05Z",
"attribution_model": "last_click_deterministic",
"geo": { "country": "USA", "region": "IL" },
"cost_model": "CPI",
"cost_usd": 3.85
}
6. Solution Engineer RCA Playbook: "10,000 Clicks but Only 500 Installs"
A publisher or DSP client escalates: "Our campaign reports 10,000 ad clicks in our dashboard, but the MMP only recorded 500 installs. That is a 5% conversion rate against our historical 25% benchmark. Where are the missing installs?"
The 7-Layer Attribution Investigation
- Tracking Link Encoding: Inspect the DSP click tracker URL. Did someone paste an un-encoded deep link containing nested ampersands (
&) that truncated theclick_idparameter before reaching the MMP? - Store Country Mismatch: Are US ads routing UK or German users to the US App Store? When a user clicks a foreign App Store link, Apple displays a modal: "This app is not available in your storefront", resulting in 90%+ install abandonment.
- App Binary Size: Is the new app build >200MB? Apple prompts users on cellular data with "App exceeds 200MB. Download over Wi-Fi?", causing massive delay and attribution window expiration.
- MMP SDK Initialization Bug: Did the app developer deploy a new release where the MMP SDK is initialized after the onboarding screen instead of in
application:didFinishLaunchingWithOptions:? If users drop off before the paywall, the SDK never fires. - Click Injection / Click Spam: Audit the click-to-install time (CTIT) distribution in the MMP. If 7,000 clicks occurred within 200 milliseconds of the install, fraudulent publisher apps are firing background clicks to hijack organic installs.
7. Real-World Interview Scenarios
Scenario: "What is a Self-Attributing Network (SAN) and how does it claim attribution?"
Answer: SANs (such as Meta, Google Ads, and Apple Search Ads) do not use third-party MMP click redirect URLs. Instead, when an install occurs, the MMP sends the device identifier to the SAN via API. The SAN checks its internal user activity database, responds with whether that user saw or clicked an ad on its platform, and claims attribution based on its internal rules.
Test S2S Attribution Endpoints in OpenAPI Sandbox
Simulate server-to-server postback requests, verify HTTP response status codes, and test attribution webhooks live in the developer sandbox.