Guide
AppsFlyer OneLink and Instagram's in-app browser
Your OneLink works everywhere and dies on a blank page inside Instagram, and your social numbers have been quietly bad for months. Nothing in your AppsFlyer configuration is wrong. The failure happens before attribution is involved, in a place an SDK cannot reach.
Why can OneLink fail inside Instagram?
- Nothing is misconfigured. A OneLink is an HTTPS link, so inside Instagram it opens in Instagram’s in-app browser like any other link.
- From there, the hand-off to the App Store can fail without reporting anything. The visitor sees a blank page and leaves.
- Attribution is not involved. The failure happens before the install, in a web view. Your SDK is not running yet and could not intervene if it were.
- So no SDK version, OneLink template or dashboard setting is the fix. What has to change is where the visitor is standing when they reach your OneLink.
Check whether this is your problem
It takes two minutes on a real phone, from a real profile: tap your OneLink from Instagram and watch what happens, then paste the same link into Safari or Chrome on the same phone to compare.
- Tap your OneLink from Instagram. Watch what happens after the page starts loading.
- Paste the same OneLink into Safari or Chrome on the same phone.
If the second opens the store and the first does not, this page is about you. If clicks in AppsFlyer look healthy while installs from that channel do not, that gap is the same failure counted from the other end — the click is recorded, the user never arrives.
Why no SDK can reach this
A measurement platform earns its keep after the store: it recognises the install, matches it to the click, and hands your app the campaign that produced the user. All of that requires the app to exist on the device.
The in-app browser failure happens one step earlier. Instagram opens your link in a web view inside its own app; reaching the App Store means leaving that web view and handing the visitor to another application, and in-app browsers frequently decline that hand-off without reporting anything. No error, no fallback, no install — and therefore nothing for AppsFlyer to attribute. The click is in your dashboard. The user is not.
Adding, upgrading or reconfiguring an SDK cannot change this, because at the moment it fails there is no app to run the SDK.
AppsFlyer does publish guidance on in-app browsers, and it points at OneLink’s landing page templates. Whether that clears Instagram for your app is something to tap through on a phone, not something to assume — for their answer or for anyone else’s.
What you can do
Three options exist, in the order most teams should consider them: telling people to open the link in a browser, trying the landing-page templates AppsFlyer already includes, or putting something in front of the OneLink that leaves the web view before the hand-off.
- Tell people to open the link in a browser. Free, immediate, and it works. It also costs you a large share of the traffic you paid for, because the instruction is one more thing between a curious person and your app.
- Try the landing page templates you already have. They are included in what you are paying AppsFlyer for. Test one from a real Instagram profile before you believe it.
- Put something in front of the OneLink that leaves the web view. The visitor does nothing, and your measurement setup does not change.
If you take the third option
The two products do not overlap: the failure is in the web view, and the attribution is after the install. So one can sit in front of the other.
- Keep your OneLink exactly as it is. Same template, same parameters, same reporting. Nothing about your AppsFlyer setup changes.
- Create an AppIn link whose destination is that OneLink. The four attribution providers’ link domains are accepted as iOS and Android targets by name, so this pairing is a supported use rather than a workaround.
- Publish the AppIn link where in-app browsers are the norm: Instagram and TikTok bios, stories, direct messages. Everywhere else, the OneLink is fine on its own.
- Verify on a real device. Tap it from a real Instagram profile, and confirm both that the store opens and that the click shows up where you expect it.
What changes is where the visitor is standing when they reach your OneLink: a normal browser rather than a web view, which is the environment it was designed for.
Two things we will not claim. We do not do install attribution, deferred deep linking or fingerprinting — that is AppsFlyer’s half and we are not an alternative to it. And we will not predict what your attribution numbers do afterwards; we do not measure installs, and a promise about another vendor’s reporting is not ours to make. Read it in your own dashboard.
| Job | Who does it |
|---|---|
| Get the visitor out of the in-app browser | AppIn |
| Route by device to the right store | Either — whichever link is in front |
| Attribute the install to a campaign | AppsFlyer |
| Deferred deep link into a screen after install | AppsFlyer |
| Landing page built from your store listing | AppIn |
One note on the first row: the way out is an escape from the in-app browser, not a better attempt at the hand-off from inside it. The page asks the host app to reopen itself in the phone's real browser and the store opens from there, on load, with nothing for the visitor to tap. Where there is no in-app browser to leave, the link opens the store the ordinary way.
This is not specific to AppsFlyer
Branch, Adjust and Singular links meet the same wall inside an in-app browser, for the same reason: they are HTTPS links that have to hand off to a store app from a web view. If you use one of those instead, everything above is identical.
The full explanation of what fails and why
Questions
- Why does OneLink fail inside Instagram?
- Because the click opens in Instagram’s in-app browser. An SDK inside your app cannot fix a web view the SDK never reaches.
- Can I keep AppsFlyer and use AppIn?
- Yes. Point AppIn at your OneLink. AppIn leaves the web view; AppsFlyer continues after the store.
Facts on this page were last checked on . Competitor pricing and platform behaviour both move; check theirs before deciding.
Keep reading
- GuideYour campaign is missing from App Store Connect. Here is the order to check.A campaign link that drove installs can report nothing in App Store Connect. Three thresholds Apple publishes explain most empty rows — check them first.
- GuideSearching for page.link will miss most of your dead Dynamic LinksThe shutdown took custom domains too, not just page.link. Where the dead links actually hide, what to grep for, and which ones you can never fix.
- GuideiOS has no install referrer. It has three other things.Android has one Install Referrer API. iOS has no equivalent — it has three separate systems, and picking the wrong one is why campaign data goes missing.
Keep AppsFlyer. Fix the step before it.
Point an AppIn link at your OneLink. Your measurement setup does not change; the visitor arrives at it from a real browser instead of from inside a web view.
See plans