What Is a Self-Attributing Network (SAN)? How SAN vs. Non-SAN Attribution Works
Learn what a self-attributing network (SAN) is, how SANs differ from traditional tracking link networks, why ad dashboards over-report conversions, and how MMPs deduplicate cross-platform claims.

Key takeaways
- Self-attributing networks (SANs), often referred to as walled gardens, include major ad platforms like Meta Ads, Google App Campaigns, TikTok for Business, and Apple Search Ads. Instead of relying on tracking link redirects, they track user engagement internally and communicate attribution claims directly with mobile measurement partners (MMPs) via API.
- Conversion totals diverge across platforms because each SAN measures touchpoints within its own ecosystem. When a user interacts with ads on multiple channels before downloading an app, every platform involved may claim 100% credit for that single conversion within its dashboard.
- Non-SAN ad networks (such as Unity Ads, Moloco, or Appier) operate differently by passing engagement signals (clicks and impressions) directly to an MMP through tracking links, allowing the measurement system to determine attribution upfront.
- Independent attribution referees prevent double counting. An MMP collects touchpoint data across all channels, validates timestamps against configured lookback windows, and applies a unified last-touch attribution rule so only one network receives credit for the attributed install.
- Granular postbacks and event deduplication ensure downstream subscription events (such as free trial starts, paid conversions, and renewals) optimize ad network delivery algorithms without overcharging growth budgets.
What is a self-attributing network?
A self-attributing network (SAN) is an advertising platform that measures and claims conversion events internally using its own first-party dataset and APIs, rather than forwarding clicks through a third-party measurement redirect link.
In mobile app marketing, the largest paid acquisition channels operate as SANs:
- Meta Ads (Facebook, Instagram, and Audience Network)
- Google App Campaigns (Google Search, YouTube, Google Play, and Google Display Network)
- TikTok for Business (TikTok Feed and Pangle)
- Apple Search Ads (App Store Search results and search tabs)
When you run campaigns on standard ad networks, the ad creative typically contains a tracking link generated by an MMP. When a user taps the ad, the tracking link records the click and redirects the user to the App Store or Google Play Store.
SANs do not use external redirect tracking links for standard app campaign workflows. Because these platforms host the user experience within their own native apps (or operating systems), they record ad views and ad clicks directly inside their proprietary databases.
According to the Roku Help Center and Adjust, SAN attribution relies on a "claim-and-confirm" model:
- A user views or clicks an ad inside a SAN environment (e.g., Instagram feed or YouTube).
- The user installs and opens your mobile app.
- The measurement SDK inside your app records the install event and passes device identifiers or event tokens to the MMP backend.
- The MMP communicates via API with all configured SANs, asking whether they recorded an ad engagement for that user within their lookback window.
- If the SAN finds a matching touchpoint in its internal logs, it returns a conversion claim to the MMP.
- The MMP acts as an impartial referee, evaluating that claim against touchpoints from other ad networks to award final credit.
SAN vs. non-SAN attribution: structural differences
The architectural distinction between SAN and non-SAN networks fundamentally alters how data flows between the ad network, the MMP, and your app backend.
According to analysis by Avatria, traditional non-SAN ad networks (such as Unity Ads, Moloco, or Appier) rely on an MMP to generate unique click-tracking and impression-tracking URLs. As reported by Tenjin, when an ad is served, the network passes engagement data directly to the MMP in real time. The MMP logs the touchpoint immediately and evaluates whether it qualifies for attribution when the user installs the app.
In contrast, SANs do not hand over raw click and impression streams in advance. As noted by Branch, the MMP must send app conversion events in bulk to enabled SAN APIs, and each SAN determines internally whether it claims credit for that conversion.
| Attribution Criterion | Self-Attributing Networks (SANs) | Non-SAN Ad Networks (Unity Ads, Moloco, Appier) |
|---|---|---|
| Primary Channels | Meta Ads, Google App Campaigns, TikTok, Apple Search Ads | Unity Ads, Moloco, Appier |
| Tracking Mechanism | Direct platform integration & API claim matching | Click and impression tracking links / URLs |
| Touchpoint Hand-off | Evaluated internally by the network; claim sent via API | Sent upfront to MMP upon ad interaction |
| Attribution Decision | Network self-attributes, then submits claim to MMP for arbitration | MMP attributes install directly against logged touchpoints |
| Raw Engagement Visibility | Engagement logs kept within platform silos; conversion claims returned | Upfront click and impression data passed to the MMP |
| Postback Requirements | Bi-directional API syncing (install postback + attribution claim) | Single attribution postback sent from MMP to network upon conversion |
As reported in AdExchanger, non-SAN attribution pairs an install with an ad impression or click directly through app-side and network-side integrations. SANs, however, reserve conversion judgment until they receive event signals from the app side.
The multi-claiming problem: why ad dashboards over-report conversions
App founders running multi-channel acquisition across Meta, Google, TikTok, and Apple Search Ads frequently encounter a mathematical mismatch: the sum of attributed installs across ad platform dashboards is significantly higher than total actual app installs.
For example, consider a subscription app acquisition campaign over a single weekend:
- Actual unique new app installs (Backend/App Store Connect): 1,000
- Meta Ads Manager reported installs: 500
- Google Ads reported installs: 400
- TikTok Ads Manager reported installs: 300
- Apple Search Ads reported installs: 200
- Total dashboard-reported installs: 1,400 (a 40% discrepancy)
This discrepancy is not necessarily caused by software errors or fraudulent reporting. It is the direct mathematical result of conversion claim independence.
- TikTok claims 1 Install (within 1-day view window)
- Meta claims 1 Install (within 7-day click window)
- Apple Search Ads claims 1 Install (within 30-day tap window)
- = 3 Total Claimed Installs across Ad Dashboards
- Evaluates all 3 timestamps
- Discards TikTok view (lower touch priority than clicks)
- Compares Meta click (Day 2) vs. Apple Search Ads tap (Day 3)
- Awards Final Attribution: Apple Search Ads (Last Touch)
- = 1 Attributed Install Recorded
Because each SAN operates as an isolated walled garden, no individual platform knows what ads the user viewed or clicked on competing platforms.
- TikTok for Business measures actions following both ad clicks and ad views within its configured attribution window.
- Google App Campaigns evaluates real-time signals from Search, YouTube, and Maps to identify matching touchpoints.
- Meta Ads matches conversion events against its internal user interactions.
- Apple Search Ads checks its Attribution API for App Store taps and downloads.
According to Adjust, each SAN platform makes its own conversion-claim decision based strictly on whether it touched the user during its active lookback window. When users interact with ads across multiple channels before downloading, every platform claims full credit.
If you optimize ad spend by looking only at individual platform dashboards, you make decisions based on inflated conversion figures, distorting your true customer acquisition cost (CAC) and customer lifetime value (LTV).
How MMPs resolve duplicate claims
To prevent double counting and eliminate conversion overlap, app developers use an independent Mobile Measurement Partner as an impartial referee.
An MMP sits between your app and the advertising networks. According to Singular and Adjust, the MMP collects conversion claims from all SANs and engagement timestamps from non-SAN networks, evaluates them under a unified attribution model, and assigns final credit to exactly one channel.
1. Waterfall and touchpoint priority
When multiple networks claim the same user install, the MMP resolves the conflict using a standardized attribution waterfall:
- Engagement type priority: Direct clicks and taps take precedence over passive impressions (view-through attribution). For instance, Apple Search Ads tap-through attribution takes priority when both click and impression signals exist.
- Timestamp recency (last touch): If two networks claim a valid click within their active lookback windows, credit goes to the network with the most recent timestamp immediately prior to app install.
- Lookback window eligibility: Any engagement that occurred outside the configured lookback window (e.g., a click from 14 days prior when the window is set to 7 days) is disqualified.
2. Platform-specific API requirements and data flows
Each SAN maintains specific integration constraints that the measurement layer must accommodate:
- TikTok event deduplication: TikTok Ads Manager requires a shared event ID (
event_id) when events are transmitted through both the TikTok Pixel and the Events API. According to TikTok documentation, matching events arriving within a 5-minute to 48-hour window are merged to prevent duplicate event recording. TikTok for Business also recommends passing full-funnel events to improve attribution match rates. - Apple Search Ads and privacy frameworks: Apple Search Ads uses its dedicated AdServices framework on iOS devices. According to Singular, Apple Search Ads campaign integration does not support post-install event postbacks back to Apple. On iOS, AdAttributionKit acts as an official last-click referee among registered ad platforms.
- Meta Advanced Mobile Measurement: According to Singular, Meta provides row-level attribution data for iOS and Android devices through Advanced Mobile Measurement (AMM), provided advertisers accept Meta's AMM terms, while standard Aggregated Event Measurement (AEM) reporting is restricted to aggregate figures.
- Google App Campaigns: Google Ads enables conversion sharing across connected Google Analytics and Google Tag Manager properties, receiving conversion signals from the MMP to optimize bidding models.
By arbitrating these competing claims, the MMP ensures that your backend, subscription dashboards, and analytics tools receive clean, deduplicated attribution data.
Organic cannibalization and attribution windows
A major challenge with self-attributing networks is organic cannibalization, a scenario where ad networks take credit for app installs that would have occurred organically without paid intervention.
SANs often configure default lookback windows that favor platform credit:
- Click-to-install (CTI): Typically 7 to 30 days.
- View-through / Impression-to-install (VTA): Typically 1 day.
If a potential subscriber sees a video ad on TikTok or Instagram on Monday morning, ignores it, but searches for your app name on the App Store on Monday evening after a friend's recommendation, both Meta and TikTok may attempt to claim that conversion via view-through attribution.
According to Prescient AI, standard last-touch attribution models can inadvertently under-report true organic traffic if aggressive view-through and broad click windows award credit to paid ad impressions that merely coincided with an organic journey.
Scenario: User views an impression ad, but installs 4 days later via direct search.
- Paid SAN Claims Credit
- Organic Credit = 0
- Paid SAN Claim Expires
- Conversion Awarded to: Organic / Direct Install
To prevent organic cannibalization:
- Shorten view-through windows: Restrict view-through attribution windows to 12 or 24 hours (or disable impression attribution entirely if your paid budget is focused strictly on direct response).
- Align click lookback windows: Shorten click attribution windows from 30 days to 7 days (or 24 hours for high-intent search campaigns). TikTok Ads Manager allows advertisers to adjust lookback windows directly in campaign settings.
- Audit brand search overlap: On Apple Search Ads, isolate brand keyword campaigns from non-brand discovery campaigns to measure whether brand search ads are capturing net-new users or intercepting high-intent organic traffic.
Connecting ad spend to subscription revenue
For subscription app teams, eliminating attribution discrepancies is only the first step. The ultimate objective is ensuring paid ad spend translates directly into monthly recurring revenue (MRR).
Connecting subscription infrastructure (such as RevenueCat, Adapty, or Superwall) with your attribution layer allows you to track users through downstream events:
- Ad impression and click timestamps
- App install and registration
- Free trial start
- Trial-to-paid conversion
- Subscription renewals and lifetime value
With the Airbridge Core Plan (from $40+/mo with a 30-day free trial and no annual contract), founders can connect direct SAN API integrations across Meta, Google, TikTok, and Apple Search Ads alongside non-SAN networks in a unified dashboard. By tying downstream subscription events back to exact ad campaigns, growth teams can optimize acquisition budgets based on revenue rather than vanity download metrics.
FAQS
Frequently asked questions
Do I need to create tracking links for self-attributing networks like Meta or Google?
No. You do not generate standard click-redirect tracking links for SANs. Instead, you integrate the MMP SDK into your mobile app and connect your ad account via API credentials in your MMP dashboard. When campaigns launch inside Meta Ads Manager, Google Ads, TikTok Ads Manager, or Apple Search Ads, the platforms automatically match user engagements against install signals sent by your MMP. Non-SAN networks (such as Unity Ads, Moloco, or Appier) still require tracking links to capture engagement data.
What is an acceptable discrepancy percentage between ad platform dashboards and an MMP?
Discrepancies between individual SAN dashboards and an MMP typically range between 15% and 30%. This variance occurs because ad platforms report conversions using self-contained attribution models (often with broad lookback windows and view-through credits), whereas the MMP deduplicates claims against every other active ad network and organic traffic. Discrepancies exceeding 40% often indicate overlapping lookback window configurations, missing postback parameters, or unaligned timezone settings across dashboards.
How do SKAdNetwork and Apple AdAttributionKit affect SAN reporting on iOS?
Apple's privacy frameworks (SKAdNetwork and AdAttributionKit) operate alongside standard SAN integrations on iOS. For non-consenting users under App Tracking Transparency (ATT), Apple provides cryptographically signed attribution postbacks directly from the device to ad networks and MMPs. AdAttributionKit acts as an official last-click referee among registered ad platforms. SANs receive SKAdNetwork postbacks directly from Apple and provide aggregate reporting, while MMPs combine deterministic SAN API claims (for consenting users) with SKAdNetwork aggregate datasets to provide unified iOS campaign reporting.
How is CPI different from CPA in subscription app acquisition?
Cost Per Install (CPI) measures ad spend divided strictly by the number of app downloads (Ad Spend / Installs). Cost Per Acquisition (CPA) measures ad spend divided by a specific downstream conversion action, such as a user starting a free trial or completing an initial paid subscription (Ad Spend / Conversions). In subscription apps, optimizing solely for low CPI can be misleading; campaigns delivering low-cost downloads often produce low trial-to-paid conversion rates. Tracking downstream CPA ensures ad spend targets high-intent subscribers.
What is the technical difference between a tracking link and a postback?
A tracking link is a URL endpoint that captures user engagement data (such as a click or impression) before redirecting the user to a destination URL (like the App Store). A postback (also called a server-to-server callback) is an asynchronous HTTP POST request sent between servers (e.g., from an MMP backend to an ad network API) to share verified conversion data, such as an install, trial start, or purchase event, without requiring user browser or app interaction.
Eliminate ad network double-counting
Connect SANs and non-SAN channels to measure true multi-channel ROI with deduplicated attribution.


