Eigen onderzoek
Wat er gebeurt met een app-link die je opent in Instagram en TikTok: 74,000 doorverwijzingen gemeten
Preloads die niemand ziet, een TikTok-webview die de store weigert en een App Store die over de pagina heen opent: wat onze doorverwijzingslogs laten zien.
Gepubliceerd op · Adrien De Coster
Kort antwoord
Van 74,713 Android-bezoeken via in-app browsers over 30 dagen waren er 9.1% pagina's die Instagram of Facebook op de achtergrond laadde en ongeveer 30 seconden later weggooide zonder dat iemand ze zag. In TikTok op Android hangt het openen van de Play Store af van de webview die TikTok gebruikt: één user-agent-formaat bereikte de store in 85% van de sessies, twee andere in 12–14%, op dezelfde links en dezelfde dagen. Op iOS openen Instagram en Facebook de App Store over de in-app browser heen, waardoor de pagina nooit naar de achtergrond gaat, en een store-openingspercentage gemeten vanaf de pagina komt uit op 13–56% terwijl de overdracht wel werkte.
Deze cijfers komen uit de doorverwijzingslogs van een slimme-linkdienst: één URL die een telefoon naar de App Store of Google Play stuurt. Elke keer dat een link in een sociale app wordt geopend, serveren we een kleine pagina die de bezoeker aan de store overdraagt, en die pagina meldt wat er daarna gebeurde. Hieronder staat wat die meldingen zeggen, hoe we ze gemeten hebben en waar de meting ophoudt.
De data
| Periode | Wat | Volume |
|---|---|---|
| 30 dagen tot 2026-10-12 | Android-bezoeken via in-app browsers, reconstructie op sessieniveau | 74,713 |
| 2026-09-27 → 2026-10-26 | In-app paginaladingen, alle platforms | 109,253 |
| 2026-10-20 → 2026-10-26 | Idem, herbouwd tot sessies voor de funneltabellen | 30,535 |
| 2026-10-16 → 2026-10-26 | Preloads geclassificeerd door de pagina zelf | 1,679 |
| 90 dagen tot 2026-10-15, daarna 30 dagen tot 2026-10-26 | TikTok op Android, sessies per webview-formaat | 73 + 1,247 |
| In-app browser | Android | iOS |
|---|---|---|
| 50,161 | 16,675 | |
| 27,911 | 9,441 | |
| TikTok | 3,755 | 1,219 |
| Gewone browser (gewone 302, ter vergelijking) | 24,185 | 24,627 |
Twee dingen vallen al op vóór elke analyse. De apps van Meta sturen veel meer verkeer dan TikTok. En op Android komt meer dan driekwart van alle bezoeken binnen via een in-app browser, niet via Chrome.
Hoe de pagina meldt wat er gebeurde
Als een link in een in-app browser wordt geopend, doet de pagina drie dingen en stuurt voor elk ervan een beacon:
auto: bij het laden start ze de overdracht naar de store (iOS:location.replacenaar de App Store-URL; Android: eenintent://-URL die de native Play Store-app opent).exit: de pagina wordt verborgen (Page Visibility API). Dat is het beste signaal dat een webpagina heeft dat iets anders, waarschijnlijk de store, het scherm heeft overgenomen.stuck: de pagina is 2.2 seconden na de overdracht nog zichtbaar, dus toont ze een reservekaart met een storeknop, een tip „open in je browser” en een knop om de link te kopiëren.
Een webpagina kan de App Store of de Play Store niet zien. Alles hieronder is afgeleid uit deze drie signalen, en het deel over de beperkingen zegt waar die afleiding niet meer klopt.
Bevinding 1: ongeveer 1 op de 11 Android-bezoeken via Meta is een preload die niemand zag
In de 30 dagen tot 12 oktober gedroeg een duidelijke groep Android-sessies zich zoals geen menselijk bezoek zou doen: de pagina laadde, de overdrachtstimer liep nooit, en de pagina werd 29 tot 31 seconden later vernietigd. Geen auto, geen stuck, geen tik. iOS liet niets vergelijkbaars zien.
Dat is de vingerafdruk van de in-app browser van Instagram en Facebook die een link in een feed vooraf laadt, verborgen houdt en weggooit als de gebruiker verder scrolt. De pagina voerde ons JavaScript uit, dus het bezoek werd gelogd. Niemand heeft er ooit naar gekeken.
| Populatie | Bezoeken | Preloads | Aandeel |
|---|---|---|---|
| Alle bezoeken, alle platforms | 139,199 | 6,790 | 4.9% |
| Android | 95,648 | 6,790 | 7.1% |
| Android in-app | 74,713 | 6,790 | 9.1% |
| Android in-app, zonder de grootste link | — | — | 4.9% |
| De meest getroffen afzonderlijke link | 35,337 | 4,864 | 13.8% |
We hebben het criterium getoetst aan sessies die duidelijk menselijk waren: 0 van de 17,606 sessies waarin de store 2–3 s na de overdracht opende, voldeden eraan, en 0 van de 244 sessies waarin iemand op de storeknop tikte ook niet.
Het aandeel schommelt per week: 6.8% in de laatste week van die periode, daarvoor 8.8%, 10.6% en 10.0%. Het concentreert zich ook waar betaalde Instagram-campagnes lopen: 72% van de preloads in de periode kwam van één link achter een grote Instagram-campagne.
Sinds 16 oktober classificeert de pagina dit zelf tijdens het draaien: ze meldt een preload in plaats van een exit als ze sterft na minstens 20 s zonder ooit getoond te zijn. Dit heeft ze sindsdien opgevangen:
| In-app browser | Paginaladingen | Preloads | Aandeel |
|---|---|---|---|
| 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% |
Die telling tijdens het draaien is een ondergrens. Een preload die sterft zonder enig script uit te voeren laat geen beacon achter, en de regel tijdens het draaien is strenger dan de historische reconstructie.
Waarom het ertoe doet. Als je klikken telt bij je doorverwijzing, is ruwweg één op de 13 Instagram-Android-„klikken” nooit door een mens gezien. Je klik-naar-installatie-verhouding voor dat kanaal ziet er slechter uit dan ze is, en een campagnedashboard op basis van ruwe doorverwijzingshits overschat het bereik met ongeveer zoveel.
Bevinding 2: TikTok weigert de Play Store afhankelijk van de webview die het gebruikt
In TikTok op Android verlaat een deel van de bezoekers de pagina nooit: de overdracht gaat af en TikTok toont zijn eigen dialoog („The action cannot be completed”). Het gebeurt niet bij elke link, en wekenlang leek het van de link af te hangen. Dat doet het niet. Het hangt af van de in-app browser die TikTok voor die bezoeker gebruikt, en die verraadt zijn user-agent:
| Formaat | Vorm van de 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/… |
Een sessie telt als geslaagd wanneer de overdracht afging en de pagina verborgen werd, en als mislukt wanneer de reservekaart verscheen. Het percentage is geslaagd / (geslaagd + mislukt), per toestel en per dag:
| Formaat | 90 dagen tot 2026-10-15 | 30 dagen, 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%) |
De vergelijking die de doorslag geeft, houdt de link en de dag gelijk, want de verhouding tussen formaten verandert van week tot week:
| Link | Formaat A | Formaat B |
|---|---|---|
| Link 1 | 560 / 674 (83%) | 32 / 192 (17%) |
| Link 2 | 257 / 285 (90%) | 2 / 47 (4%) |
Zelfde link, zelfde doorverwijzingscode, zelfde dag: de ene webview laat de store openen en de andere meestal niet. Eigen domeinen maakten in de data over 90 dagen geen verschil. TikTok documenteert de dialoog niet, en ook niet wat hem veroorzaakt of welke gebruikers welke webview krijgen, dus de opsplitsing per user-agent is alles wat er is.
Waarom het ertoe doet. Geen enkele URL-vorm lost dit op: de intent://-uitbraak en een gewone https://play.google.com-URL krijgen dezelfde weigering. Wat je wel kunt doen, is de uitweg niet verstoppen: toon in TikTok meteen de instructies „openen in browser” en een kopieerknop, in plaats van na een time-out.
Bevinding 3: op iOS opent de App Store over de in-app browser heen
Op Android wordt de pagina na de overdracht in de meeste sessies verborgen, meestal 1 tot 3 seconden later. Op iOS in Instagram en Facebook gebeurt dat vaak niet, ook al ging de overdracht in bijna elke sessie af:
| In-app browser | Paginaladingen | Overdracht gestart | Verborgen | …binnen 4 s | Zichtbaar op 2.2 s |
|---|---|---|---|---|---|
| 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% |
Als twee derde van de iOS-bezoekers echt vastzat voor een zichtbare reservekaart met een knop „Open de App Store”, zou een flink deel erop tikken. Dat doen ze niet: 0.9% van de iOS-paginaladingen in Instagram en 0.4% van die in Facebook tikken op de knop. Er is ook geen iOS-versie waarop het wél „werkt”:
| Hoofdversie van iOS | Sessies met overdracht | Pagina verborgen |
|---|---|---|
| 16 | 127 | 24.4% |
| 17 | 106 | 33.0% |
| 18 | 958 | 33.3% |
| 26 | 3,711 | 39.3% |
| 27 | 1,249 | 34.3% |
De verklaring die past, is dat in Instagram en Facebook op iOS de App Store over de in-app browser heen verschijnt zonder die naar de achtergrond te sturen. De pagina blijft de hele tijd „zichtbaar”, dus visibilitychange en pagehide gaan nooit af, ook al kijkt de bezoeker naar de App Store.
Waarom het ertoe doet. Elke metriek die een geopende store afleidt uit het verdwijnen van de pagina van het scherm, klopt niet op iOS. We toonden klanten vroeger een percentage „store-bereik” dat precies zo was opgebouwd, en het vertelde 10 van de 12 betalende klanten dat werkende links kapot waren. We hebben het verwijderd. Op iOS zit het betrouwbare installatiesignaal aan de kant van de store: campagnerapporten in App Store Connect, met een provider token (pt) en een campagnetoken (ct) op de App Store-URL.
Kleinere dingen die we onderweg hebben gemeten
- De Play Store verschijnt traag op Android. In Instagram-Android-sessies waarin de overdracht afging, werd de pagina 0–1 s na het bezoek verborgen in 1,061 sessies, 2–3 s erna in 2,596 en 4–8 s erna in 1,273 (7 dagen). Een timer van 2 seconden die controleert „werkte het?” gaat bij een groot deel van de echte successen af voordat de store verschijnt. Onze eigen funnel telde die als mislukt, tot we een exit tot 8 s na de overdracht nog lieten meetellen.
- Het echte foutpercentage is klein. In 7,357 Instagram-Android-sessies, herbouwd over 3 dagen begin oktober, kwam het patroon „overdracht, daarna niets” voor in 1.9% van de sessies, en 24.3% van die bezoekers tikte binnen 3 minuten opnieuw op de link. Bezoekers bij wie de reservekaart verscheen, tikten in 5.4% van de gevallen opnieuw, ongeveer zoals bezoekers bij wie de store opende (4.6%): de meeste van die „mislukkingen” waren geen mislukkingen.
- Een verplichte tik kost het grootste deel van het verkeer. Voordat de pagina de overdracht bij het laden startte, toonde ze een kaart met een storeknop. Over 30 dagen leverden 10,523 in-app bezoeken 2,119 tikken op: ongeveer 80% van de bezoekers bereikte de store nooit.
Methode
- Bron. Elk bezoek aan een slimme link en elk beacon van de overdrachtspagina wordt weggeschreven naar Cloudflare Workers Analytics Engine, met het platform, de in-app browser (uit de user-agent), het soort gebeurtenis en een tijdstempel tot op de seconde. Bezoekers van wie de user-agent zich als bot, crawler of linkvoorbeeld-ophaler meldt, worden apart gehouden en zijn uit elk cijfer hier weggelaten.
- Sessies. Analytics Engine heeft geen paginalading-id, dus sessies worden herbouwd door een bezoek te koppelen aan de beacons met dezelfde link, hetzelfde land, dezelfde stad, dezelfde user-agent en dezelfde in-app browser binnen het volgende uur, tot het volgende bezoek met dezelfde sleutel. Ongeveer 98% van de beacons wordt aan een bezoek gekoppeld.
- Preloads (bevinding 1). Historisch criterium: geen overdracht, geen reservekaart, geen tik, en een exit 20 s tot 15 min na het bezoek. Criterium tijdens het draaien sinds 2026-10-16: de pagina meldt een preload als ze sterft na minstens 20 s zonder ooit getoond te zijn en haar overdrachtstimer nooit liep (of ze verborgen laadde). Het beacon draagt een ondertekend token voor eenmalig gebruik, zodat het niet opnieuw afgespeeld kan worden om een echt bezoek te wissen.
- TikTok (bevinding 2). Sessies gesleuteld op link, toestelmodel, TikTok-appversie en dag. Formaatregel:
musical_ly_-versie met punten → A; andersJsSdk→ B; anders C. Bezoekers vanaf hostingnetwerken worden apart geteld en buiten de tabel gehouden. De hermeting over 30 dagen gebruikt hetzelfde script als de oorspronkelijke analyse over 90 dagen. - Totalen gebruiken het steekproefinterval van Analytics Engine (2–4% van de rijen staat voor meer dan één gebeurtenis). Sessietabellen tellen rijen.
Beperkingen
- We zien de store nooit. „Verborgen” is een benadering van „de store ging open”. Het gaat ook af als de bezoeker van app wisselt of de telefoon vergrendelt.
- Tijdstempels zijn tot op de seconde, en sessies zijn reconstructies. Twee snelle ladingen vanaf hetzelfde toestel kunnen samenvallen.
- Concentratie. Een paar grote links domineren sommige periodes: één Instagram-campagne is goed voor 72% van de preloads over 30 dagen, en twee links dragen het grootste deel van de TikTok-sessies. Daarom bestaan de tabellen met dezelfde link.
- Niets hiervan is op een fysieke telefoon gecontroleerd. Het gedrag is afgeleid uit wat pagina's melden. De iOS-verklaring in bevinding 3 is degene die bij de data past, niet iets wat we hebben zien gebeuren.
- Het verkeer is het onze. Dit zijn de bezoekers van de apps die onze links gebruiken, sterk gewogen naar Instagram- en Facebook-campagnes in een handvol landen. Een andere mix geeft andere percentages, al zouden de mechanismen dezelfde moeten zijn.
- Preloads die nooit JavaScript uitvoeren zijn onzichtbaar. 12% van de Android-paginaladingen in Instagram stuurt helemaal geen beacon, en een deel daarvan is waarschijnlijk ook een preload.
Wat je eraan kunt doen
- Start de overdracht bij het laden. Een pagina die op een tik wacht, verliest de meeste in-app bezoekers. Houd de handmatige knop als reserve, alleen getoond als de overdracht zichtbaar mislukte.
- Gebruik op Android `intent://` met `S.browser_fallback_url`. Een
https://play.google.com-URL in een webview opent de Play Store-website, die zonder inloggen niets kan installeren. - Geef een trage store de tijd. Wacht minstens 3 s voordat je besluit dat de overdracht mislukte, en tel een late exit nog steeds mee.
- Toon in TikTok meteen de uitweg: „··· → Openen in browser” en een knop om de link te kopiëren. Geen enkele URL-wijziging laat de weigering van TikTok verdwijnen.
- Tel Meta-preloads niet als klikken. Als je klikken rapporteert vanaf een doorverwijzing, reken er dan op dat 2–9% van de Android-bezoeken via Instagram en Facebook pagina's zijn die niemand zag.
- Meet installaties bij de store, met campagnelinks van App Store Connect (
pt+ct) op iOS en de Play Install Referrer op Android, niet met paginagebeurtenissen.
Wij bouwen onestore.link, dat standaard alle zes voor elke link doet, en de data hierboven komt uit de doorverwijzingslogs ervan.
Vragen en antwoorden
Welk percentage van de Instagram-linkklikken op Android is een preload?
In de 30 dagen tot 2026-10-12 waren 9.1% van de Android-bezoeken via in-app browsers (Instagram en Facebook) pagina's die de app op de achtergrond laadde en ongeveer 30 seconden later ongezien weggooide. Sinds 2026-10-16 vangt de eigen controle van de pagina tijdens het draaien 7.6% op Instagram Android en 2.4% op Facebook Android op, als ondergrens. Op iOS is het minder dan 1%.
Waarom opent de Play Store niet vanuit de in-app browser van TikTok?
De Android-app van TikTok gebruikt meerdere in-app browsers. In de ene (een musical_ly_-versie met punten en geen Version/4.0 in de user-agent) bereikte 85% van de sessies over 30 dagen de Play Store. In twee andere (Version/4.0 met JsSdk/BytedanceWebview, of met AppName/musical_ly) was dat maar 12–14%, op dezelfde links en dezelfde dagen. TikTok weigert de overdracht zelf, welke URL-vorm je ook gebruikt.
Kun je vanaf een webpagina zien dat de App Store op iOS is geopend?
Niet in Instagram of Facebook. De App Store opent over de in-app browser heen, dus de pagina wordt nooit verborgen en visibilitychange gaat niet af. Over 7 dagen werd maar 13% (Facebook) tot 56% (Instagram) van de iOS-overdrachten gevolgd door een verborgen pagina, en minder dan 1% van de bezoekers tikte op de reserveknop. Campagnerapporten in App Store Connect zijn het betrouwbare signaal.
Hoe lang duurt het voordat de Play Store opent vanuit een in-app browser?
Op Android wordt de pagina in de meeste geslaagde sessies 2–3 seconden na de overdracht verborgen, en op tragere telefoons tot 8 seconden later. Een reservekaart die na 2 seconden verschijnt, komt in veel sessies die op het punt stonden te slagen vóór de store.
Hoe vaak mislukt een doorverwijzing naar de app store echt in Instagram?
In 7,357 herbouwde Instagram-Android-sessies kwam het patroon van een echte mislukking (overdracht gestart, daarna niets, en de bezoeker tikt opnieuw op de link) voor in 1.9%. De meeste schijnbare mislukkingen in ruwe funneldata zijn meetartefacten: verloren beacons, een trage store of preloads.
Verandert een eigen domein hoe TikTok een link behandelt?
Nee. Over 90 dagen werden links met en zonder eigen domein op dezelfde manier geweigerd. Wat de doorslag geeft, is de in-app browser die TikTok voor die bezoeker gebruikt.