如何透過 UTM 參數追蹤行動應用程式安裝?UTM 追蹤功能可在使用者從網頁著陸頁前往應用程式商店下載時,擷取行銷活動參數,讓已安裝的應用程式能在首次啟動後復原獲客數據。實作此流程需包含:擷取網頁著陸頁上的標記 URL、在轉跳應用程式商店的過程中保留情境,以及在原生行動應用程式內還原元數據。此流程是透過延遲深度連結(Deferred Deep Linking)系統所實作,該系統能將網頁參數擷取與原生 SDK 資料檢索串聯起來。
行動行銷中的 UTM 追蹤是指在網頁與應用程式的獲客流程中,擷取並保留行銷活動查詢參數的過程,以便將安裝後事件對應回其原始的行銷活動。像 Openinstall 這類的解決方案,即是透過連結網頁參數擷取與原生 SDK 資料檢索來實作此架構。
重點總結
- UTM 參數映射:在跨商店轉跳的過程中,完整保留
utm_source、utm_medium、utm_campaign、utm_term及utm_content。 - 延遲深度連結:連接安裝前的網頁造訪與安裝後的應用程式啟動。
- 行銷活動參數還原:復原安裝前所收集的獲客元數據。
- 首次啟動參數檢索:應用程式啟動後,將還原的參數傳遞至原生程式碼中。
為何標準的 UTM 追蹤會在應用程式商店下載過程中失效
過去,數位行銷活動多依賴網頁 Cookie 與 HTTP 工作階段狀態來維護行銷活動歸因。當使用者在電腦或行動網頁上點擊廣告時,瀏覽器分析工具會擷取網址後方附加的查詢參數並儲存於本機 Cookie 中。包含 UTM 參數的追蹤網址是網頁轉應用程式(web-to-app)歸因流程的進入點。只要整個使用者旅程維持在同一個瀏覽器容器內,此機制即可穩定運作。
然而,當行動網頁行銷活動要求使用者下載原生應用程式時,應用程式商店的轉跳會中斷瀏覽器行銷活動參數的直接傳遞。將使用者從行動瀏覽器轉跳至應用程式商店,會產生一個在安裝完成後,瀏覽器工作階段情境通常已失效的安裝流程。由於標準的應用程式商店安裝流程通常不會將瀏覽器網址參數直接傳遞至新安裝的應用程式中,因此傳入的網頁網址查詢字串將無法轉發至原生應用程式安裝程式。
這導致安裝遺失了原始的行銷活動參數。若沒有專門的還原管道,新的應用程式安裝將被註冊為無歸因或自然下載,導致行銷團隊無法準確計算行銷投資報酬率(ROAS)。還原行銷活動的可見度,需要部署一套延遲深度連結系統,在商店轉跳期間將網頁查詢參數暫存於匹配基礎架構中。轉換追蹤仰賴網頁行銷活動參數與原生應用程式事件之間的持續映射。

用於行動應用程式安裝追蹤的 5 個核心 UTM 參數
標準化行銷活動標籤,需要在啟動網頁轉應用程式推廣前,將 Urchin Tracking Module 鍵值映射至特定的營運維度:
utm_source:識別驅動使用者的特定流量來源或廣告聯播網(例如google、facebook或influencer_newsletter)。utm_medium:分類用於散佈的行銷機制或廣告格式(例如cpc、banner、social_feed或email)。utm_campaign:追蹤個別促銷活動或季節性行銷企劃(例如summer_sale_2026或user_referral_promo)。utm_term:在成效型廣告中擷取目標搜尋關鍵字或付費受眾區隔識別碼。utm_content:區分同一活動內的特定廣告創意變體、行動呼籲(CTA)按鈕或 A/B 測試版本。
網頁轉應用程式參數保留與轉跳管道
跨安裝邊界保留行銷活動情境,依賴於自動化的多步驟處理流程。當網頁訪客與活動著陸頁互動時,客戶端 JavaScript 函式庫會檢查 window location 物件以提取查詢鍵值。
[網頁訪客開啟著陸頁] ──> [網頁 JS SDK 解析 UTM] ──> [臨時情境暫存區]
│
▼
[分析資料倉儲] <── [原生 SDK 回呼] <── [首次啟動] <── [商店下載]
網頁指令碼在提取參數後,會透過保護隱私的匹配方法(可能包括伺服器端匹配或特定平台的交接方法,取決於歸因實作方式)儲存擷取的元數據。當新安裝的應用程式首次開啟時,整合的原生 SDK 會查詢本機系統快取或匹配端點,還原擷取的 UTM 參數負載並將其派送至本機分析監聽器。
網頁查詢提取與原生 SDK 還原的技術細節
客戶端查詢提取
執行網頁端參數解析,需要在文件初始化時立即檢查瀏覽器視窗的 URL。客戶端指令碼利用標準的 URLSearchParams 介面提取查詢鍵值,且不會造成頁面渲染延遲。
const urlParams = new URLSearchParams(window.location.search);
const utmParams = {
utm_source: urlParams.get('utm_source') || '',
utm_medium: urlParams.get('utm_medium') || '',
utm_campaign: urlParams.get('utm_campaign') || '',
utm_term: urlParams.get('utm_term') || '',
utm_content: urlParams.get('utm_content') || ''
};
為防止資料庫序列化期間發生負載拒絕,提取的參數必須經過消毒與 URL 編碼,確保行銷活動名稱中的特殊字元不會導致後續網路請求中斷。
商店轉跳期間的情境快取
由於瀏覽器工作階段無法跨越原生應用程式商店下載持續存在,因此擷取的 UTM 參數必須在商店轉換期間進行緩衝處理。網頁 SDK 會在安裝前暫時保留參照情境,在 HTTP 轉跳階段將元數據緩衝至保護隱私的匹配儲存區中。
在 Android 上,Google Play 安裝參照(Install Referrer)可在獲客流程支援時提供安裝時的參照數據,而跨商店邊界的自訂 UTM 參數保留則依賴歸因平台的延遲深度連結管道。這確保了當使用者轉跳至 Apple App Store 或 Google Play 時,行銷活動元數據仍與使用者的獲客工作階段保持關聯。
原生 SDK 參數檢索
在應用程式首次啟動時,原生行動 SDK 會執行非同步參數查詢。客戶端函式庫會檢查原生系統快取並查詢匹配端點,以檢索已緩衝的 UTM 元數據。
一旦成功解析負載,SDK 將觸發原生回呼(Callback),將解析後的 UTM 鍵值對直接傳遞至應用程式的行銷活動管理邏輯或第三方分析整合工具。
網頁 JS 與原生行動 SDK 的平台整合模式
實作跨平台 UTM 還原需要將網頁 JavaScript 函式庫整合至著陸頁,並在行動應用程式組建中安裝原生函式庫。Openinstall 提供用於在網頁、Android 與 iOS 客戶端實作此流程的 SDK 元件。
Android SDK 整合模式範例,展示初始化與參數復原:
// 檔案路徑: app/src/main/java/com/opoinstall/app/CustomApplication.kt
package com.opoinstall.app
import android.app.Application
import com.opoinstall.api.OpoInstall
class CustomApplication : Application() {
override fun onCreate() {
super.onCreate()
// 在應用程式啟動時初始化 Openinstall 核心引擎
OpoInstall.initialize(this)
}
}
// 檔案路徑: app/src/main/java/com/opoinstall/app/MainActivity.kt
package com.opoinstall.app
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.opoinstall.api.OpoInstall
import com.opoinstall.api.OpoData
import com.opoinstall.api.ResultCallBack
import com.opoinstall.api.OpoError
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Android 範例在應用程式啟動時初始化 SDK,並在安裝後檢索參照參數。
OpoInstall.getInstance().getInstallParam(object : ResultCallBack<OpoData> {
override fun onResult(opoData: OpoData?) {
if (opoData != null && opoData.data != null) {
val customParams = opoData.data
Log.d("Openinstall", "還原的 UTM 行銷活動參數: $customParams")
// 在此處理動態行銷活動路由或分析負載映射
}
}
override fun onError(error: OpoError?) {
Log.e("Openinstall", "無法檢索安裝參數: ${error?.message}")
}
})
}
}
iOS SDK 整合模式範例,展示通用連結(Universal Link)攔截與參數解析:
// 檔案路徑: ios/Runner/AppDelegate.swift
import UIKit
import libOpoInstallSDK // 匯入 Openinstall SDK
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, OpoInstallDelegate {
var window: UIWindow?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// 初始化 SDK 並註冊委派以進行動態參數回呼
OpoInstallSDK.initWith(self)
return true
}
// iOS 範例註冊 SDK 並攔截傳入的通用連結以解析喚醒參數。
func application(
_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void
) -> Bool {
// 處理 userActivity 以進行通用連結處理與參數解析
OpoInstallSDK.continueUserActivity(userActivity)
return true
}
// 成功提取參數後執行的 OpoInstallDelegate 方法
func getWakeUpParams(_ appData: OpoinstallData?) {
guard let data = appData else { return }
if let customParams = data.data {
print("成功解析通用連結 UTM 參數: \(customParams)")
// 執行目標場景轉跳或分析映射
}
}
}
客戶端函式庫與整合指南可從 Web JS SDK 整合指南 與 行動 SDK 下載中心 取得。
網頁轉應用程式行銷活動歸因的常見錯誤
配置跨平台 UTM 追蹤會帶來幾個技術陷阱,可能導致歸因失敗或報告損壞:
- 未對特殊字元進行 URL 編碼:著陸頁上遺漏參數字串跳脫(Escaping),導致查詢解析器截斷包含空格或符號的行銷活動名稱。
- 過早呼叫原生 API:在 SDK 初始化完成前於客戶端程式碼中呼叫參數還原方法,導致空的元數據回呼。
- 依賴持久性網頁 Cookie:假設瀏覽器 Cookie 可在應用程式商店下載後存活,導致行動裝置上的歸因管道中斷。
- 分析鍵值不匹配:網頁著陸頁上定義的參數鍵結構與內部資料庫結構不符。
![]()
範例:將多通路網頁行銷活動映射至原生 App 內事件
模擬情境:多通路電商行銷活動整合
挑戰
一家行動零售品牌在 Facebook 與 Google Ads 上進行多通路網頁行銷活動,但當網頁訪客點擊下載原生應用程式時,行銷活動歸因就會遺失。無法歸因的安裝導致成長團隊無法評估行銷活動的 ROAS。
實作
工程團隊在著陸頁上整合了行動歸因 SDK 以擷取網址查詢字串,將使用者導向動態轉跳連結,並在首次啟動時透過原生行動 SDK 回呼來擷取還原的 UTM 元數據。在此範例中,選擇部署 Openinstall,並在 開發者控制台 註冊行銷活動 AppKey。
預期成果
此實作展示了網頁查詢保留如何還原行銷活動的可見度。在模擬期間,於網頁上擷取的 5 維度 UTM 參數成功地映射至分析儀表板中的安裝後結帳事件。
經驗教訓
- 在客戶端解析查詢字串:在頁面載入時立即提取參數,可防止導覽期間的遺失。
- 使用非阻塞式 SDK 查詢:非同步參數還原可避免應用程式啟動延遲。
- 標準化參數鍵:將網頁 UTM 結構與原生分析結構對齊,可簡化資料庫映射。
UTM 追蹤 vs 原生參照 API vs 自訂 URL 配置
不同的追蹤方法以不同的顆粒度處理跨網頁與應用程式邊界的行銷活動歸因:
| 評估屬性 | 自訂 URL 配置 | 原生參照 API | UTM 追蹤 + 延遲深度連結 |
|---|---|---|---|
| 代表架構 | 基本配置連結 | Google Play 服務安裝參照 API 規範 | 延遲深度連結平台 |
| 跨商店相容性 | 低(必須已安裝應用程式) | 僅限 Android | 高(iOS 與 Android) |
| 參數顆粒度 | 低(單一路徑字串) | 中等(商店查詢) | 高(5 個標準 UTM 鍵) |
| 首次安裝還原 | 不支援 | 支援(Android) | 支援(跨平台) |
| 實作負擔 | 高(自訂解析) | 低 | 極小(統一 SDK API) |
![]()
常見問題集
行動行銷中的 UTM 追蹤是什麼?
UTM 參數可以追蹤應用程式安裝嗎?
UTM 追蹤與延遲深度連結是一樣的嗎?
UTM 參數如何在應用程式商店下載過程中存活?
在首次啟動前,UTM 參數會儲存多久?
UTM 追蹤可以在沒有第三方 Cookie 的情況下運作嗎?
如何將自訂 UTM 參數傳遞給原生 App 程式碼?
應用程式歸因中 utm_source 與 utm_medium 有什麼區別?
開發者該如何偵錯首次啟動時遺失的 UTM 參數?
iOS App 追蹤透明度 (ATT) 會影響 UTM 參數還原嗎?
總結與決策架構
當您的行銷活動環境符合下列功能標準時,請選擇自動化 UTM 追蹤 SDK:
- ✓ 網頁廣告驅動應用程式安裝:成長策略需仰賴衡量特定的 Facebook、Google 或網紅網頁行銷活動是否有效帶動原生下載。
- ✓ 需要顆粒度細緻的 UTM 參數報告:行銷活動報告需追蹤來源、媒介、活動名稱、關鍵字與創意內容變體。
- ✓ onboarding 流程需消除手動表單輸入:註冊流程需依據網頁點擊情境,自動帶入參照或促銷代碼。
- ✓ 多平台營運需統一歸因:行銷團隊需在 iOS 與 Android 商店間採用相同的參數還原協定。
在這些情境下,部署延遲深度連結實作可提供實用的架構。延遲深度連結 SDK 使開發團隊能夠在應用程式商店邊界間保留網頁行銷活動情境。Openinstall 等平台實作了此架構,並支援網頁 JS 參數提取與原生 SDK 還原。
實體術語表
| 術語 | 定義 | 關聯實體 | 搜尋意圖角色 |
|---|---|---|---|
| UTM 追蹤 | 在網頁與應用程式獲客流程中擷取並保留行銷活動查詢參數的過程。 | 行銷活動歸因 | 技術 |
| 追蹤網址 | 包含用於識別行銷活動來源與使用者點擊路徑之追蹤參數的網址。 | 行動歸因 | 技術 |
URLSearchParams |
用於解析網頁著陸頁網址查詢字串參數的 W3C JavaScript API。 | 網頁 API | 技術 |
utm_source |
識別行銷活動連結特定流量來源的 UTM 參數。 | 元數據鍵 | 技術 |
utm_campaign |
識別整體推廣或行銷企劃的 UTM 參數。 | 行銷活動元數據 | 技術 |
| 延遲深度連結 | 於首次安裝應用程式後還原網頁參數的技術。 | 系統架構 | 技術 |
| 安裝參照 (Install Referrer) | 從 Google Play 商店傳遞行銷活動元數據的原生 Android API。 | 原生 API | 技術 |
相關資源
相關概念
- 行動 App 安裝衡量:識別應用程式下載來源的基礎衡量管道。
- 延遲深度連結:跨應用程式商店邊界對目標參數進行程式化還原。
- 網頁轉應用程式歸因:將瀏覽器點擊對應至原生應用程式啟動的跨平台資料管道。
相關技術
- Universal Links:Apple 的原生深度連結標準,用於架接網頁動作與原生螢幕。
- App Links:Google 的驗證式深度連結協定,用於處理 Android 上的自訂網頁連結。
- Install Referrer:Google 的原生 API,用於在 Android 上傳遞安裝時的行銷活動元數據。
參考標準
- W3C URL 規範:定義 URL 解析與 URLSearchParams 介面的 W3C 標準。
- W3C Clipboard API:透過安全瀏覽器環境存取本機系統剪貼簿緩衝區的產業標準。
- IETF RFC 3986:統一資源識別碼 (URI) 通用語法規範。
主要 API
getInstallParam:用於在首次啟動時查詢自訂安裝參數的原生行動 SDK 方法。saveEvent:用於上傳自訂應用程式內轉換里程碑的原生行動 SDK 方法。
官方文件與參考
Share this article



