--- title: "WebView Tracking" slug: "mapp-intelligence-ios-sdk-v5-webview-tracking" updated: 2026-04-30T12:17:20Z published: 2026-04-30T12:17:20Z canonical: "docs.mapp.com/mapp-intelligence-ios-sdk-v5-webview-tracking" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.mapp.com/llms.txt > Use this file to discover all available pages before exploring further. # WebView Tracking WebViews show HTML content inside your iOS app. Because the HTML site is not part of the app's compiled source, the SDK cannot directly track interactions inside it. Instead, the Mapp Intelligence Pixel (v4, Tag Integration, or SmartPixel) running inside the WebView reports back to the SDK via a JavaScript bridge. The SDK then sends the requests using the app's known user and system context — no session break, no path break. Before you start, complete the [Quickstart](/v1/docs/mapp-intelligence-ios-sdk-v5-quickstart) so the SDK is initialized. --- ## Limitations - Only `WKWebView` is supported (WebKit framework). - Minimum supported iOS: **iOS 12** (matches the SDK target). - `SFSafariViewController` from the `SafariServices` framework is **not** supported. - The HTML page must include the Mapp Intelligence Pixel and use the matching JavaScript bridge that the SDK injects via `WKWebViewConfiguration`. --- ## Wire up WebView tracking Use `MIWebViewTracker.sharedInstance().updateConfiguration(_:)` to inject the bridge into your `WKWebViewConfiguration`. Then create the `WKWebView` with that configuration: **Swift** ```swift import WebKit import MappIntelligence override func viewDidLoad() {    super.viewDidLoad()    let request = URLRequest(url: URL(string: "https://demoshop.mapp.com/web2app/index.html")!)    let configuration = WKWebViewConfiguration()    _ = MIWebViewTracker.sharedInstance()?.updateConfiguration(configuration)    let webView = WKWebView(frame: self.view.frame, configuration: configuration)    self.view.addSubview(webView)    webView.load(request) } ``` **Objective-C** ```objectivec #import #import - (void)viewDidLoad {    [super viewDidLoad];    NSURLRequest *request = [[NSURLRequest alloc]        initWithURL:[[NSURL alloc] initWithString:@"https://demoshop.mapp.com/web2app/index.html"]];    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];    [[MIWebViewTracker sharedInstance] updateConfiguration:configuration];    WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame                                            configuration:configuration];    [self.view addSubview:webView];    [webView loadRequest:request]; } ``` --- ## What this delivers - HTML interactions inside the WebView are reported by the pixel and bridged into the SDK queue. - Requests are attributed to the same user (`everID`) and session as native app tracking. - No additional tracking IDs or sessions are introduced when the user moves from native screens into a WebView and back. > [!NOTE] > `MIWebViewTracker` lives in the `MappIntelligenceiOS` module — make sure you link that target if you use Swift Package Manager. --- ## Related - [Quickstart](/v1/docs/mapp-intelligence-ios-sdk-v5-quickstart) - [Add the SDK Dependency](/v1/docs/mapp-intelligence-ios-sdk-v5-add-sdk-dependency) - [Pages](/v1/docs/mapp-intelligence-ios-sdk-v5-pages)