Why web attribution logic breaks down for mobile app installs and in-app purchases, and how SKAdNetwork, App Tracking Transparency, and MMPs change affiliate tracking.
Quick Answer
What's the difference between SKAdNetwork and traditional cookie-based affiliate tracking?
Cookie-based tracking lets the affiliate network directly read a browser cookie at checkout and credit the referring publisher in near real time, with full transaction detail. SKAdNetwork instead has Apple itself control attribution: it reports aggregated, delayed, and privacy-thresholded conversion data back to the ad network or MMP rather than allowing any party to match an individual click to an individual purchase, which means affiliate networks receive coarser and slower signal for iOS app conversions than they do for web sales.
Related from xark.io
# Affiliate Attribution for Mobile Apps: What Changes and Why
If you've built your affiliate program on web attribution logic and you're now trying to bolt on mobile app installs and in-app purchases, you've probably already hit the wall: the cookie-and-cross-domain-tracking playbook that works fine on desktop and mobile web simply does not translate to native apps. Different rules govern the mobile app ecosystem, and treating app attribution as "web tracking, but on a phone" is the single most common reason affiliate programs undercount app-driven revenue — and underpay (or overpay) the publishers responsible for it.
This guide breaks down what actually changes when affiliate attribution moves from browser to app, why Apple's privacy architecture rewired the entire measurement stack in 2021 and is still reshaping it, and how brands running programs on Impact, Awin, CJ, or Levanta should think about deep linking, install attribution, and in-app purchase tracking differently than they think about a standard web sale.
Focus: Why Mobile App Attribution Is a Different Discipline
Web affiliate attribution relies on a chain that's simple in concept, even when it's fragile in practice: a shopper clicks an affiliate link, a tracking cookie (or, increasingly, a server-side click ID) gets set, the shopper checks out on the merchant's website, and the network's pixel or postback fires to credit the referring publisher. The browser is the connective tissue. Cookies persist (or don't) inside it, redirects chain through it, and the merchant's own domain is where the purchase event fires.
None of that holds inside a native mobile app. There is no browser tab carrying a cookie from click to conversion. There is no shared domain. When a user taps an affiliate link on a publisher's site or in a social post and the destination is "install this app," the entire session breaks: the user leaves the referring context, goes to the App Store or Google Play, downloads the app, opens it — and by the time they make an in-app purchase, the software has no native way of knowing which publisher sent them there in the first place.
That gap is what mobile measurement partners (MMPs) like AppsFlyer, Adjust, Branch, and Kochava exist to solve, and it's why programs advertising app installs or in-app purchases route affiliate traffic through deep links and probabilistic/deterministic matching rather than cookies. Two more forces compound the difference:
- ◆Apple's App Tracking Transparency (ATT), introduced with iOS 14.5 in 2021, requires apps to show an explicit opt-in prompt before accessing the IDFA (Identifier for Advertisers) — the device-level ad ID that used to make deterministic cross-app attribution straightforward on iOS.
- ◆SKAdNetwork (SKAN), Apple's privacy-preserving attribution framework, replaced much of what IDFA-based tracking used to do for iOS install attribution — but it works on aggregated, delayed, and deliberately noisy data, not the clean click-to-conversion match affiliate managers are used to.
Android has its own version of this shift underway with Privacy Sandbox, though enforcement and adoption have moved more slowly than iOS's.
Explain: The Mechanics — Deep Linking, SKAdNetwork, and ATT
Deep linking is the affiliate link's mobile equivalent
On the web, an affiliate link is a tracking URL that redirects to a landing page. In mobile, the equivalent is a deep link — a URL that, if the app is already installed, opens directly to a specific in-app screen (a product page, a referral landing state, a promo code entry field). If the app isn't installed, a deferred deep link is what makes attribution possible at all: the link first sends the user to the App Store or Play Store, the user installs and opens the app, and the deep-linking SDK matches that first app-open back to the original click — typically via a combination of device fingerprinting (IP address, device model, OS version, timestamp) and, where available, IDFA/GAID matching.
This is why affiliate programs advertising app installs almost always need an MMP integration sitting between the affiliate network and the app itself. Impact, Awin, and CJ don't natively read what happens inside a merchant's iOS or Android app — they need a bridge. That bridge typically works like this: the network's tracking link fires an MMP-specific tracking link (or the same link carries MMP parameters), the MMP handles the store redirect and post-install matching, and then the MMp fires a postback to the affiliate network once it has attributed an install or in-app event to that click. The affiliate network then applies its own attribution window and payout rules on top of the MMP's match.
SKAdNetwork changes what "credit" even means on iOS
Before ATT, iOS attribution worked much like Android's does today: an ad network or affiliate link click carried an IDFA-linked identifier, the install happened, and the MMP matched click to install deterministically, often in near real time, down to the individual click ID.
SKAdNetwork replaces that with a privacy-preserving, Apple-mediated system:
- ◆Apple — not the MMP, not the ad network, not the affiliate network — determines attribution and controls the reporting.
- ◆Conversion values are limited (SKAN 4 expanded this from earlier versions but it's still a small enumerated set of states, not raw purchase amounts), meaning you get a coarse signal like "this install eventually reached conversion-value tier 12," not "this install spent $47.32 on in-app purchases three days later."
- ◆Postbacks are delayed and batched (SKAN 4 introduced multiple delayed postback windows rather than one), specifically to prevent any single postback from being tied back to an individual user or click.
- ◆Below a certain volume of installs per campaign/source combination, Apple applies "crowd anonymity" privacy thresholds and simply won't release even the coarse data, to prevent re-identification in low-volume cells.
For affiliate marketing specifically, this means: if a publisher drives a modest volume of iOS installs (which describes the vast majority of individual affiliate publishers, as opposed to large-scale paid UA channels), that publisher's install-level attribution may never clear Apple's reporting thresholds at all. This is a structural reason mobile app affiliate programs tend to concentrate spend and reporting confidence on their highest-volume publishers — not because smaller publishers aren't converting, but because SKAN's privacy design makes their individual conversions statistically invisible to iOS-only measurement.
App Tracking Transparency governs whether IDFA-based matching is even available
ATT is the consent layer: it's the prompt asking "Allow [App] to track you across other companies' apps and websites?" A user's answer determines whether the app (and by extension, any MMP or ad network it works with) can access IDFA for that user at all.
Opt-in rates vary by app category and by how the prompt is framed (a pre-permission "soft ask" screen before Apple's hard prompt tends to lift opt-in), but the practical reality for affiliate attribution is: a meaningful share of iOS users will decline. For those users, there is no IDFA, deterministic device-level matching isn't available, and attribution falls back to SKAdNetwork's aggregated model or to probabilistic fingerprinting methods that are directionally useful but not exact.
Android traffic doesn't face ATT's opt-in prompt today, so GAID (Google Advertising ID)-based matching still works closer to the old deterministic model — though Google's own Privacy Sandbox initiative signals the same direction of travel, just on a slower and less finalized timeline as of this writing.
In-app purchase attribution adds a second layer on top of install attribution
Getting install attribution right only solves half the problem for programs that pay commission on in-app purchases (subscriptions, in-app currency, one-time unlocks) rather than just cost-per-install. A second event — the purchase itself — has to be captured by the app's own SDK (often the MMP's SDK, sometimes a first-party events pipeline), matched back to the original attributed install, and then passed to the affiliate network as a conversion event, usually via server-to-server postback rather than a client-side pixel (there's no "pixel" concept inside a native app the way there is on a web page).
This is also where Apple's App Store and Google Play billing rules intersect with affiliate tracking: purchases made through Apple's in-app purchase system are subject to Apple's revenue share and, more relevantly here, the transaction data available to third parties is more limited than what a merchant gets from a direct web checkout. Programs crediting in-app purchases typically rely on server-side purchase receipt validation reported by the app back through the MMP, not a network pixel firing on a thank-you page — because there is no thank-you page.
Example: Illustrative Comparison of Web vs. App Attribution Flows
The table below lays out how the same affiliate mechanic works differently across web and mobile app contexts. Figures and windows below are illustrative examples of how programs are commonly structured, not universal standards — always confirm exact windows and rules in your own network dashboard.
| Attribution Element | Standard Web Affiliate Tracking | Mobile App Attribution |
|---|---|---|
| Click capture | Cookie set in browser via tracking pixel/redirect | Deep link click captured by MMP SDK or link service |
| Conversion match | Cookie read at checkout on merchant domain | Deferred deep link matches install to prior click (device signals ± IDFA/GAID) |
| Typical attribution window | Often 24 hours–30+ days, cookie-based (varies by program) | Often shorter and app-specific — illustrative example: 7-day click / 1-day view windows are common defaults for install attribution, though this varies by MMP and program configuration |
| iOS-specific constraint | None — cookies work the same regardless of OS | ATT opt-in required for IDFA access; SKAdNetwork governs aggregated fallback attribution |
| Data granularity | Individual transaction ID, order value, SKU-level detail typically available | Aggregated/delayed under SKAN for iOS; more granular (closer to deterministic) on Android via GAID, pending Privacy Sandbox changes |
| Purchase event delivery | Client-side pixel or server-side postback on checkout confirmation page | Server-to-server postback from MMP after in-app purchase receipt validation — no client-side pixel option |
| Cross-device matching | Difficult; typically requires login-based identity resolution | Also difficult; probabilistic fingerprinting or MMP's own cross-device graph, with similar privacy constraints |
| Network's role | Directly reads and credits conversions from its own pixel/postback | Depends on MMP as an intermediary; network applies its rules on top of MMP-supplied attribution data |
Example: A Practical Walkthrough (Illustrative Scenario)
To make this concrete, here's an illustrative — not real — walkthrough of how a single affiliate-driven app install and purchase might flow through the system. Treat every number as a placeholder for explaining the mechanism, not as a benchmark.
- A publisher embeds a tracking link in a "best home gadgets" roundup. The link is generated by the affiliate network but wraps an MMP-specific deep link.
- A reader on iOS taps the link, gets redirected through the MMP's link service, lands on the App Store, and installs the app.
- On first open, the app requests ATT permission. In this illustrative case, the user allows tracking.
- The MMP's SDK matches the install to the original click using IDFA plus fallback device signals, and fires an install postback to the affiliate network within its attribution window (illustrative example: a 7-day click window).
- Three days later, the user completes an in-app purchase — say, a subscription upgrade. The app's billing SDK validates the receipt and reports the purchase event to the MMP, which matches it to the original attributed install and passes a server-to-server postback to the affiliate network.
- The affiliate network credits the original publisher based on its own program rules (commission structure, any specific in-app purchase payout terms) — a process that, in this illustrative case, might take longer to finalize than a web sale would, since it depends on the MMP's postback timing rather than an instant checkout-page pixel fire.
If the same user had declined the ATT prompt in step 3, steps 4–6 would instead rely on SKAdNetwork's aggregated conversion-value reporting (delayed, coarse, and potentially suppressed entirely if this publisher's install volume for that campaign doesn't clear Apple's privacy threshold) — meaning the publisher might see little or no attributed credit for a real, revenue-generating referral.
Detail: What This Means for Program Structure and Network Choice
MMP integration isn't optional for app-driven programs. If in-app purchases or installs are a meaningful revenue channel, the affiliate program needs a working MMP-to-network postback pipeline before publisher recruitment even starts. Retrofitting this after publishers are already sending traffic tends to produce a backlog of unmatched, uncredited conversions — which erodes publisher trust fast.
Attribution windows need separate documentation for web and app. A program's public terms often state one cookie window for web purchases; app install and in-app purchase windows are frequently shorter and governed by the MMP's own default settings rather than the network's cookie logic. Programs that don't clearly separate these in publisher-facing documentation create disputes when a publisher expects a 30-day web-style window on an app conversion that actually closed in a 7-day install window.
Network capability varies. Among the networks brands commonly run programs on:
- ◆Impact has native mobile app tracking and MMP integration support built into its platform, making it a common choice for programs with meaningful app-driven revenue.
- ◆Awin (which absorbed ShareASale's publisher base and platform following their October 2025 merger) supports app tracking through integration partners, though the depth of native in-app purchase tooling should be confirmed against current program needs rather than assumed.
- ◆CJ doesn't publish a public rate card for its services (pricing is sales-quoted), and the same applies to the specifics of its app-tracking capabilities — confirm directly with a CJ account team for app-specific integration details.
- ◆Levanta, built specifically around Amazon-ecosystem affiliate relationships, operates on its own independent attribution window (approximately 14 days) — worth understanding on its own terms if app-driven Amazon-adjacent traffic is part of the mix, though its core design center is Amazon marketplace attribution rather than native app SDK integration.
Publisher segmentation should account for SKAN's volume thresholds. If a program relies heavily on iOS attribution and works with a long tail of smaller publishers, expect a structural gap between actual referred conversions and what SKAN-based reporting will ever surface for those lower-volume partners. This isn't a tracking bug to "fix" — it's a designed privacy constraint, and program managers need to set publisher expectations (and possibly commission structures) accordingly rather than treating low reported numbers as evidence the publisher underperformed.
Where This Leaves Affiliate Programs Expanding Into App
The shift from web to mobile app affiliate attribution isn't a matter of pointing the same tracking pixel at a different destination — it's a different measurement architecture built around device-level privacy controls, platform-mediated (rather than network-mediated) attribution on iOS, and a mandatory MMP layer that sits between the affiliate network and the actual conversion event. Programs that plan for deep linking, ATT opt-in realities, and SKAN's aggregated reporting from the start avoid the publisher-trust problems that show up when app conversions simply seem to "disappear" relative to web performance.
At Xark.io we work with brands like Levoit, Cosori, TCL, and Insta360 across Impact, Awin, CJ, and Levanta to build attribution architecture that holds up whether the conversion happens on a product page or inside a native app — including the MMP integration work, publisher-facing documentation, and network configuration that keep app-driven affiliate revenue actually attributable instead of quietly lost to privacy thresholds.
Frequently Asked Questions
Do I need a mobile measurement partner (MMP) to run app-based affiliate offers?
In practice, yes, for any program crediting app installs or in-app purchases. Affiliate networks like Impact, Awin, and CJ don't have native visibility into events happening inside a merchant's iOS or Android app — an MMP such as AppsFlyer, Adjust, Branch, or Kochava sits between the deep link click and the app itself, handles deferred deep linking and install matching, and posts conversion events back to the affiliate network via server-to-server postback.
Does App Tracking Transparency (ATT) affect Android affiliate tracking too?
No — ATT is an Apple/iOS-specific consent requirement governing IDFA access. Android's equivalent identifier, GAID, isn't currently gated behind the same opt-in prompt, so deterministic device-level matching remains more consistently available on Android today. That said, Google's Privacy Sandbox initiative is moving in a similar privacy-restrictive direction, so programs should not assume Android's current tracking model is permanent.
Why does a publisher's iOS app installs sometimes show little or no attributed revenue even when I know they're driving traffic?
This is often SKAdNetwork's "crowd anonymity" privacy threshold at work — Apple withholds conversion-value reporting for campaign/source combinations below a certain install volume to prevent re-identifying individual users. Lower-volume publishers can be driving real, converting traffic that simply never clears the volume needed for Apple to release attribution data, which is a structural privacy limitation rather than a sign the traffic isn't converting.
Are attribution windows the same for web purchases and in-app purchases within the same affiliate program?
Usually not, and this is a common source of publisher disputes. Web attribution windows are typically governed by the network's own cookie logic and can run 24 hours to 30+ days depending on the program. App install and in-app purchase attribution windows are commonly shorter and are set by the MMP's configuration rather than the network's standard cookie terms, so programs should document web and app windows separately in publisher-facing terms rather than assuming one policy covers both.
Can affiliate networks see exact in-app purchase amounts, or just that a purchase happened?
It depends on the MMP integration and how the app's billing SDK validates and reports receipts, but in general in-app purchase data arrives via server-to-server postback from the MMP after receipt validation — there's no client-side pixel option inside a native app. On iOS specifically, if attribution falls back to SKAdNetwork rather than IDFA-based deterministic matching, purchase detail is further limited to the coarse conversion-value tiers SKAN reports rather than exact transaction amounts.