> ## Documentation Index
> Fetch the complete documentation index at: https://docs.linkrunner.io/llms.txt
> Use this file to discover all available pages before exploring further.

# SKAN Setup

> Configure SKAdNetwork for the Linkrunner SDK and your ad networks to enable privacy-preserving iOS attribution

SKAdNetwork (SKAN) is Apple's privacy-preserving framework for iOS attribution. With Linkrunner, SKAN setup happens in three places:

1. **Your app**: update the SDK and add the SKAN keys to `Info.plist`
2. **Linkrunner**: configure the SKAN schema (events, priority, ranges)
3. **Your ad networks**: complete the Google Ads and Meta Ads specific steps

This page covers the first two, which are shared across all networks. Then follow the network guide for each platform you advertise on.

## 1. Prepare Your App

### Minimum SDK Versions

Make sure your app is using at least these SDK versions before enabling SKAN. Linkrunner uses the SDK to update conversion values as users perform events.

<CardGroup cols={2}>
  <Card title="Native iOS" icon="swift">
    **linkrunner-ios >=3.1.0**
  </Card>

  <Card title="React Native" icon="react">
    **rn-linkrunner >=2.3.0**
  </Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Flutter" icon="flutter">
    **linkrunner >=3.1.1**
  </Card>

  <Card title="Expo" icon="rocket">
    **expo-linkrunner >=3.2.0**
  </Card>
</CardGroup>

<Note>
  Capacitor, Cordova, and Unity apps use the native iOS SDK (LinkrunnerKit) under the hood, so the \*\*linkrunner-ios

  > \=3.1.0\*\* requirement applies to them as well.
</Note>

### How the SDK updates conversion values

You don't need to call any SKAN APIs yourself. On first launch the SDK registers an initial conversion value (0/low), and every `trackEvent`, `capturePayment`, and `signup` call returns the updated conversion value from Linkrunner, which the SDK applies automatically. On iOS 17.4+ the SDK uses Apple's AdAttributionKit; on iOS 14.0–17.3 it falls back to SKAdNetwork.

### Add Ad Network Identifiers

Apple only generates SKAN postbacks for ad networks listed under `SKAdNetworkItems` in your app's `Info.plist`. Add the identifiers for the networks you run campaigns on:

```xml theme={null}
<key>SKAdNetworkItems</key>
<array>
    <!-- Google Ads -->
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>cstr6suwn9.skadnetwork</string>
    </dict>
    <!-- Meta Ads -->
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>v9wttpbfk9.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>n38lu8286q.skadnetwork</string>
    </dict>
</array>
```

<Warning>
  Without these entries, Apple never sends SKAN postbacks for those networks, even if everything else is configured
  correctly. Identifiers are lowercase and must end in `.skadnetwork`.
</Warning>

If you run campaigns on other networks, add their identifiers too. Each network publishes its own list (for example, [Google](https://developers.google.com/admob/ios/3p-skadnetworks) and [Meta](https://developers.facebook.com/docs/SKAdNetwork)).

<Info>
  On Expo, add these under `ios.infoPlist.SKAdNetworkItems` in your `app.json` instead of editing `Info.plist`
  directly.
</Info>

### Configure Postback Copies to Linkrunner

To receive SKAdNetwork postback copies, configure `NSAdvertisingAttributionReportEndpoint` and `AttributionCopyEndpoint` in your app's `Info.plist`:

#### Native iOS, Flutter, and React Native

1. Open `Info.plist` in Xcode
2. Add a new key `NSAdvertisingAttributionReportEndpoint` (type `String`) with value `https://linkrunner-skan.com`
3. Add a new key `AttributionCopyEndpoint` (type `String`) with value `https://linkrunner-skan.com`

```xml theme={null}
<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://linkrunner-skan.com</string>
<key>AttributionCopyEndpoint</key>
<string>https://linkrunner-skan.com</string>
```

#### Expo

The Linkrunner Expo plugin adds this configuration automatically. No additional setup required.

<Note>
  These keys tell Apple to send copies of SKAdNetwork postbacks to Linkrunner alongside the ad network, enabling
  accurate attribution and reporting in your Linkrunner dashboard.
</Note>

## 2. Configure the SKAN Schema

Linkrunner converts your event list into SKAN conversion values (0–63). The order you put events in determines their priority. Higher-priority events overwrite lower-priority ones in the same measurement window.

1. Go to **Settings → SKAN Setup → Events Setup** in the [Linkrunner Dashboard](https://dashboard.linkrunner.io/dashboard/settings/skan-setup?tab=event-setup)
2. Add the events that matter for optimization (e.g., `Purchase`, `Subscription Started`, `Onboarding Complete`)
3. Drag rows to set priority (the topmost event has the highest priority)
4. For revenue events, set a **min** and **max** range; for occurrence events, set an **average**
5. Click **Generate SKAN Mapping** to produce the fine and coarse conversion values

Apple's SKAN allows up to **64 conversion values total**. The dashboard shows the combination count in real time and warns if your configuration would exceed the limit.

<Note>
  The schema is configured once and shared. Linkrunner automatically generates the fine and coarse conversion values
  from it for both Google and Meta.
</Note>

For background on how this maps to SKAN 4.0, see [Conversion Values in SKAdNetwork](/features/skadnetwork-conversion-values).

## 3. Complete Your Ad Network Setup

Follow the dedicated guide for each network you advertise on:

<CardGroup cols={2}>
  <Card title="Google Ads SKAN Setup" icon="https://mintcdn.com/linkrunner-01ef8e08/4uGCuipXlgv1wP9d/images/logos/google.webp?fit=max&auto=format&n=4uGCuipXlgv1wP9d&q=85&s=c83c877473bd50784d1c1d8dd4cc9d00" href="/features/google-skan-setup" width="126" height="126" data-path="images/logos/google.webp">
    iOS link ID, account connection, and event mapping to conversion actions.
  </Card>

  <Card title="Meta SKAN Setup" icon="https://mintcdn.com/linkrunner-01ef8e08/4uGCuipXlgv1wP9d/images/logos/meta.webp?fit=max&auto=format&n=4uGCuipXlgv1wP9d&q=85&s=1b13c7728b8df51895e35b3e10671a6a" href="/features/meta-skan-setup" width="126" height="126" data-path="images/logos/meta.webp">
    Conversion values in Events Manager and the Facebook SDK toggle.
  </Card>
</CardGroup>

Once postbacks start flowing, view them in the [SKAN dashboard](/features/skan-dashboard/overview).

## Support

For SKAN integration support, contact us at [support@linkrunner.io](mailto:support@linkrunner.io).
