Webview analytics

Webview analytics, built for how webviews really work.

Webviews break assumptions most web tools make: odd origins, inner scrollers, no address bar. Maximizii was built with them in mind, from the first version.

Maximizii install page, with the one-line snippet and tabs for HTML, Tag Manager, React and Next.js, iOS, Android and React Native
The real dashboard, on sample data from a made-up coffee shop.

In short

Maximizii measures taps, scrolling and traffic inside webviews on iOS, Android and React Native, and in Capacitor and Ionic apps. It accepts pages bundled in the app, handles pages that scroll inside a container, and needs no cookies. Webview traffic is marked so you can tell it from browsers.

Why webviews need their own handling

Bundled pages

Pages shipped inside an app load from addresses like capacitor:// or file://. Turn on “App webviews” for a site and Maximizii accepts them. By default they’re refused, so nobody else can send events as your site.

Inner scrollers

App-style layouts often scroll a container, not the document. Maximizii follows the element that’s really scrolling, so depth stays correct.

No cookies to lose

Maximizii doesn’t use cookies. Each tab keeps a random id in session storage, and if storage is blocked it falls back to memory.

Told apart

Webview visits are detected and marked, including React Native and Flutter’s in-app webview. You can also force the flag with data-platform="webview".

On Android

Run the script when each page finishes loading. The dashboard fills in your site id, and has the same for iOS and React Native.

Kotlin
webView.settings.javaScriptEnabled = true
webView.webViewClient = object : WebViewClient() {
    override fun onPageFinished(view: WebView, url: String) {
        view.evaluateJavascript("var s=document.createElement('script');s.async=true;s.src='https://d3hkloc4hxgq2b.cloudfront.net/t.js';s.dataset.site='mz_yoursiteid';s.dataset.platform='webview';document.head.appendChild(s);", null)
    }
}

Consent in an app

Consent works the same as on the web. A webview can’t always tell where someone is from the clock alone, so if your app has its own consent screen, run maximizii.consent(true) in the webview once they’ve agreed. Read more about how consent works.

Questions

What is webview analytics?

Measuring how people use web pages shown inside a native app. A webview is a browser with no address bar, built into the app, so normal web measurement mostly applies, with a few differences to handle.

Does it work with Capacitor and Ionic?

Yes. Add the normal snippet to your app’s index.html, and turn on “App webviews” in the site’s settings, so pages from capacitor:// are accepted.

Does it work with Flutter?

If your Flutter app shows web pages in a webview and can run a script in them, yes, and in-app webviews are detected. It can’t see Flutter’s own widgets. There’s no ready-made Flutter snippet in the dashboard yet.

Can it see the native parts of my app?

No. Only what’s inside the webview. For native screens, use a tool with a native SDK.

Keep reading

Find out where they click.