Alles wat Elido doet
Pro & Business

Deep links. Open de app. Val soepel terug.

Universal Links- en App Links-manifests, geserveerd vanaf je aangepaste domein. iOS opent je app bij een tik; Android doet hetzelfde. Browserfallback op desktop.

  • Universal Links (iOS) en App Links (Android) geserveerd vanaf je domein
  • Deferred deep links - context overleeft app-installatie
  • Slimme platformdetectie met soepele fallbacks
  • Geen SDK vereist - werkt met standaard OS-mechanismen
go.jouwbedrijf.com/product/12345
Gebruiker tikt op linkgo.yourcompany.com/product/12345App geïnstalleerd?OS controleert AASA / assetlinksJANEEOpenen in appproduct/12345deep-pad behoudenOS?UA-detectieiOSApp Storeapps.apple.comAndroidPlay Storeplay.google.comDesktopMobiel webbrowserfallbackUTM-doorgifte
Onderschepping op OS-niveau, geen SDKAASA + assetlinks.json
Auto-served
AASA + assetlinks.json
0
SDK-installaties in de app
iOS + Android
Platformdekking
UTM
Doorgifte bij fallback

Universal Links & App Links

Manifestbestanden, automatisch geserveerd vanaf je domein

iOS Universal Links vereisen een apple-app-site-association -bestand. Android App Links vereisen assetlinks.json. Elido genereert en serveert beide automatisch vanaf je aangepaste domein - geen aparte hosting, geen handmatig bestandsbeheer.

  • iOS Universal Links
    Bundle-ID + Team-ID → AASA automatisch geserveerd op /.well-known/
  • Android App Links
    Packagenaam + SHA-256-vingerafdruk → assetlinks.json, HTTPS afgedwongen
  • Fallback voor slimme links
    App niet geïnstalleerd → App Store / Play Store via regelgebaseerde routering
  • UTM-doorgifte
    UTM-parameters behouden tot de store-URL - attributie loopt niet stuk
  • Geen SDK in je app
    Alleen onderschepping op OS-niveau; intent-filter en continueUserActivity
Apple Universal Links
/.well-known/apple-app-site-association
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAMID.com.yours.app",
        "paths": [
          "/product/*",
          "/referral/*",
          "/invite/*"
        ]
      }
    ]
  }
}
Android App Links
/.well-known/assetlinks.json
[{
  "relation": [
    "delegate_permission/
  common.handle_all_urls"
  ],
  "target": {
    "namespace": "android_app",
    "package_name":
      "com.yourcompany.app",
    "sha256_cert_fingerprints": [
      "AB:12:CD:34:EF:56:..."
    ]
  }
}]

Automatisch geserveerd vanaf je aangepaste domein. Configureer bundle-ID + Team-ID (iOS) of packagenaam + SHA-256-vingerafdruk (Android) in de domeininstellingen - Elido genereert en host beide bestanden.

xcrun simctl openurl booted '…'
adb shell pm get-app-links

Deferred deep links

Context die de installatie overleeft

Als de app niet is geïnstalleerd, gaat de gebruiker naar de store, installeert de app en opent deze. Deferred deep-linking geeft de oorspronkelijke deep-link-context door tijdens die reis, zodat de app de gebruiker na de eerste keer opstarten precies op het juiste scherm kan laten landen.

  1. 01

    Klikt op link

    Gebruiker tikt op een korte link van Elido - vanuit e-mail, social, QR.

    go.jouwbedrijf.com/p/12345
  2. 02

    Geen app → Store

    App niet geïnstalleerd. OS detecteert dit via de AASA-/assetlinks-controle. Valt terug op App Store of Play Store.

    iOS → App Store · Android → Play Store
  3. 03

    Installeert de app

    Gebruiker installeert vanuit de store. De installatieverwijzing draagt de klikcontext als queryparameter.

    click_id + UTM behouden in de verwijzings-URL
  4. 04

    Opent de app

    App opent voor het eerst. MMP leest de installatieverwijzing; koppelt click_id aan de installatiegebeurtenis.

    Appsflyer / Adjust / Branch pikt het op
  5. 05

    Landt op exact de juiste pagina

    App routeert naar het oorspronkelijk gelinkte scherm - product/12345 - alsof de gebruiker de app al had.

    product/12345 - context behouden tijdens installatie
Context behouden tijdens installatie

De click_id en UTM-parameters van de oorspronkelijke korte link worden als queryparameters doorgegeven aan de store-URL. Mobile Measurement Platforms (MMP's) die de installatieverwijzing vastleggen - Appsflyer, Adjust, Branch - kunnen de installatie koppelen aan de oorspronkelijke klik. Volledige deferred deep-linking (in-app-context doorgeven tijdens installatie) vereist de MMP-SDK in je app; Elido dekt de linklaag.

Platformdetectie
go.jouwbedrijf.com/p/12345
Live
iPhone 15 Pro
iOS 17.4
iOS Universal Links
Mozilla/5.0 (iPhone; CPU iPhone OS 17_4…)
OS onderschept HTTPS-tik → opent app
yourapp://product/12345
Pixel 8 Pro
Android 14
Android App Links
Mozilla/5.0 (Linux; Android 14; Pixel 8…)
Intent gematcht door assetlinks.json → app geopend
yourapp://product/12345
MacBook / Desktop
macOS / Windows / Linux
Webfallback
Mozilla/5.0 (Macintosh; Intel Mac OS X…)
Geen AASA-controle → 302 naar web-URL
yourcompany.com/product/12345
UA-parsing draait binnen het edge-redirectproces - p50 onder 0,5 ms. In-app-browsers (Instagram, TikTok) worden apart gedetecteerd en kunnen worden doorgestuurd naar een prompt voor redirect naar de systeembrowser.

Slimme platformdetectie

Eén link. Drie redirectpaden.

De edge leest User-Agent- en platformsignalen in de redirectlaag - voordat er enige JS draait. iPhone krijgt Universal Links, Android krijgt App Links, desktop krijgt je webfallback. Geen JavaScript-redirectvertraging; geen client-side platformdetectie.

  • UA-parsing bij de edge, in submilliseconden
  • iOS → onderschepping van Universal Link door het OS
  • Android → onderschepping van App Link via intent-filter
  • Desktop → web-URL, geen omweg via de store
  • In-app-browsers gedetecteerd en doorgestuurd naar de systeembrowser
  • Werkt samen met regels voor slimme links - geo + apparaat + deep-link

Wat je kunt doen

  • Apple App Site Association
  • Android Asset Links
  • Regels voor slimme links voor store-fallback
  • Getest met adb en xcrun

Hoe deep links écht werken - en waar ze stuklopen

Universal Links en App Links zijn mechanismen op OS-niveau. De opzet is eenvoudig; de randgevallen zijn dat niet. Dit dekt het volledige plaatje.

iOS Universal Links
01

apple-app-site-association automatisch geserveerd vanaf je aangepaste domein

Universal Links vereisen een apple-app-site-association-bestand (AASA) op /.well-known/apple-app-site-association op je aangepaste domein. iOS downloadt dit bestand zodra je app is geïnstalleerd; het koppelt je domein aan de bundle-ID en team-ID van je app. Als de koppeling klopt, opent het tikken op een HTTPS-link op je domein in elke iOS-app (Safari, Mail, Twitter, Instagram) rechtstreeks je app in plaats van een browser. Elido genereert en serveert het AASA-bestand automatisch vanaf het well-known-pad van je aangepaste domein, op basis van de bundle-ID en team-ID die je instelt in de domeininstellingen. Je hoeft het bestand niet apart te hosten. iOS cachet het AASA-bestand en downloadt het periodiek opnieuw; als je de bundle-ID-configuratie in de domeininstellingen van Elido wijzigt, is de nieuwe AASA binnen seconden live, maar iOS-toestellen pikken deze pas op bij hun volgende cache-refresh (doorgaans 24-48 uur, of bij herinstallatie van de app). Getest tegen de AASA-validator van Apple bij elke release van Elido.

Android App Links
02

assetlinks.json automatisch geserveerd - SHA-256-vingerafdruk uit je ondertekeningssleutel

Android App Links vereisen een Digital-Asset-Links-bestand op /.well-known/assetlinks.json op je domein. Het bestand koppelt je domein aan de packagenaam van je app en de SHA-256-vingerafdruk van je ondertekeningscertificaat. Android controleert dit bestand bij het installeren van de app en daarna periodiek opnieuw. Elido serveert het automatisch vanaf je aangepaste domein, op basis van de packagenaam en SHA-256-vingerafdruk die je instelt. Voor Android-verificatie is HTTPS vereist (afgedwongen door de TLS van Elido op het aangepaste domein) en moet het bestand binnen enkele seconden reageren (ook geregeld). Een veelvoorkomend probleem: verschillende ondertekeningssleutels voor debug- versus release-builds hebben andere SHA-256-vingerafdrukken. Configureer beide vingerafdrukken in de domeininstellingen van Elido als je test met een debug-build; productie-builds hebben alleen de release-vingerafdruk nodig. Getest met adb shell pm get-app-links bij elke release.

Fallback-keten
03

App geïnstalleerd → deep link. App niet geïnstalleerd → store. Desktop → web. UTM overal behouden.

De fallback-keten wordt per link of per domein ingesteld in de instellingen van Elido. Voor een korte link met deep-link-configuratie: als het besturingssysteem de tik onderschept (app geïnstalleerd, domein geverifieerd), opent de app. Zo niet (app niet geïnstalleerd), opent de link in de browser; de browserbestemming moet je App Store-/Play Store-link of een webfallback zijn. Regels voor slimme links regelen dit netjes: configureer een regel voor iOS → App Store-URL, een regel voor Android → Play Store-URL, en fallback naar de webbestemming. UTM-parameters uit de oorspronkelijke korte link blijven behouden in de fallback-URL's, zodat attributie niet stukloopt wanneer de gebruiker bij de store belandt. Deferred deep linking (een specifiek deep-link-pad doorgeven via een installatie, zodat de app na installatie op het juiste scherm opent) vereist een SDK in de app - Elido biedt dit niet. Voor deferred deep linking heb je nog steeds Appsflyer, Adjust of Firebase App Distribution nodig.

Retargeting na installatie
04

Retargeting na installatie: click-ID doorgegeven aan de bestemming voor attributie

Bij een deep-link-redirect geeft Elido de click_id door als queryparameter aan de fallback-URL. Als de gebruiker in de App Store belandt en de app installeert, staat de click_id in de verwijzings-URL maar wordt deze niet automatisch doorgegeven aan de app na installatie - dat vereist SKAdNetwork op iOS of een deferred-deep-link-SDK op Android. Wat Elido doet: de click_id en UTM-parameters worden doorgegeven aan de store-URL, zodat een mobiel attributieplatform (MMP) dat de installatieverwijzing vastlegt, ze kan oppikken. Dit werkt met Appsflyer en Adjust als je de click_id doorgeeft in de campagneparameter van de store-URL. Gebruik je geen MMP, dan raakt de click_id in de store-URL na installatie feitelijk verloren.

Migratie vanaf Firebase Dynamic Links
05

Migreren vanaf Firebase Dynamic Links (uitgefaseerd in 2025)

Firebase Dynamic Links werd in 2025 door Google uitgefaseerd. Elido kan het kernpatroon afhandelen: één HTTPS-korte-link die het juiste scherm opent in een geïnstalleerde app, terugvalt op de store, en op desktop terugvalt op web. Configureer de AASA en assetlinks.json in de domeininstellingen van Elido (vervangt de Firebase-hosting van deze bestanden), werk je deellinks bij zodat ze naar Elido-korte-links wijzen in plaats van page.link-URL's, en configureer de fallback-keten via regels voor slimme links. Wat Elido niet nabootst: de deferred deep-linking van Firebase (post-install-deep-link-context via de Firebase-SDK) en Firebase's App-Distribution-deep-links. Als je app sterk leunt op deferred deep-linking, heb je naast Elido nog Appsflyer, Adjust of Branch nodig voor de attributielaag. Voor apps die alleen 'open het juiste scherm als geïnstalleerd, anders naar de store' nodig hebben, vervangt Elido Firebase Dynamic Links volledig.

Mobiele teams die deep links van Elido gebruiken

Namen zijn voorlopig placeholders - echte klantnamen komen hier zodra casestudies worden gepubliceerd.

We migreerden weg van Firebase Dynamic Links in de week dat de uitfasering werd aangekondigd. De AASA- en assetlinks.json-opzet in Elido kostte een halve dag. De fallback-keten van slimme links verving de Firebase-SDK-logica die we in de app hadden voor store-routering.

M
Mobiel team, consumenten-app, 200K gebruikers, Riga
Mobile Engineer

Klikanalytics per link op deep links lieten zien dat 35% van onze deellinks op desktop werd aangeklikt - we hadden geen webfallback ingesteld. De fallback toevoegen kostte 10 minuten; het conversiepercentage van deellinks steeg omdat gebruikers die vanaf desktop klikten nu de actie konden voltooien.

P
Productteam, B2C-marktplaats, Brussel
Product Manager

We gebruiken Elido-korte-links met deep-link-configuratie voor doorverwijzingsprogramma's. Doordat UTM wordt doorgegeven aan de App Store-URL, pikt onze MMP de installatieverwijzing correct op - attributie werkt zonder dat wij zelf SDK-werk hoeven te doen.

G
Growth-team, fitness-app, 80K gebruikers, Amsterdam
Head of Growth

Deep links van Elido versus Branch.io versus Adjust versus Firebase Dynamic Links (uitgefaseerd)

Branch en Adjust zijn volwaardige mobiele attributieplatforms - krachtiger voor deferred deep-linking en MMP-attributie. Elido is de juiste tool wanneer deep links onderdeel zijn van een bredere shortener-opzet, niet het hoofdproduct.

FeatureElidoBranch.ioAdjust
Universal Links (iOS)Automatisch geserveerde AASA vanaf je domeinVolledig beheerd op schaalNee - alleen MMP, geen deep-link-host
App Links (Android)Automatisch geserveerde assetlinks.json vanaf je domeinVolledig beheerdNee
SDK vereist in de appNee - onderschepping op OS-niveauJa - Branch-SDKJa - Adjust-SDK
Deferred deep-linkingNee - vereist SDK in de appJa - kernfunctieJa - met Adjust-SDK
Mobiele attributie (MMP)Click-ID-doorgifte; MMP-koppeling handmatigNative MMP - integraties met Appsflyer, KochavaVolwaardig MMP-platform
UTM-doorgifte naar de storeJa - via queryparameter op de fallback-URLJa, met attributiecontextJa
Analytics op linkklikkenAnalyticsopslag - geo, apparaat, per linkDiepgaande mobiele attributieanalyticsInstallatie- en eventattributiedata
Vervanging van Firebase Dynamic LinksJa voor het basispatroon; geen deferred deep-linkVolledige vervanging, inclusief deferredGedeeltelijk - alleen MMP-kant

Vragen over deep links

Heb ik een Branch-SDK of enige SDK in mijn app nodig om deep links van Elido te gebruiken?

Nee. Deep links van Elido gebruiken iOS Universal Links en Android App Links - mechanismen op OS-niveau. Je app hoeft alleen de binnenkomende URL af te handelen op de standaard iOS-manier (scene:openURLContexts of application:continueUserActivity) of Android-manier (intent-filter in het manifest). Er wordt geen SDK van derden geïnstalleerd; het besturingssysteem handelt de onderschepping af op basis van de AASA- en assetlinks.json-bestanden die Elido vanaf je domein serveert.

Hoe verloopt de AASA-opzet?

In de domeininstellingen van Elido → Deep links: voer de bundle-ID van je iOS-app in (bijvoorbeeld com.jouwbedrijf.app) en het Apple Team ID (tekenreeks van 10 tekens uit je Apple Developer-account). Elido genereert de AASA-JSON en serveert deze op /.well-known/apple-app-site-association op je aangepaste domein. Controleer met curl of het bereikbaar is voordat je je app indient bij TestFlight of de App Store. iOS downloadt het AASA-bestand tijdens de app-installatie op toestellen met iOS 9 en hoger.

Kan ik meerdere apps op één domein hebben?

Ja - het AASA-bestand ondersteunt meerdere app-vermeldingen. Configureer de bundle-ID en het Team ID van elke app in de domeininstellingen; Elido genereert een gecombineerde AASA met alle apps vermeld. De assetlinks.json van Android ondersteunt ook meerdere combinaties van packagenaam + vingerafdruk. Veelvoorkomende toepassing: hoofdapp en een App Clip, of hoofdapp en een widget-extensie.

Firebase Dynamic Links uitgefaseerd - wat is het migratiepad?

Vervang korte page.link-URL's door Elido-korte-links (je aangepaste domein of het gedeelde Elido-domein). Configureer AASA en assetlinks.json in de domeininstellingen van Elido. Stel de fallback-keten in via regels voor slimme links (iOS-regel → App Store, Android-regel → Play Store, fallback → web). Werk het genereren van deellinks in je app bij zodat het de create_link-API van Elido aanroept in plaats van Firebase. Wat niet migreert: als je app leunt op de deferred deep-linking van Firebase (post-install-intentdoorgifte), heb je Branch of Adjust nodig voor dat onderdeel.

Hoe test ik Universal Links voordat ik publiceer naar de App Store?

Gebruik xcrun simctl openurl booted 'https://go.jouwbedrijf.com/test-slug' met je app geïnstalleerd op een simulator. Op een fysiek toestel met een debug-build houd je een link in Safari lang ingedrukt en kijk je of 'Open in jouw app' verschijnt. Apple biedt ook de App Association File Validator op developer.apple.com - plak je AASA-URL en deze controleert bereikbaarheid, Content-Type en JSON-geldigheid. De AASA van Elido doorstaat alle drie de controles.

Wat is deferred deep-linking en waarom doet Elido dit niet?

Deferred deep-linking geeft context door (bijvoorbeeld 'gebruiker bekeek product-ID 123') van de linkklik, door een app-installatie heen, tot in de eerste keer opstarten van de app. Dit vereist een fingerprinting- of attributie-SDK in de app (Branch, Appsflyer, Adjust) die de installatie tijdens het installatieproces koppelt aan de klik. Elido installeert geen SDK-code in je app; we serveren alleen de AASA en assetlinks.json. Zonder de SDK is er geen mechanisme om context door een installatie heen door te geven. Voor het basisgeval 'open het juiste scherm als geïnstalleerd' volstaat Elido. Om intentie door een installatie heen door te geven, heb je een MMP nodig.

Kan ik deep links gebruiken op het gedeelde domein van Elido (s.elido.me)?

Nee. Universal Links en App Links vereisen je eigen domein - je kunt *.elido.me niet claimen als Universal-Link-domein voor je app. Deep links vereisen een aangepast domein bij Pro of Business. Het aangepaste domein is wat je configureert in je AASA en assetlinks.json, en Elido serveert die bestanden ervanaf.

Hoe ga ik om met het geval waarin de browser van de gebruiker de app-onderschepping blokkeert?

Sommige browsers (met name Chrome op Android vóór 6.0, en sommige in-app-browsers zoals die van Instagram) blokkeren onderschepping door App Links of Universal Links. De fallback-URL is wat ze te zien krijgen. Voor in-app-browsers: leid eerst door naar de systeembrowser met een intent-URL (Android) of een gebruikersprompt. Voor de in-app-browsers van Instagram/TikTok: de standaardaanpak is het tonen van een prompt 'tik om te openen in je browser'. Elido injecteert deze prompt niet automatisch - de fallback-URL is jouw bestemming, en jij bepaalt wat daar gebeurt.

Klaar om het te proberen?

Begin met het gratis plan, upgrade wanneer je een custom domain nodig hebt.