メールや SMS でのディープリンクの使用と設定 deeplinks

このページ:​メールや SMS コンテンツにディープリンクを作成し、Adobe Journey Optimizer で設定し、iOS および Android アプリで追跡されたリンクを処理して、受信者がアプリ内の適切な画面に表示されるようにする方法について説明します。

ディープリンクは、メールや SMS メッセージの受信者を、モバイルアプリの特定の画面やコンテンツに移動するのに役立ちます。 人物を web ブラウザーやアプリストアを通じてルーティングすることなく、意図したアプリ内エクスペリエンスに直接移動できるので、関連性の高いブランドに即したジャーニーを維持できます。

受信者がディープリンクをクリックすると、受信者は意図したアプリ内コンテンツに直接移動します(以下を完了した場合)。

NOTE
Adobe Journey Optimizer は、追跡された URL(/ee/v1/mclick/*)を使用して、iOS と Android の両方でディープリンクをサポートし、互換性とクリックのトラッキングを確保します。

ディープリンクのオーサリング authoring

CAUTION
このページの設定およびモバイルアプリ実装の手順を完了しない限り、ディープリンクは機能しません。

メール authoring-email

メールメッセージの場合、ディープリンクを挿入するには、次の 2 つのオプションがあります。

  • E メールデザイナーリンクトラッキングが有効になっていることを確認します。 リンクする要素(テキスト、ボタン、画像)を選択し、コンテキストツールバーの「リンクを挿入」をクリックして、「ディープリンク」を選択し、ディープリンク URL を入力します。 リンクの挿入の詳細情報

  • パーソナライゼーションエディター(コード):次のスニペットを使用して、ディープリンクを HTML に直接挿入します。

    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
    <<deeplink_url>> を実際のディープリンク URL に置き換え、各ブロックに一意の id を使用して競合を回避します。

SMS authoring-sms

SMS の場合、ディープリンクは、パーソナライゼーションエディターの URL ヘルパー関数を使用して作成されます。 SMS コンテンツにリンクを追加する方法について詳しくは、この節を参照してください。

SMS コンテンツにディープリンクを挿入するには、次の構文を使用します。

{{url originalUrl='<<url>>' type='DEEPLINK' action='CLICK'}}
TIP
<<url>> を実際のディープリンク URLに置き換えます。

Adobe Journey Optimizer の設定 configuration

モバイルアプリのメールや SMS でディープリンクを使用するには、以下の設定手順を完了します。

NOTE
この節は、ユニバーサルリンク(iOS)​や​アプリリンク(Android)(HTTPS ベースのディープリンク)を使用する場合に適用されます。
  1. Journey Optimizer で、ディープリンクが有効になっているサブドメインをデリゲートします。 詳細情報

  2. iOS の AASA ファイルや Android の assetLinks.json ファイルをサブドメインにホストします。 詳しくは、アドビカスタマーケアまたはアドビ担当者にお問い合わせください。

    • iOS(AASA)の場合

      • 委任されたサブドメイン
      • アプリバンドル ID
    • Android(assetLinks.json)の場合

      • 委任されたサブドメイン
      • アプリバンドル ID
      • SHA-256 証明書のフィンガープリント
IMPORTANT
Adobe インフラストラクチャを経由するディープリンクは、メッセージの「メールトラッキング設定」セクションまたは SMS キャンペーンの「アクショントラッキング」セクションでリンクトラッキングが有効になっている場合に適用されます。 追跡されるディープリンククリックでは、アドビがホストおよび解決する /ee/v1/mclick/* の下にある URL が使用されます。
追跡されていない​リンクの場合、URL は Adobe システム経由で書き換えられません。 リンクが意図したとおりにアプリを開くようにするには、独自のドメインとホスティングでユニバーサルリンクまたはアプリリンクを設定する必要があります。

モバイルアプリの実装 mobile-implementation

この節では、一般的な HTTPS 設定(ユニバーサルリンクとアプリリンク)で、単一の URL で次の操作が実行できるように、Adobe Journey Optimizer を使用してモバイルディープリンクを実装する方法について説明します。

  • アプリがインストールされた場合は、モバイルアプリ内の特定の画面を開く。
  • アプリがインストールされていない場合は、web サイトをフォールバックとして開く。

メッセージに対してリンクトラッキングが有効になっている場合、Journey Optimizer は引き続きこれらのクリックを追跡して、レポートに含め、メッセージで実行する場合は、コンテンツ実験に使用できます。

この節では、ディープリンクの一般的な実装パターンについて説明します。 正確な設定は、アプリアーキテクチャとルーティングフレームワークによって異なります。

iOS(ユニバーサルリンク) ios-implementation

  1. Xcodeで、署名と機能+ 機能関連ドメイン​を通じてターゲットを選択します。

  2. デリゲートされたサブドメインのエントリを追加します。例:

    code language-text
    applinks:www.mybusiness.com
    applinks:data.email.mybusiness.com
    
  3. アプリ内のユニバーサルリンクを処理し、応答ヘッダーから元のリンクを取得します。

    accordion
    例:シーンを使用する iOS 13 以降
    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
アプリは mclick URL に対して GET を実行し、Location ヘッダーを読み取り、最終的な URL に基づいてルーティングする必要があります。
単に Safari で mclick URL を開くようなことはしないでください。それではディープリンクの目的が果たせなくなります。

Android(アプリリンク) android-implementation

  1. 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. ディープリンクハンドラーを実装します。

    accordion
    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
iOS と同様に、アプリは mclick URLを呼び出し、Location ヘッダーを使用して最終的な宛先を決定する必要があります。
followRedirects(false) を使用して、リダイレクト処理を制御し、必要に応じて分析を正確にログ記録できます。
ルーティングロジックはアプリに固有です。URL から画面への明確なマッピングを定義します。
  • 安定したパスを使用:アプリの UI 変更の影響を受けにくいルート(例:/tab/3/view/2 の代わりに /account/orders)を優先します。
  • 追跡されるパスを考慮:リンクトラッキングが有効な場合、クリックしたリンクは追跡されるパスパターン(例:/ee/v1/mclick/)を使用する場合があります。 追跡されるリンクを解決した後の最終的な URL を、ルーターが解析できることを確認してください。
  • パラメーターを予測可能なままにする:一貫性のあるパラメータスキーム(例:?orderId=12345)を定義します。
  • URL 内の機密データを回避:秘密鍵や個人データをディープリンクの URL に直接配置しないようにします。
  • ディープリンクをテスト:本配信前確認を送信し、アプリがインストールされているデバイスでディープリンクをクリックします。
  • 実際のデバイスで検証:ユニバーサルリンクやトラッキングリンクの解決動作は、シミュレーターではなく物理デバイス検証する方が信頼性が高くなります。
  • アプリサイドのルーティングを検証:ディープリンクで予想される画面が開かない場合は、アプリサイドのルーティングと URL の形式(ホスト/パス/クエリおよび URL エンコーディング)を検証します。
  • アプリの初期化を念頭に置く:アプリリンクやユニバーサルリンクの動作は、アプリがインストールされ、1 回以上開かれた後に最も信頼性が高くなります。

トラブルシューティングと FAQ troubleshooting-faq

ディープリンクをタップしてもアプリが開きません。
  • URLが、アプリが処理するように登録されているホストおよびパスのパターンと一致することを確認してください。これには、リンクトラッキングが有効な場合の追跡されるクリックパス(例:/ee/v1/mclick/ の下にあるパス)も含まれます。
  • iOS のユニバーサルリンクやAndroid のアプリリンクの場合は、ドメインの関連付け(AASA/assetlinks.json)が正しく設定され、到達できることを確認してください。
  • 実際のデバイスでテストしてください(シミュレーター/エミュレーターでは、リンクの関連付けに関する動作が異なる場合があります)。
アプリは開きますが、期待される画面に移動しません。
  • アプリサイドのルーターが URL のパス/クエリを正しく解析することを確認してください。
  • URL エンコーディングを確認してください。予約済みの文字は URL エンコードされている必要があります。
  • パラメーター名と値が、ルーターの想定と一致することを検証してください。
アプリがインストールされていない場合はどうなりますか?
  • 同じ HTTPS URL を web サイトで指定できる場合、アプリがインストールされていない際に、そのリンクをフォールバックとして web ページで開くことができます(web の宛先やルーティングを適切に設定してください)。
パラメーターに特殊文字を安全に含めるにはどうすればよいですか?
クエリパラメーターの値を URL エンコードしてください。 これにより、配信とレンダリングの問題を軽減し、アプリの解析エラーを防ぐことができます。
エンドツーエンドのテストはどのように行う必要がありますか?
  • ディープリンクを含む本配信前確認を作成し、iOS デバイスや Android デバイス(アプリがインストールされている場合とされていない場合の両方)でクリックしてください。

  • 以下の点について検証してください。

    • 最終的なメールまたは SMS のリンク値(ホスト/パス/クエリ)
    • OS レベルでの関連付け(ユニバーサルリンクやアプリリンクを使用している場合)
    • アプリ内でのルーティング結果
1 つのアプリがありますが、組織用に異なるサブドメインがあります。 サブドメインごとに AASA と assetLinks.json の作成をリクエストする必要がありますか?
はい。 デリゲートされたすべてのサブドメインでディープリンクが必要な場合は、その機能をサポートする必要がある各サブドメインに対する AASA と assetlinks.json の設定をリクエストしてください。
設定する URL には、ディープリンク形式(例:appname://path)を使用する必要がありますか?
カスタム URL スキーム(例:appname://path)を使用できますが、推奨されるアプローチはユニバーサルリンクまたはアプリリンク(例:https://)で、このページの設定および実装の節で説明されている HTTPS ベースの設定と一致します。
URL の UTM パラメーターは、分析用にモバイルアプリで使用できますか?
はい。 Journey Optimizer で設定した UTM パラメーターは、アプリが mclick の URL に対して GET を実行した際に Location ヘッダーで返される最終的な URL に含まれるので、アプリ内分析に使用できます。
/ee/v1/click/ URL のユーザーエクスペリエンスは何ですか?
リンクは、このページで説明されている mclick フローを通じたアプリのディープリンクとして処理されるのではなく、デバイスのデフォルトの web ブラウザーで開かれます(標準的なクリックの追跡の動作)。
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