Deep links. Open the app. Fall back gracefully.
Manifiestos de Universal Links y App Links servidos desde tu dominio personalizado. iOS abre tu aplicación al tocar; Android hace lo mismo. Fallback del navegador en escritorio.
- Universal Links (iOS) and App Links (Android) served from your domain
- Deferred deep links — context survives app install
- Smart platform detection with graceful fallbacks
- No SDK required — works with standard OS mechanisms
Universal Links & App Links
Manifest files, auto-served from your domain
iOS Universal Links require an apple-app-site-association file. Android App Links require assetlinks.json. Elido generates and serves both from your custom domain automatically — no separate hosting, no manual file management.
- iOS Universal LinksBundle ID + Team ID → AASA served at /.well-known/ automatically
- Android App LinksPackage name + SHA-256 fingerprint → assetlinks.json, HTTPS enforced
- Smart-link fallbackApp not installed → App Store / Play Store via rule-based routing
- UTM passthroughUTM parameters preserved to store URL — attribution doesn't break
- No SDK in your appOS-level interception only; intent-filter and continueUserActivity
{ "applinks": { "apps": [], "details": [ { "appID": "TEAMID.com.yours.app", "paths": [ "/product/*", "/referral/*", "/invite/*" ] } ] } }
[{ "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:..." ] } }]
Served from your custom domain automatically. Configure bundle ID + Team ID (iOS) or package name + SHA-256 fingerprint (Android) in domain settings — Elido generates and hosts both files.
Deferred deep links
Context that survives the install
When the app isn’t installed, the user goes to the store, installs, and opens the app. Deferred deep-linking passes the original deep-link context through that journey so the app can land the user on exactly the right screen after first launch.
- 01
Clicks link
User taps an Elido short link — from email, social, QR.
go.yourcompany.com/p/12345 - 02
No app → Store
App not installed. OS detects from AASA / assetlinks check. Falls back to App Store or Play Store.
iOS → App Store · Android → Play Store - 03
Installs app
User installs from the store. The install referrer carries the click context as a query parameter.
click_id + UTM preserved in referrer URL - 04
Opens app
App opens for the first time. MMP reads install referrer; maps click_id to the install event.
Appsflyer / Adjust / Branch picks it up - 05
Lands on exact page
App routes to the originally linked screen — product/12345 — as if the user had the app already.
product/12345 — context preserved through install
The click_id and UTM parameters from the original short link are passed as query parameters to the store URL. Mobile Measurement Platforms (MMPs) that capture the install referrer — Appsflyer, Adjust, Branch — can match the install to the originating click. Full deferred deep-linking (passing in-app context through install) requires the MMP SDK in your app; Elido covers the link layer.
Smart platform detection
One link. Three redirect paths.
The edge reads User-Agent and platform signals at the redirect layer — before any JS runs. iPhone gets Universal Links, Android gets App Links, desktop gets your web fallback. No JavaScript redirect delay; no client-side platform detection.
- UA parsing at the edge, sub-millisecond
- iOS → Universal Link interception by the OS
- Android → App Link interception via intent-filter
- Desktop → web URL, no store detour
- In-app browsers detected and redirected to system browser
- Composes with smart-link rules — geo + device + deep-link
What you can do
- Apple App Site Association
- Android Asset Links
- Reglas de smart link para el fallback de la tienda
- Probado con adb y xcrun
Cómo funcionan realmente los deep links — y dónde fallan
Universal Links y App Links son mecanismos a nivel de sistema operativo. La configuración es sencilla; los casos borde no lo son. Esto cubre el panorama completo.
apple-app-site-association servido automáticamente desde tu dominio personalizado
Los Universal Links requieren un archivo apple-app-site-association (AASA) en /.well-known/apple-app-site-association en tu dominio personalizado. iOS descarga este archivo cuando se instala tu app; mapea tu dominio con el bundle ID y team ID de tu app. Si el mapeo es correcto, al tocar un enlace HTTPS en tu dominio en cualquier app de iOS (Safari, Mail, Twitter, Instagram), se abre tu app directamente en lugar de ir a un navegador. Elido genera y sirve el archivo AASA desde la ruta well-known de tu dominio personalizado automáticamente, basándose en el bundle ID y team ID que configures en los ajustes del dominio. No necesitas alojar el archivo por separado. iOS cachea el archivo AASA y lo vuelve a descargar periódicamente; si cambias la configuración de tu bundle ID en los ajustes de dominio de Elido, el nuevo AASA estará activo en segundos, pero los dispositivos iOS lo recogerán en su próxima actualización de caché (normalmente 24-48 horas, o al reinstalar la app). Probado contra el validador Apple AASA en cada lanzamiento de Elido.
assetlinks.json servido automáticamente — huella SHA-256 de tu clave de firma
Los Android App Links requieren un archivo Digital Asset Links en /.well-known/assetlinks.json en tu dominio. El archivo mapea tu dominio con el nombre de paquete de tu app y la huella SHA-256 de tu certificado de firma. Android verifica este archivo durante la instalación de la app y de nuevo periódicamente. Elido lo sirve desde tu dominio personalizado automáticamente, basándose en el nombre de paquete y la huella SHA-256 que configures. La verificación de Android requiere HTTPS (aplicado por el TLS de Elido en el dominio personalizado) y el archivo debe responder en pocos segundos (también gestionado). Un modo de fallo común: diferentes claves de firma para compilaciones de debug vs release tienen diferentes huellas SHA-256. Configura ambas huellas en los ajustes de dominio de Elido si estás probando con una compilación de debug; las compilaciones de producción solo necesitan la huella de release. Probado con adb shell pm get-app-links en cada lanzamiento.
App instalada → deep link. App no instalada → tienda. Escritorio → web. UTM preservados en todo momento.
La cadena de fallback se establece por enlace o por dominio en los ajustes de Elido. Para un enlace corto con configuración de deep-link: si el sistema operativo intercepta el clic (app instalada, dominio verificado), la app se abre. Si no (app no instalada), el enlace se abre en el navegador; el destino del navegador debe ser tu enlace de App Store / Play Store o un fallback web. Las reglas de smart-link gestionan esto limpiamente: configura una regla para iOS → URL de App Store, una regla para Android → URL de Play Store, y un fallback al destino web. Los parámetros UTM del enlace corto original se preservan en las URLs de fallback para que la atribución no se pierda cuando el usuario llegue a la tienda. El deep-linking diferido (pasar una ruta de deep-link específica a través de una instalación, para que la app se abra en la pantalla correcta tras instalarse) requiere un SDK en la app — Elido no proporciona esto. Para el deep-linking diferido, seguirás necesitando Appsflyer, Adjust o Firebase App Distribution.
Retargeting post-instalación: click ID pasado al destino para atribución
En un redireccionamiento de deep-link, Elido pasa el click_id como un parámetro de consulta a la URL de fallback. Si el usuario aterriza en la App Store e instala la app, el click_id está en la URL de referencia pero no se propaga automáticamente dentro de la app tras la instalación — eso requiere SKAdNetwork en iOS o un SDK de deep-link diferido en Android. Lo que hace Elido: pasa el click_id y los parámetros UTM a la URL de la tienda para que una plataforma de atribución móvil (MMP) que capture el referente de instalación pueda recogerlos. Esto funciona con Appsflyer y Adjust si pasas el click_id en el parámetro de campaña de la URL de la tienda. Si no utilizas una MMP, el click_id en la URL de la tienda se pierde efectivamente tras la instalación.
Migración desde Firebase Dynamic Links (cierre 2025)
Firebase Dynamic Links fue cerrado por Google en 2025. Elido puede manejar el patrón principal: un único enlace corto HTTPS que abre la pantalla correcta en una app instalada, vuelve a la tienda si no lo está, y vuelve a la web en escritorio. Configura el AASA y el assetlinks.json en los ajustes de dominio de Elido (reemplaza el alojamiento de Firebase de estos archivos), actualiza tus enlaces compartidos para que apunten a los enlaces cortos de Elido en lugar de las URLs page.link, y configura la cadena de fallback mediante reglas de smart-link. Lo que Elido no replica: el deep-linking diferido de Firebase (contexto de deep-link post-instalación mediante el SDK de Firebase) y los deep links de Firebase App Distribution. Si tu app depende mucho del deep-linking diferido, necesitarás Appsflyer, Adjust o Branch junto a Elido para la capa de atribución. Para las apps que solo necesitan 'abrir la pantalla correcta si está instalada, si no ir a la tienda', Elido reemplaza a Firebase Dynamic Links por completo.
Equipos móviles que utilizan deep links de Elido
Los nombres son marcadores de posición por ahora — los nombres reales de los clientes aparecerán aquí a medida que se publiquen los casos de estudio.
“Migramos de Firebase Dynamic Links la semana que anunciaron el cierre. La configuración de AASA y assetlinks.json en Elido tomó medio día. La cadena de fallback de smart-link reemplazó la lógica del SDK de Firebase que teníamos en la app para el enrutamiento a la tienda.”
“Las analíticas de clics por enlace en deep links nos indicaron que el 35% de nuestros enlaces compartidos se clicaban en escritorio — no teníamos configurado un fallback web. Añadir el fallback tomó 10 minutos; la tasa de conversión de los enlaces compartidos aumentó porque los usuarios que clicaban desde escritorio ahora podían completar la acción.”
“Usamos enlaces cortos de Elido con configuración de deep-link para programas de referidos. El passthrough de UTM a la URL de la App Store significa que nuestra MMP recoge correctamente el referente de instalación — la atribución funciona sin necesidad de trabajo personalizado en el SDK por nuestra parte.”
Deep links de Elido vs Branch.io vs Adjust vs Firebase Dynamic Links (cierre)
Branch y Adjust son plataformas completas de atribución móvil — más potentes para deep-linking diferido y atribución MMP. Elido es la herramienta adecuada cuando los deep links son parte de una configuración de acortador más amplia, no el producto principal.
| Feature | Elido | Branch.io | Adjust |
|---|---|---|---|
| Universal Links (iOS) | AASA servido automáticamente desde tu dominio | Totalmente gestionado a escala | No — solo MMP, no es host de deep-link |
| App Links (Android) | assetlinks.json servido automáticamente desde tu dominio | Totalmente gestionado | No |
| Requiere SDK en la app | No — intercepción a nivel de sistema operativo | Sí — SDK de Branch | Sí — SDK de Adjust |
| Deep-linking diferido | No — requiere SDK en la app | Sí — característica principal | Sí — con SDK de Adjust |
| Atribución móvil (MMP) | Passthrough de click ID; conexión MMP manual | MMP nativa — integraciones con Appsflyer, Kochava | Plataforma MMP completa |
| Passthrough de UTM a la tienda | Sí — vía parámetro de consulta en URL de fallback | Sí, con contexto de atribución | Sí |
| Analíticas de clics en enlaces | ClickHouse — geo, dispositivo, por enlace | Analíticas profundas de atribución móvil | Datos de atribución de instalación + eventos |
| Reemplazo de Firebase Dynamic Links | Sí para el patrón básico; no para deep-link diferido | Reemplazo total incluyendo diferido | Parcial — solo la parte de MMP |
Preguntas sobre deep links
¿Necesito un SDK de Branch o algún SDK en mi app para usar los deep links de Elido?
No. Los deep links de Elido utilizan iOS Universal Links y Android App Links — mecanismos a nivel de sistema operativo. Tu app solo necesita manejar la URL entrante de la manera estándar de iOS (scene:openURLContexts o application:continueUserActivity) o Android (intent-filter en el manifiesto). No se instala ningún SDK de terceros; el sistema operativo gestiona la intercepción basándose en los archivos AASA y assetlinks.json que Elido sirve desde tu dominio.
¿Cuál es el flujo de configuración de AASA?
En los ajustes de dominio de Elido → Deep links: introduce el bundle ID de tu app iOS (ej. com.tuempresa.app) y el Apple Team ID (cadena de 10 caracteres de tu cuenta de Apple Developer). Elido genera el JSON de AASA y lo sirve en /.well-known/apple-app-site-association en tu dominio personalizado. Verifica que es accesible con curl antes de enviar tu app a TestFlight o a la App Store. iOS descarga el archivo AASA durante la instalación de la app en dispositivos con iOS 9+.
¿Puedo tener múltiples apps en un solo dominio?
Sí — el archivo AASA admite múltiples entradas de apps. Configura el bundle ID y el Team ID de cada app en los ajustes del dominio; Elido genera un AASA combinado con todas las apps listadas. El assetlinks.json de Android también admite múltiples combinaciones de nombre de paquete + huella digital. Caso de uso común: app principal y un App Clip, o app principal y una extensión de widget.
Cierre de Firebase Dynamic Links — ¿cuál es la ruta de migración?
Sustituye las URLs cortas de page.link por enlaces cortos de Elido (tu dominio personalizado o el dominio compartido de Elido). Configura AASA y assetlinks.json en los ajustes de dominio de Elido. Establece la cadena de fallback mediante reglas de smart-link (regla de iOS → App Store, regla de Android → Play Store, fallback → web). Actualiza la generación de enlaces compartidos en tu app para llamar a la API create_link de Elido en lugar de Firebase. Qué no se migra: si tu app depende del deep-linking diferido de Firebase (paso de intención post-instalación), necesitarás Branch o Adjust para esa parte.
¿Cómo pruebo los Universal Links antes de publicarlos en la App Store?
Usa xcrun simctl openurl booted 'https://go.tuempresa.com/test-slug' con tu app instalada en un simulador. En un dispositivo físico con una compilación de debug, mantén pulsado un enlace en Safari y mira si aparece 'Abrir en tu App'. Apple también proporciona el App Association File Validator en developer.apple.com — pega tu URL de AASA y comprueba la accesibilidad, el Content-Type y la validez del JSON. El AASA de Elido supera las tres comprobaciones.
¿Qué es el deep-linking diferido y por qué Elido no lo hace?
El deep-linking diferido pasa contexto (ej. 'el usuario estaba viendo el producto con ID 123') desde el clic en el enlace a través de la instalación de la app y hasta el primer lanzamiento de la app. Requiere un SDK de huella digital o atribución en la app (Branch, Appsflyer, Adjust) que empareje la instalación con el clic durante el proceso de instalación. Elido no instala código SDK en tu app; solo servimos el AASA y el assetlinks.json. Sin el SDK, no hay mecanismo para pasar el contexto a través de una instalación. Para el caso de uso básico de 'abrir la pantalla correcta si está instalada', Elido es suficiente. Para pasar la intención a través de la instalación, necesitas una MMP.
¿Puedo usar deep links en el dominio compartido de Elido (s.elido.me)?
No. Los Universal Links y App Links requieren tu propio dominio — no puedes reclamar *.elido.me como un dominio de Universal Link para tu app. Los deep links requieren un dominio personalizado en los planes Pro o Business. El dominio personalizado es lo que configuras en tu AASA y assetlinks.json, y Elido sirve esos archivos desde allí.
¿Cómo gestiono el caso en el que el navegador del usuario bloquea la intercepción de la app?
Algunos navegadores (especialmente Chrome en Android anterior a 6.0, y algunos navegadores integrados como el de Instagram) bloquean la intercepción de App Links o Universal Links. La URL de fallback es lo que ven. Para navegadores integrados: redirige primero al navegador del sistema usando una URL de intención (Android) o un aviso al usuario. Para navegadores integrados de Instagram / TikTok: el enfoque estándar es mostrar un aviso de 'toca para abrir en tu navegador'. Elido no inyecta este aviso automáticamente — la URL de fallback es tu destino, y tú controlas lo que sucede allí.
Keep reading
Configuración de dominio personalizado — requerida para deep links; AASA y assetlinks.json servidos desde tu hostname.
iOS → App Store, Android → Play Store, escritorio → web — la cadena de fallback mediante reglas de smart-link.
Cómo los equipos de producto utilizan los deep links junto con variantes A/B y reglas de smart-link.
Integraciones MMP — Appsflyer, Adjust y Branch para deep-linking diferido junto con Elido.
¿Listo para probarlo?
Empieza con el plan gratuito, actualiza cuando necesites un dominio personalizado.