---
title: "How to know which app a click came from and route in-app browser visitors"
description: "Linkbreakers recognizes when a link opens inside the in-app browser of Instagram, TikTok, Facebook, Messenger, Threads, Snapchat, LinkedIn, Pinterest, X, WeChat, LINE or the Google app. See which app each click came from, with its version, and route those visitors with the Browser condition."
canonical: "https://linkbreakers.com/help/article/how-to-detect-and-route-in-app-browser-visitors"
last-updated: 2026-11-03
---

# How to know which app a click came from and route in-app browser visitors

> Linkbreakers recognizes when a link opens inside the in-app browser of Instagram, TikTok, Facebook, Messenger, Threads, Snapchat, LinkedIn, Pinterest, X, WeChat, LINE or the Google app. See which app each click came from, with its version, and route those visitors with the Browser condition.

:::try-ai-prompt {"prompt":"Send visitors who open my link in Instagram or TikTok to a page that asks them to open it in Safari or Chrome, and everyone else straight to my store","description":"Try building in-app browser routing with the AI builder."}:::

## Short answer

When someone taps your link inside Instagram, TikTok, Facebook or another app, the link opens in that app's in-app browser. Linkbreakers recognizes the in-app browser from the user agent it sends and records which app the click came from, the app's version and the details the app writes about the phone. You can then read it on each visit, break your traffic down by app in the dashboard, and route those visitors with the **Browser condition**, for example to a page that asks them to open the link in Safari or Chrome.

## Quick summary

- A link in an Instagram bio, a TikTok profile, a story, a DM or an ad opens in the app's in-app browser, usually with no referrer
- Linkbreakers recognizes 12 apps by name: Instagram, Facebook, Messenger, Threads, TikTok, Snapchat, LinkedIn, Pinterest, X, WeChat, LINE and the Google app
- An Android app webview that does not name its app is recorded as **Other in-app browser**
- Each visit records the in-app browser, the app version and, when the app sends them, its language, phone model, carrier, network and screen
- The **Browser condition** lets each option pick **In-app browser** instead of **Browser**: Any in-app browser, each app, Other in-app browser, with an optional minimum app version
- An Instagram in-app browser on an iPhone is Instagram, never Safari

## What an in-app browser is

Social and messaging apps do not hand links to Safari or Chrome. They open them in a browser inside the app, called an in-app browser (or webview). The visitor stays in the app, and the page they see is loaded by the app.

That matters for two reasons:

- **Attribution**: in-app browsers usually send no referrer, so the page you link to cannot tell that the visit came from Instagram or TikTok. The user agent the in-app browser sends is the only signal.
- **What works**: in-app browsers can break Apple Wallet passes, app store links, file downloads and some checkouts. Sending those visitors to a page that asks them to open the link in their regular browser avoids a dead end.

## How Linkbreakers recognizes the app

Each in-app browser adds the app's name to its user agent: `Instagram 447.0.0.34.80` for Instagram, `FBAV/564.0.0.57.71` for Facebook, `musical_ly_43.9.0` for TikTok, `MicroMessenger/8.0.63` for WeChat, `GSA/437.4` for the Google app. Linkbreakers reads it on every visit, on iPhone and Android.

| In-app browser | What the app sends besides its version |
|---|---|
| Instagram | App language, phone model, screen resolution and density, app build. On Android, the manufacturer too |
| Threads | Same as Instagram |
| Facebook | On iPhone: app language, phone model and app build. On Android the in-app browser often sends only the version; Facebook Lite adds the app language and screen. Sometimes the mobile carrier and manufacturer |
| Messenger | Same as Facebook |
| TikTok | App language, region, network type |
| Snapchat | Phone model on Android |
| WeChat | App language, network type |
| LinkedIn, X, LINE, the Google app | The version only |
| Pinterest | Its name only, no version |
| Other in-app browser | Nothing about the app: an Android webview that does not name its app |

A detail the app does not send stays empty. Bots and link preview crawlers, such as the ones that fetch your link to build a preview card in a chat, are never counted as an in-app browser: only people are.

## Where you see it

- **Visitor and device details**: the in-app browser, the app version and every detail the app sent
- **Activity timeline and the Live view**: which app each visit came from
- **Dashboard**: a breakdown and widgets by in-app browser, and by app and major version (for example "Instagram 447"). Visits in a regular browser are their own group
- **CSV exports and webhook payloads**: the same fields, so your other tools get them too

Device details are recorded when your workspace's data collection level is **Basic** or **Advanced**. At the **None** level they are not stored, but routing still works, because the Browser condition reads the visit itself.

## How to route in-app browser visitors

### Step 1: Add a Browser condition

1. Open the link's workflow in the [Linkbreakers dashboard](https://app.linkbreakers.com/)
1. Add a condition step and choose **Browser Condition**

### Step 2: Pick in-app browser options

Each option starts with a switch, **Browser** or **In-app browser**. Pick **In-app browser**, then one of:

- **Any in-app browser**: every app's in-app browser
- **One app**: Instagram, Facebook, Messenger, Threads, TikTok, Snapchat, LinkedIn, Pinterest, X, WeChat, LINE or the Google app
- **Other in-app browser**: an Android webview that does not name its app

To send several apps to the same step (Instagram, Facebook, Messenger and Threads, say), add one option per app and connect them all to that step.

A single app's option can also take a **minimum app version**, such as Instagram 400 or later. A visit whose app sends no version, such as Pinterest, does not match a minimum version.

### Step 3: Connect each branch

Connect each option to its next step, and connect the **else** branch for everyone else. A common setup:

| Option | Goes to | Why |
|---|---|---|
| Any in-app browser | A message page: "Open this link in Safari or Chrome to add the pass to your Wallet" | The in-app browser cannot finish the action |
| else | Your destination | Regular browsers go straight through |

### How options are matched

- A visit inside an in-app browser matches only in-app browser options: its app or **Any in-app browser**. It never matches a browser such as Safari or Chrome, even though the in-app browser is built on one.
- A visit in a regular browser matches only browser options (Chrome, Safari, Firefox, Edge, Opera, Samsung Internet).
- Options are checked in order and the first match wins, so put a specific app before **Any in-app browser**. A visit that matches nothing takes the **else** branch.

The activity timeline shows which in-app browser and version the visit was in and which branch it took.

## Limits and caveats

- Recognition relies on the user agent the app sends. An app that changes its user agent, or a visitor whose app opens links in the regular browser, is recorded as it presents itself.
- Pinterest sends no app version.
- Linkbreakers detects the in-app browser and routes the visitor. It does not force the link to open in Safari or Chrome: the visitor chooses to.
- The Browser condition does not route on the app's language. To route by language, use the [Language condition](/help/article/how-to-route-qr-code-visitors-by-their-phones-language), which reads the language the phone or browser sends.
- Before this change, people opening a link inside Instagram or Snapchat were counted as bots. They are counted as people now, including past visits.

## Frequently asked questions

### Why does my analytics show no referrer for Instagram or TikTok traffic?

In-app browsers usually send no referrer. Linkbreakers recognizes the app from the user agent instead, so the visit is attributed to the app even without one.

### Is an Instagram in-app browser on an iPhone counted as Safari?

No. In the Browser condition it matches Instagram and Any in-app browser, never Safari. Safari options only match visits in Safari itself.

### Can I treat Instagram and Facebook the same way?

Yes. Add one option per app (Instagram, Facebook, Messenger, Threads) and connect them all to the same step.

### Can I route only recent versions of an app?

Yes. Set a minimum app version on that app's option. Visits from older versions, and from apps that send no version, fall through to the next option or the else branch.

### Do I need the Advanced data collection level?

No. Routing works at every level. Recording the in-app browser on the visit's device needs Basic or Advanced.
