Sur cette page : découvrez comment créer des liens profonds dans du contenu d’e-mail et de SMS, les configurer dans Adobe Journey Optimizer et gérer les liens suivis dans vos applications iOS et Android afin que les destinataires arrivent sur le bon écran in-app.
Les liens profonds vous permettent d’orienter les destinataires d’un e-mail ou d’un SMS vers un écran ou un contenu spécifique dans votre application mobile. Cela permet d’amener les personnes directement à l’expérience in-app prévue, sans qu’elles passent par un navigateur web ou une boutique d’applications, de sorte que le parcours reste pertinent et intégré à la marque.
Lorsque vos destinataires cliquent sur le lien profond, ils sont directement redirigés vers le contenu in-app prévu, à condition que vous ayez terminé :
-
les étapes de configuration dans Journey Optimizer ;
-
les étapes de mise en œuvre de l’application mobile pour iOS et Android dans votre application mobile.
/ee/v1/mclick/*) afin d’assurer la compatibilité et le suivi des clics.Création de liens profonds authoring
Email authoring-email
Pour les e-mails, vous disposez de deux options afin d’insérer un lien profond :
-
Concepteur d’e-mail : assurez-vous que le suivi des liens est activé. Sélectionnez l’élément à lier (texte, bouton ou image), cliquez sur Insérer un lien dans la barre d’outils contextuelle, puis choisissez Lien profond pour saisir l’URL de votre lien profond. En savoir plus sur l’insertion de liens
-
Éditeur de personnalisation (code) : insérez le lien profond directement dans le contenu HTML à l’aide du fragment de code suivant :
code language-html <a class="arc-link" data-nl-type="DEEPLINK" href="<<deeplink_url>>" id="acr-link-7821368" style="text-decoration:underline;" target="_blank" data-tracking-type="DEEPLINK">Click Here</a>note tip TIP Remplacez <<deeplink_url>>par l’URL de votre lien profond et utilisez unidunique pour chaque bloc afin d’éviter les conflits.
SMS authoring-sms
Pour les SMS, les liens profonds sont créés à l’aide de la fonction d’assistance URL de l’éditeur de personnalisation. Découvrez comment ajouter des liens à un contenu de SMS dans cette section.
Pour insérer des liens profonds dans un contenu SMS, utilisez la syntaxe suivante :
{{url originalUrl='<<url>>' type='DEEPLINK' action='CLICK'}}
<<url>> par l’URL réelle du lien profond.Configuration dans Journey Optimizer configuration
Pour pouvoir utiliser des liens profonds dans les e-mails et les SMS pour vos applications mobiles, procédez comme suit.
-
Dans Journey Optimizer, déléguez le sous-domaine dans lequel la liaison profonde est activée. En savoir plus
-
Hébergez le fichier AASA pour iOS et le fichier assetLinks.json pour Android sur votre sous-domaine. Contactez l’Assistance clientèle Adobe ou votre représentant ou représentante Adobe en indiquant les détails ci-dessous :
-
Pour iOS (AASA) :
- Sous-domaine délégué
- ID d’offre groupée de l’application
-
Pour Android (assetLinks.json) :
- Sous-domaine délégué
- ID d’offre groupée de l’application
- Empreinte du certificat SHA-256
-
/ee/v1/mclick/*, qu’Adobe héberge et résout.Implémentation des applications mobiles mobile-implementation
Cette section explique comment implémenter des liens profonds mobiles avec Adobe Journey Optimizer, de sorte que, dans une configuration HTTPS standard (liens universels et liens d’application), une seule URL puisse :
- Ouvrir un écran spécifique dans votre application mobile lorsque l’application est installée, ou
- Ouvrir votre site web comme solution de secours lorsque l’application n’est pas installée.
Lorsque le suivi des liens est activé pour votre message, Journey Optimizer continue à suivre ces clics, les inclut dans les rapports et peut les utiliser dans des expériences de contenu si vous les exécutez sur le message.
Cette section fournit des modèles d’implémentation courants pour les liens profonds. Votre configuration exacte dépend de l’architecture et de la structure de routage de votre application.
iOS (liens universels) ios-implementation
-
Dans Xcode, sélectionnez votre cible via Signature et fonctionnalités > + Fonctionnalité > Domaines associés.
-
Ajoutez des entrées pour les sous-domaines délégués, par exemple :
code language-text applinks:www.mybusiness.com applinks:data.email.mybusiness.com -
Gérez les liens universels dans l’application et obtenez le lien d’origine à partir de l’en-tête de réponse.
accordion Exemple : iOS 13+ avec des scènes code language-swift class SceneDelegate: UIResponder, UIWindowSceneDelegate { func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL else { return } handleUniversalLink(url: incomingURL) } private func handleUniversalLink(url: URL) { // Only handle AJO tracked mobile clicks guard url.host == "data.email.mybusiness.com", url.path.hasPrefix("/ee/v1/mclick") else { // Could also handle direct www.mybusiness.com links here return } resolveTrackedUrlAndRoute(url) } private func resolveTrackedUrlAndRoute(_ trackedUrl: URL) { var request = URLRequest(url: trackedUrl) request.httpMethod = "GET" URLSession.shared.dataTask(with: request) { _, response, error in guard error == nil, let httpResponse = response as? HTTPURLResponse, let locationValue = httpResponse.allHeaderFields["Location"] as? String, let finalUrl = URL(string: locationValue) else { return } DispatchQueue.main.async { self.routeToDestination(finalUrl) } }.resume() } private func routeToDestination(_ url: URL) { // Example: map URL paths to screens // https://www.mybusiness.com/dashboard/offers/coupons // → OffersViewController for Coupons } }
mclick et lire l’en-tête Location, puis acheminer le contenu en fonction de l’URL finale.mclick dans Safari, car cela va à l’encontre de l’objectif des liens profonds.Android (Liens d’application) android-implementation
-
Ajoutez le filtre d’intention App Link dans votre application Android.
code language-xml <activity android:name=".DeepLinkActivity" android:exported="true"> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="data.email.mybusiness.com" android:pathPrefix="/ee/v1/mclick" /> </intent-filter> </activity> -
Mettez en œuvre le gestionnaire de liens profonds.
accordion Dans Kotlin : code language-kotlin class DeepLinkActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val trackedUri = intent?.data if (trackedUri == null || trackedUri.host != "data.email.mybusiness.com" || !trackedUri.path.orEmpty().startsWith("/ee/v1/mclick")) { finish() return } resolveTrackedUrlAndRoute(trackedUri) } private fun resolveTrackedUrlAndRoute(trackedUri: Uri) { lifecycleScope.launch(Dispatchers.IO) { try { val finalUrl = followRedirect(trackedUri.toString()) withContext(Dispatchers.Main) { routeToDestination(finalUrl) finish() } } catch (e: Exception) { // Optionally log error, fallback to browser finish() } } } private fun followRedirect(trackedUrl: String): Uri { val client = OkHttpClient.Builder() .followRedirects(false) // We want to read Location ourselves .build() val request = Request.Builder() .url(trackedUrl) .get() .build() client.newCall(request).execute().use { response -> val location = response.header("Location") ?: throw IllegalStateException("Missing Location header") return Uri.parse(location) } } private fun routeToDestination(finalUri: Uri) { // Example: interpret https://www.mybusiness.com/dashboard/offers/coupons // and open the correct Activity / Fragment } }
mclick et utiliser l’en-tête Location pour déterminer la destination finale.followRedirects(false) pour contrôler la gestion des redirections et consigner les analyses avec précision si nécessaire.Pratiques recommandées deeplink-best-practices
- Utiliser des chemins stables : privilégiez les itinéraires qui résistent aux modifications de l’interface d’utilisation de l’application (par exemple,
/account/ordersau lieu de/tab/3/view/2). - Tenir compte des chemins suivis : lorsque le suivi des liens est activé, le lien sur lequel la personne a cliqué peut utiliser des modèles de chemins suivis (par exemple,
/ee/v1/mclick/). Assurez-vous que votre routeur peut analyser l’URL finale après la résolution du lien suivi. - Garder les paramètres prévisibles : définissez un schéma de paramètres cohérent (par exemple,
?orderId=12345). - Éviter les données sensibles dans les URL : ne placez pas de secrets ou de données personnelles directement dans l’URL du lien profond.
- Tester votre lien profond : envoyez une épreuve et cliquez sur le lien profond sur un appareil sur lequel l’application est installée.
- Valider sur des appareils réels : les liens universels et les comportements de résolution des liens suivis sont plus fiables à valider sur des appareils physiques que sur des simulateurs.
- Valider le routage côté application : si le lien profond n’ouvre pas l’écran attendu, validez le routage côté application et le format de l’URL (hôte/chemin/requête et codage de l’URL).
- Garder à l’esprit l’initialisation de l’application : le comportement des liens d’application/liens universels est le plus fiable après l’installation et l’ouverture de l’application au moins une fois.
Résolution des problèmes et FAQ troubleshooting-faq
- Vérifiez que l’URL correspond aux modèles d’hôte et de chemin que votre application est configurée pour gérer, y compris les chemins de clic suivis lorsque le suivi des liens est activé (par exemple, les chemins sous
/ee/v1/mclick/). - Pour les liens universels d’iOS et les liens d’applications Android, vérifiez que l’association de domaine (AASA/
assetlinks.json) est correctement configurée et accessible. - Testez sur un appareil réel (les simulateurs/émulateurs peuvent se comporter différemment pour l’association de liens).
- Vérifiez que le routeur côté application analyse correctement le chemin/la requête de l’URL.
- Vérifiez l’encodage de l’URL : les caractères réservés doivent être encodés en URL.
- Validez les noms et les valeurs des paramètres qui correspondent à ce que le routeur attend.
- Si la même URL HTTPS peut être diffusée par votre site web, le lien peut ouvrir une page web comme solution de secours lorsque l’application n’est pas installée (configurez la destination et le routage web en conséquence).
-
Créez une épreuve avec un lien profond, cliquez dessus sur les appareils iOS et Android (scénarios installés et non installés).
-
Validez :
- La valeur du lien e-mail ou SMS final (hôte/chemin/requête)
- L’association au niveau du système d’exploitation (si vous utilisez des liens universels/d’application)
- Le résultat du routage in-app
assetlinks.json pour chaque sous-domaine qui doit prendre en charge la fonctionnalité.appname://path) ?appname://path), mais l’approche recommandée est un lien universel ou un lien d’application (https://), qui correspond à la configuration basée sur HTTPS dans les sections Configuration et implémentation de cette page.Location lorsque votre application effectue un GET sur l’URL mclick. Vous pouvez donc les utiliser pour les analyses in-app./ee/v1/click/ ?mclick décrit sur cette page.This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.
For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.
- TL;DR: This page explains how to author deep links in email and SMS content, configure them in Journey Optimizer, and handle the tracked links in iOS and Android apps so recipients land on the right in-app screen.
Intents:
- Author a deep link in email (Email Designer or Personalization editor code) and in SMS (Url helper function)
- Complete the Journey Optimizer configuration for universal links (iOS) and app links (Android)
- Implement mobile app handling of tracked
mclicklinks in iOS and Android - Follow recommended practices and troubleshoot deep links that do not open the app or the expected screen
- Test deep links end-to-end by sending a proof and clicking on real devices
Glossary:
- Deep link: A link that takes recipients from an email or SMS message directly to a specific screen or content in a mobile app (product-specific)
- Universal links (iOS) / App links (Android): HTTPS-based deep links the configuration on this page applies to (product-specific)
- AASA / assetLinks.json: The association files hosted on your delegated subdomain for iOS (AASA) and Android (assetLinks.json) (product-specific)
/ee/v1/mclick/*: Tracked URLs that Adobe hosts and resolves for deep link clicks when link tracking is enabled (product-specific)
Guardrails:
- Deep links will not work unless you complete both the configuration and the mobile app implementation steps on this page.
- Deep linking is supported for both iOS and Android using tracked URLs (
/ee/v1/mclick/*) for compatibility and click tracking. - The configuration section applies when you use universal links (iOS) and app links (Android), which are HTTPS-based deep links.
- Tracked deep link clicks use URLs under
/ee/v1/mclick/*, which Adobe hosts and resolves, and apply when link tracking is enabled for the message. - For non-tracked links, the URL is not rewritten through Adobe systems; you must configure universal links or app links on your own domains and hosting.
- The app must perform a GET on the
mclickURL and read theLocationheader, then route based on the final URL; do not simply open themclickURL in a browser. - Hosting the AASA (iOS) and assetLinks.json (Android) files requires contacting Adobe Customer Care with the delegated subdomain and app bundle ID; Android also requires the SHA-256 certificate fingerprint.
Terminology:
- Canonical name: Deep link — Acronym: n/a — variants: deeplink, Deeplink (Insert link option)
- Synonyms: “universal links” (iOS) and “app links” (Android) = the HTTPS-based deep link setup
- Do not confuse: “
/ee/v1/mclick/*” (tracked deep link flow handled as an app deep link) ≠ “/ee/v1/click/” (opens in the device’s default web browser, standard click tracking) - Do not confuse: “tracked links” (rewritten through Adobe, use
mclick) ≠ “non-tracked links” (not rewritten; configured on your own domains)
FAQ:
- Q: What must be done before deep links work? — Complete both the configuration steps in Journey Optimizer and the mobile app implementation steps for iOS and Android.
- Q: How should the app handle the tracked link? — Perform a GET on the
mclickURL, read theLocationheader, and route based on the final URL; do not open themclickURL directly in a browser. - Q: What happens if the app is not installed? — If the same HTTPS URL can be served by your website, the link can open a web page as a fallback.
- Q: Are UTM parameters available in the app? — Yes; UTM parameters configured in Journey Optimizer are included in the final URL returned in the
Locationheader. - Q: How do I test end-to-end? — Send a proof (create a proof with a deep link) and click it on iOS and Android devices, for both installed and not-installed scenarios, validating on real devices.
- Q: Should I use a custom URL scheme like
appname://path? — You can, but the recommended approach is a universal link or app link (https://) matching the HTTPS-based setup on this page.