Utiliser et configurer des liens profonds dans les e-mails et les SMS deeplinks

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é :

NOTE
Adobe Journey Optimizer prend en charge les liens profonds pour iOS et Android à l’aide d’URL suivies (/ee/v1/mclick/*) afin d’assurer la compatibilité et le suivi des clics.

Création de liens profonds authoring

CAUTION
Les liens profonds ne fonctionneront pas tant que vous n’aurez pas terminé les étapes de configuration et d’implémentation de l’application mobile sur cette page.

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 un id unique 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'}}
TIP
Remplacez <<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.

NOTE
Cette section s’applique lorsque vous utilisez des liens universels (iOS) et des liens d’application (Android) (liens profonds basés sur HTTPS).
  1. Dans Journey Optimizer, déléguez le sous-domaine dans lequel la liaison profonde est activée. En savoir plus

  2. 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
IMPORTANT
Les liens profonds via l’infrastructure Adobe s’appliquent lorsque le suivi des liens est activé pour votre message, dans les paramètres de suivi des e-mails ou dans la section Suivi des actions pour les campagnes par SMS. Les clics sur les liens profonds suivis utilisent des URL sous /ee/v1/mclick/*, qu’Adobe héberge et résout.
Pour les liens non suivis, l’URL n’est pas réécrite via les systèmes Adobe. Vous devez configurer des liens universels ou des liens d’application sur vos propres domaines et hébergements afin que ces liens ouvrent votre application comme prévu.

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

  1. Dans Xcode, sélectionnez votre cible via Signature et fonctionnalités > + Fonctionnalité > Domaines associés.

  2. 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
    
  3. 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
        }
    }
    
IMPORTANT
L’application doit effectuer un GET sur l’URL mclick et lire l’en-tête Location, puis acheminer le contenu en fonction de l’URL finale.
N’ouvrez pas simplement l’URL mclick dans Safari, car cela va à l’encontre de l’objectif des liens profonds.

Android (Liens d’application) android-implementation

  1. 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>
    
  2. 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
        }
    }
    
IMPORTANT
Comme iOS, l’application doit appeler l’URL mclick et utiliser l’en-tête Location pour déterminer la destination finale.
Utilisez followRedirects(false) pour contrôler la gestion des redirections et consigner les analyses avec précision si nécessaire.
La logique de routage est spécifique à l’application. Définissez un mappage clair des URL vers les écrans.
  • 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/orders au 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

L’application ne s’ouvre pas lorsque j’appuie sur le lien profond.
  • 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).
L’application s’ouvre mais n’accède pas à l’écran attendu.
  • 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.
Que se passe-t-il si l’application n’est pas installée ?
  • 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).
Comment inclure en toute sécurité des caractères spéciaux dans les paramètres ?
Encodez les valeurs des paramètres de requête au format URL. Cela réduit les problèmes de diffusion et de rendu et permet d’éviter les erreurs d’analyse dans votre application.
Comment devrions-nous tester de bout en bout ?
  • 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
J’ai une application, mais différents sous-domaines pour l’organisation. Dois-je demander la création d’AASA et assetLinks.json pour chaque sous-domaine ?
Oui. Si vous souhaitez créer des liens profonds sur chaque sous-domaine délégué, demandez une configuration AASA et assetlinks.json pour chaque sous-domaine qui doit prendre en charge la fonctionnalité.
L’URL que je configure doit-elle utiliser un format de lien profond (par exemple, appname://path) ?
Vous pouvez utiliser un modèle d’URL personnalisé (par exemple, 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.
Les paramètres UTM sur l’URL seront-ils disponibles dans l’application mobile pour Analytics ?
Oui. Les paramètres UTM que vous configurez dans Journey Optimizer sont inclus dans l’URL finale renvoyée dans l’en-tête Location lorsque votre application effectue un GET sur l’URL mclick. Vous pouvez donc les utiliser pour les analyses in-app.
Quelle est l’expérience d’utilisation pour les URL /ee/v1/click/ ?
Le lien s’ouvre dans le navigateur web par défaut de l’appareil (comportement de suivi des clics standard), au lieu d’être traité comme un lien profond de l’application par le biais du flux mclick décrit sur cette page.
AI Knowledge Reference

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 mclick links 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 mclick URL and read the Location header, then route based on the final URL; do not simply open the mclick URL 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 mclick URL, read the Location header, and route based on the final URL; do not open the mclick URL 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 Location header.
  • 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.
recommendation-more-help
journey-optimizer-help