Собственное исследование
Что происходит со ссылкой на приложение, открытой внутри Instagram и TikTok: 74,000 измеренных редиректов
Предзагрузки, которых никто не видит, webview TikTok, который не пускает в магазин, и App Store, открывающийся поверх страницы: что показывают наши логи редиректов.
Опубликовано · Adrien De Coster
Коротко
Из 74,713 заходов на Android из встроенных браузеров за 30 дней 9.1% составили страницы, которые Instagram или Facebook загрузили в фоне и выбросили примерно через 30 секунд, так и не показав никому. Внутри TikTok на Android то, откроется ли Play Store, зависит от того, какой webview использует TikTok: с одним форматом user-agent магазин открылся в 85% сессий, с двумя другими — в 12–14%, на тех же ссылках в те же дни. На iOS Instagram и Facebook открывают App Store поверх встроенного браузера, поэтому страница не уходит в фон, и доля открытий магазина, измеренная со страницы, составляет 13–56% даже тогда, когда передача сработала.
Эти цифры взяты из логов редиректов сервиса умных ссылок: один URL, который отправляет телефон в App Store или Google Play. Каждый раз, когда ссылку открывают внутри соцсети, мы отдаём небольшую страницу, которая передаёт посетителя в магазин, и эта страница сообщает, что произошло дальше. Ниже — что говорят эти сообщения, как мы их измеряли и где измерение заканчивается.
Данные
| Период | Что | Объём |
|---|---|---|
| 30 дней до 2026-10-12 | Заходы на Android из встроенных браузеров, реконструкция по сессиям | 74,713 |
| 2026-09-27 → 2026-10-26 | Загрузки страницы во встроенных браузерах, все платформы | 109,253 |
| 2026-10-20 → 2026-10-26 | То же, собранное в сессии для таблиц воронки | 30,535 |
| 2026-10-16 → 2026-10-26 | Предзагрузки, распознанные самой страницей | 1,679 |
| 90 дней до 2026-10-15, затем 30 дней до 2026-10-26 | TikTok на Android, сессии по формату webview | 73 + 1,247 |
| Встроенный браузер | Android | iOS |
|---|---|---|
| 50,161 | 16,675 | |
| 27,911 | 9,441 | |
| TikTok | 3,755 | 1,219 |
| Обычный браузер (простой 302, для сравнения) | 24,185 | 24,627 |
Две вещи заметны ещё до всякого анализа. Приложения Meta дают гораздо больше трафика, чем TikTok. А на Android больше трёх четвертей всех заходов идут через встроенный браузер, а не через Chrome.
Как страница сообщает, что произошло
Когда ссылку открывают во встроенном браузере, страница делает три вещи и на каждую отправляет маячок:
auto: при загрузке она запускает передачу в магазин (iOS:location.replaceна URL App Store; Android: URLintent://, который открывает нативное приложение Play Store).exit: страница становится скрытой (Page Visibility API). Это лучший сигнал, который есть у веб-страницы, что экран занял кто-то другой — скорее всего, магазин.stuck: через 2.2 секунды после передачи страница всё ещё видна, поэтому она показывает запасную карточку с кнопкой магазина, подсказкой «откройте в браузере» и кнопкой копирования ссылки.
Веб-страница не видит ни App Store, ни Play Store. Всё, что ниже, выведено из этих трёх сигналов, а в разделе об ограничениях сказано, где этот вывод перестаёт работать.
Вывод 1: примерно 1 заход из Meta на Android из 11 — предзагрузка, которую никто не видел
За 30 дней до 12 октября чёткая группа сессий на Android вела себя так, как не может вести себя ни один человек: страница загружалась, таймер передачи так и не запускался, а через 29–31 секунду страница уничтожалась. Ни auto, ни stuck, ни нажатия. На iOS ничего похожего не было.
Это почерк встроенного браузера Instagram и Facebook: он заранее загружает ссылку из ленты, держит её скрытой и выбрасывает, когда пользователь пролистывает дальше. Страница выполнила наш JavaScript, поэтому заход записался. Но никто её так и не увидел.
| Выборка | Заходы | Предзагрузки | Доля |
|---|---|---|---|
| Все заходы, все платформы | 139,199 | 6,790 | 4.9% |
| Android | 95,648 | 6,790 | 7.1% |
| Android, встроенные браузеры | 74,713 | 6,790 | 9.1% |
| Android, встроенные браузеры, без самой крупной ссылки | — | — | 4.9% |
| Самая затронутая ссылка | 35,337 | 4,864 | 13.8% |
Мы проверили критерий на сессиях, которые точно были человеческими: ему соответствовали 0 из 17,606 сессий, где магазин открылся через 2–3 с после передачи, и 0 из 244 сессий, где человек нажал кнопку магазина.
Доля меняется от недели к неделе: 6.8% в последнюю неделю периода, затем 8.8%, 10.6% и 10.0% в предыдущие недели. Кроме того, она концентрируется там, где идут платные кампании в Instagram: 72% предзагрузок за период пришлись на одну ссылку за крупной кампанией в Instagram.
С 16 октября страница сама распознаёт это во время работы: она сообщает о предзагрузке вместо выхода, если погибает не раньше чем через 20 с, так ни разу и не показавшись. Вот что она поймала с тех пор:
| Встроенный браузер | Загрузки страницы | Предзагрузки | Доля |
|---|---|---|---|
| Instagram, Android | 15,100 | 1,152 | 7.6% |
| Facebook, Android | 19,830 | 477 | 2.4% |
| TikTok, Android | 3,648 | 1 | 0.03% |
| Instagram, iOS | 5,965 | 45 | 0.8% |
| Facebook, iOS | 6,134 | 4 | 0.07% |
Этот счёт во время работы — нижняя граница. Предзагрузка, которая погибает, не выполнив ни одного скрипта, не оставляет маячка, а правило во время работы строже исторической реконструкции.
Почему это важно. Если вы считаете клики на своём редиректе, примерно один «клик» из Instagram на Android из 13 ни один человек не видел. Отношение кликов к установкам для этого канала выглядит хуже, чем есть на самом деле, а дашборд кампании, построенный на сырых хитах редиректа, завышает охват примерно на столько же.
Вывод 2: TikTok не пускает в Play Store в зависимости от используемого webview
Внутри TikTok на Android часть посетителей так и не покидает страницу: передача срабатывает, а TikTok показывает свой собственный диалог («The action cannot be completed» — «Действие не может быть выполнено»). Это происходит не на каждой ссылке, и неделями казалось, что всё зависит от ссылки. Нет. Всё зависит от встроенного браузера, который TikTok использует для этого посетителя, и его выдаёт user-agent:
| Формат | Вид user-agent |
|---|---|
| A | … Chrome/151 Mobile Safari/537.36 musical_ly_46.8.3 |
| B | Version/4.0 … musical_ly_2024509000 JsSdk/1.0 … BytedanceWebview |
| C | Version/4.0 … musical_ly_2024701040 AppName/musical_ly ByteLocale/… |
Сессия считается успешной, если передача сработала и страница стала скрытой, и неудачной, если показалась запасная карточка. Доля — успех / (успех + неудача), по устройству и дню:
| Формат | 90 дней до 2026-10-15 | 30 дней, 2026-09-27 → 10-26 |
|---|---|---|
| A | 23 / 26 (88%) | 827 / 969 (85%) |
| B | 0 / 17 (0%) | 34 / 245 (14%) |
| C | 5 / 30 (17%) | 4 / 33 (12%) |
Решающее сравнение фиксирует ссылку и день, поскольку соотношение форматов меняется от недели к неделе:
| Ссылка | Формат A | Формат B |
|---|---|---|
| Ссылка 1 | 560 / 674 (83%) | 32 / 192 (17%) |
| Ссылка 2 | 257 / 285 (90%) | 2 / 47 (4%) |
Та же ссылка, тот же код редиректа, тот же день: один webview даёт магазину открыться, другой в основном нет. Собственные домены в данных за 90 дней ничего не меняли. TikTok нигде не документирует ни этот диалог, ни что его вызывает, ни какие пользователи получают какой webview, так что разделение по user-agent — это всё, что есть.
Почему это важно. Никакая форма URL этого не исправит: и выход через intent://, и простой URL https://play.google.com получают один и тот же отказ. Зато можно не прятать выход: внутри TikTok сразу показывайте инструкцию «открыть в браузере» и кнопку копирования, а не после таймаута.
Вывод 3: на iOS App Store открывается поверх встроенного браузера
На Android после передачи страница в большинстве сессий становится скрытой, обычно через 1–3 секунды. На iOS внутри Instagram и Facebook часто нет, хотя передача сработала почти в каждой сессии:
| Встроенный браузер | Загрузки страницы | Передача сработала | Стала скрытой | …в течение 4 с | Видна на 2.2 с |
|---|---|---|---|---|---|
| Instagram, Android | 7,190 | 77.5% | 90.0% | 75.9% | 47.6% |
| Facebook, Android | 13,600 | 72.4% | 73.8% | 39.6% | 77.8% |
| TikTok, Android | 2,920 | 47.1% | 85.2% | 79.5% | 7.6% |
| Instagram, iOS | 2,881 | 94.6% | 55.9% | 41.7% | 64.2% |
| Facebook, iOS | 3,078 | 87.0% | 13.1% | 7.9% | 65.6% |
| TikTok, iOS | 866 | 93.8% | 50.5% | 23.8% | 75.2% |
Если бы две трети посетителей на iOS действительно застревали перед видимой запасной карточкой с кнопкой «Открыть App Store», заметная часть нажала бы на неё. Этого не происходит: кнопку нажимают при 0.9% загрузок страницы в Instagram на iOS и при 0.4% загрузок в Facebook на iOS. И нет такой версии iOS, где это «работает»:
| Основная версия iOS | Сессии с передачей | Страница стала скрытой |
|---|---|---|
| 16 | 127 | 24.4% |
| 17 | 106 | 33.0% |
| 18 | 958 | 33.3% |
| 26 | 3,711 | 39.3% |
| 27 | 1,249 | 34.3% |
Подходящее объяснение: внутри Instagram и Facebook на iOS App Store появляется поверх встроенного браузера, не отправляя его в фон. Страница всё время остаётся «видимой», поэтому visibilitychange и pagehide не срабатывают, хотя посетитель смотрит на App Store.
Почему это важно. Любая метрика, которая выводит открытие магазина из того, что страница ушла с экрана, на iOS ошибается. Раньше мы показывали клиентам процент «доступности магазина», построенный именно так, и он сообщал 10 из 12 платящих клиентов, что их рабочие ссылки сломаны. Мы его убрали. На iOS надёжный сигнал установки находится на стороне магазина: отчёты о кампаниях App Store Connect с токеном провайдера (pt) и токеном кампании (ct) в URL App Store.
Мелочи, которые мы измерили по пути
- Play Store на Android отрисовывается медленно. В сессиях Instagram на Android, где передача сработала, страница становилась скрытой через 0–1 с после захода в 1,061 сессии, через 2–3 с — в 2,596 и через 4–8 с — в 1,273 (7 дней). 2-секундный таймер «сработало ли?» срабатывает раньше, чем появляется магазин, для большой доли реальных успехов. Наша собственная воронка считала их неудачами, пока мы не разрешили засчитывать выход вплоть до 8 с после передачи.
- Реальная доля неудач невелика. В 7,357 сессиях Instagram на Android, восстановленных за 3 дня в начале октября, паттерн «передача, а потом ничего» составил 1.9% сессий, и 24.3% этих посетителей снова нажали на ссылку в течение 3 минут. Посетители, которым показалась запасная карточка, нажимали повторно в 5.4% случаев — примерно как те, у кого магазин открылся (4.6%): большинство этих «неудач» неудачами не были.
- Обязательное нажатие стоит большей части трафика. До того как страница стала запускать передачу при загрузке, она показывала карточку с кнопкой магазина. За 30 дней 10,523 захода из встроенных браузеров дали 2,119 нажатий: примерно 80% посетителей так и не попали в магазин.
Методика
- Источник. Каждый заход на умную ссылку и каждый маячок со страницы передачи записывается в Cloudflare Workers Analytics Engine вместе с платформой, встроенным браузером (по user-agent), типом события и временем с точностью до секунды. Посетители, чей user-agent объявляет себя ботом, краулером или загрузчиком превью ссылок, учитываются отдельно и исключены из всех приведённых здесь цифр.
- Сессии. В Analytics Engine нет идентификатора загрузки страницы, поэтому сессии восстанавливаются: заход связывается с маячками с той же ссылкой, страной, городом, user-agent и встроенным браузером в течение следующего часа — до следующего захода с тем же ключом. Около 98% маячков привязываются к заходу.
- Предзагрузки (вывод 1). Исторический критерий: нет передачи, нет запасной карточки, нет нажатия, а выход происходит через 20 с – 15 мин после захода. Критерий во время работы с 2026-10-16: страница сообщает о предзагрузке, если погибает не раньше чем через 20 с, ни разу не показавшись, и её таймер передачи так и не запустился (или она загрузилась скрытой). Маячок несёт одноразовый подписанный токен, поэтому его нельзя повторить, чтобы стереть реальный визит.
- TikTok (вывод 2). Сессии с ключом по ссылке, модели устройства, версии приложения TikTok и дню. Правило формата: версия
musical_ly_с точками → A; иначеJsSdk→ B; иначе C. Посетители из хостинговых сетей считаются отдельно и в таблицу не входят. Повторный замер за 30 дней использует тот же скрипт, что и исходный анализ за 90 дней. - Итоги учитывают интервал выборки Analytics Engine (2–4% строк соответствуют более чем одному событию). Таблицы сессий считают строки.
Ограничения
- Мы никогда не видим магазин. «Стала скрытой» — косвенный признак того, что «магазин открылся». Он срабатывает и тогда, когда посетитель переключается в другое приложение или блокирует телефон.
- Время записано с точностью до секунды, а сессии — это реконструкции. Две быстрые загрузки с одного устройства могут слиться.
- Концентрация. В некоторых периодах доминируют несколько крупных ссылок: на одну кампанию в Instagram приходится 72% предзагрузок за 30 дней, а две ссылки несут большую часть сессий TikTok. Именно поэтому есть таблицы с одной и той же ссылкой.
- Ничего из этого не проверялось на физическом телефоне. Поведение выведено из того, что сообщают страницы. Объяснение для iOS в выводе 3 — то, которое подходит к данным, а не то, что мы видели своими глазами.
- Трафик — наш. Это посетители приложений, которые используют наши ссылки, с сильным перекосом в сторону кампаний в Instagram и Facebook в нескольких странах. Другой состав даст другие проценты, хотя механизмы должны быть теми же.
- Предзагрузки, которые не выполняют JavaScript, невидимы. 12% загрузок страницы в Instagram на Android не отправляют ни одного маячка, и часть из них, вероятно, тоже предзагрузки.
Что с этим делать
- Запускайте передачу при загрузке. Страница, которая ждёт нажатия, теряет большинство посетителей из встроенных браузеров. Оставьте ручную кнопку как запасной вариант и показывайте её, только если передача явно не удалась.
- На Android используйте `intent://` с `S.browser_fallback_url`. URL
https://play.google.comвнутри webview открывает сайт Play Store, который без входа в аккаунт ничего установить не может. - Дайте медленному магазину время. Ждите не меньше 3 с, прежде чем решить, что передача не удалась, и всё равно засчитывайте поздний выход.
- Внутри TikTok сразу показывайте выход: «··· → Открыть в браузере» и кнопку копирования ссылки. Никакое изменение URL не убирает отказ TikTok.
- Не считайте предзагрузки Meta кликами. Если вы считаете клики с редиректа, ожидайте, что 2–9% заходов из Instagram и Facebook на Android — страницы, которых никто не видел.
- Измеряйте установки в магазине, а не событиями страницы: ссылками кампаний App Store Connect (
pt+ct) на iOS и Play Install Referrer на Android.
Мы делаем onestore.link, который по умолчанию выполняет все шесть пунктов для каждой ссылки, и данные выше взяты из его логов редиректов.
Вопросы и ответы
Какой процент кликов по ссылкам в Instagram на Android — предзагрузки?
За 30 дней до 2026-10-12 9.1% заходов на Android из встроенных браузеров (Instagram и Facebook) были страницами, которые приложение загрузило в фоне и выбросило примерно через 30 секунд, так их и не показав. С 2026-10-16 собственная проверка страницы во время работы ловит 7.6% в Instagram на Android и 2.4% в Facebook на Android — как нижнюю границу. На iOS это меньше 1%.
Почему Play Store не открывается из встроенного браузера TikTok?
Приложение TikTok на Android использует несколько встроенных браузеров. В одном (версия musical_ly_ с точками и без Version/4.0 в user-agent) 85% сессий за 30 дней дошли до Play Store. В двух других (Version/4.0 с JsSdk/BytedanceWebview или с AppName/musical_ly) — только 12–14%, на тех же ссылках в те же дни. TikTok сам отклоняет передачу, какой бы ни была форма URL.
Можно ли по веб-странице понять, что на iOS открылся App Store?
Не внутри Instagram или Facebook. App Store открывается поверх встроенного браузера, поэтому страница никогда не становится скрытой и visibilitychange не срабатывает. За 7 дней лишь за 13% (Facebook) – 56% (Instagram) передач на iOS следовало скрытие страницы, а запасную кнопку нажали меньше 1% посетителей. Надёжный сигнал — отчёты о кампаниях App Store Connect.
Сколько времени нужно Play Store, чтобы открыться из встроенного браузера?
На Android в большинстве успешных сессий страница становится скрытой через 2–3 секунды после передачи, а на медленных телефонах — вплоть до 8 секунд. Запасной вариант, показанный через 2 секунды, во многих сессиях, которые вот-вот завершились бы успехом, появляется раньше магазина.
Как часто редирект в магазин приложений действительно не срабатывает внутри Instagram?
В 7,357 восстановленных сессиях Instagram на Android паттерн настоящей неудачи (передача сработала, потом ничего, и посетитель снова нажимает на ссылку) составил 1.9%. Большинство видимых неудач в сырых данных воронки — артефакты измерения: потерянные маячки, медленный магазин или предзагрузки.
Меняет ли собственный домен то, как TikTok обращается со ссылкой?
Нет. За 90 дней ссылки с собственным доменом и без него отклонялись одинаково. Решает встроенный браузер, который TikTok использует для этого посетителя.