Enlaces Profundos (deep linking) en Power Apps

Abre la app de manera predeterminada en la pantalla correcta y con el registro correcto (desde un Email o Teams)
¿Te gustaría que un usuario haga clic en un enlace y tu Power App se abra directamente en el registro que debe revisar (sin navegar por menús)? 💡
Eso se logra con enlaces profundos (deep links) usando parámetros en la URL y leyéndolos dentro de la app con Param(). [learn.microsoft.com], [learn.microsoft.com]
1) ✨ ¿Qué es un “enlace profundo” (deep lining) en Power Apps?
Un enlace profundo te permite compartir una URL con esta forma:
https://apps.powerapps.com/play/{AppID}?{Query} [learn.microsoft.com]
Donde el Query incluye parámetros como parametro01=..., para que la app se abra con datos específicos en lugar de la pantalla inicial “por defecto”. [learn.microsoft.com]
2) 🔗 Estructura de URL (simple y múltiple)
✅ Un parámetro
https://apps.powerapps.com/play/{AppID}?parametroID=12La app recibe parametroID al arrancar y puede abrir directamente la pantalla de detalle del registro. [learn.microsoft.com]
✅ Varios parámetros
Solo separa con & :
https://apps.powerapps.com/play/{AppID}?parametroID=12&screen=ventanaRegistro
Los parámetros se leen con Param() dentro de la app. [learn.microsoft.com], [learn.microsoft.com]
📌 Nota importante: Param distingue mayúsculas/minúsculas en el nombre del parámetro (debe coincidir exactamente). [learn.microsoft.com]
3) 🧠 ¿Cómo leer parámetros dentro de la app? (Param())
La función Param(«NombreParametro») obtiene el valor enviado en la URL y, si no existe, devuelve Blank(). [learn.microsoft.com]
Ejemplo (capturar parametroID):
If(
Not(IsBlank(Param("parametroID"))),
Set(parametroID, Param("parametroID"))Esto permite guardar el parámetro en una variable y usarlo en la aplicación en Filter, LookUp, Navigate, etc. [learn.microsoft.com], [learn.microsoft.com]
4) 🎯 Controlar qué pantalla abrir (recomendado: StartScreen + OnVisible)
Microsoft muestra un patrón práctico para deep linking:
- En App.OnStart: guardar el parámetro en una variable. [learn.microsoft.com]
- En App.StartScreen: elegir la pantalla inicial según si el parámetro viene o no. [learn.microsoft.com], [learn.microsoft.com]
- En la pantalla de destino (OnVisible): cargar el registro con
LookUp()usando el ID. [learn.microsoft.com]
Ejemplo basado en el patrón oficial:
App.OnStart
If(
Not(IsBlank(Param("parametroID"))),
Set(parametroID, Param("parametroID"))
);[learn.microsoft.com], [learn.microsoft.com]
App.StartScreen
If(
Not(IsBlank(Param("parametroID"))),
ventanaRegistro,
ventanaInicio
)[learn.microsoft.com], [learn.microsoft.com]
DetailScreen1.OnVisible
If(
Not(IsBlank(parametroID)),
UpdateContext({varCuenta: LookUp(Cuentas, ID= parametroID)})
)✅ Resultado: si llega parametroID, abres la ventana de registro y muestras el registro exacto. [learn.microsoft.com]
5) ⚙️ Detalles técnicos que te ahorran errores
- Los valores de Param siempre llegan como texto, aunque el valor sea numérico; conviértelo si lo necesitas (ej.:
Value()oGUID()). [learn.microsoft.com] - Si el parámetro tiene espacios o caracteres especiales, debe ir EncodeUrl (la documentación lo resalta). [learn.microsoft.com]
- Los parámetros no cambian durante la ejecución: solo se actualizan si la app se recarga. [learn.microsoft.com]
- Si abres la app desde móvil y ya estaba abierta, los parámetros podrían no refrescarse sin recarga. [learn.microsoft.com]
- Hay palabras reservadas que no conviene usar como nombres de parámetros (por ejemplo
tenantId,source,locale, etc.). [learn.microsoft.com]
✅ Casos de uso (rápidos y reales)
1) 📩 Envio de Email con el Link de la Aplicacion desde Power Automate → para abrir el registro correcto
- Flujo detecta un cambio (SharePoint/Dataverse).
- Envía un correo con link:
...?parametroID=20 - El usuario entra directo a ventanaRegistro con el registro cargado. [learn.microsoft.com]
2) 💬 Envio de Link dentro de Mensaje de Teams → para abrir pantalla de aprobación
- Enlace con
screen=Aprobar®istroID=30...para llevar al usuario a la pantalla exacta. - La app decide StartScreen según el parámetro
screen. [learn.microsoft.com], [learn.microsoft.com]
3) 🧭 Navegación guiada (modo “crear” o “editar”)
- Parámetro
mode=editaromode=nuevo. - La app ajusta comportamiento (mostrar formulario en modo edición vs. creación). [learn.microsoft.com]
🧾 Conclusiones y recomendaciones
✅ Deep links mejoran la experiencia y la adopción: menos clics, más contexto, más productividad.
✅ Para implementarlo con orden: [learn.microsoft.com]
- Define 1–3 parámetros estándar (ej.:
screen,registroID/parametroID,mode). [learn.microsoft.com] - Lee parámetros con Param() en el arranque y controla la entrada con StartScreen. [learn.microsoft.com], [learn.microsoft.com]
- Carga el registro en OnVisible de la pantalla destino. [learn.microsoft.com]
- Asegura consistencia: nombres exactos (case-sensitive) y valores codificados si corresponde. [learn.microsoft.com]
📚 Referencias oficiales
- Create a canvas app with deep link to a specific screen — Microsoft Learn: https://learn.microsoft.com/en-us/power-apps/maker/canvas-apps/how-to/deep-linking [learn.microsoft.com]
- Launch and Param functions (Power Fx) — Microsoft Learn: https://learn.microsoft.com/en-us/power-platform/power-fx/reference/function-param [learn.microsoft.com]

