你的 App ROAS 仍在計入 Apple 和 Google 已退款的購買,請改用淨 ROAS 出價
退款很少回傳到廣告平台,因此 ROAS 仍在計入 Apple 和 Google 早已退款的購買。本文說明 Firebase、Google Ads 和 AdAttributionKit 在哪些環節遺漏退款、這會造成多少損失,以及如何為 App 建立淨 ROAS。

重點摘要
- Firebase 自動收集的 app_store_refund 事件只在 Google Play 為應用程式內購買退款時觸發。Google 將其標示為僅限 Android,因此 App Store 退款永遠不會減少 Firebase 已記錄的 in_app_purchase 收益。
- 對於 Android App,Google Ads 會自動追蹤 Google Play 應用程式內購買,並將購買金額作為轉換價值回報。對於訂閱,它只記錄首次購買和首次付款金額。
- Google Ads 轉換調整可以重新設定某次轉換的價值,或將其撤回為零。Google 表示,只有隨附交易 ID 傳送的線上轉換才能調整。
- Apple 的 AdAttributionKit 在首次啟動後有三個轉換時間範圍:第 0 至 2 天、第 3 至 7 天和第 8 至 35 天,而精細轉換值只會出現在第一個回傳中。
- 淨 ROAS 等於廣告歸因收益減去這些購買的退款,再除以廣告支出。如果某個廣告活動的買家退款較多,即使它的總 ROAS 較高,依淨 ROAS 排名也可能較低。
- 退款訊號送達的是開發者的伺服器,而不是廣告聯播網。Apple 會傳送 REFUND 類型的 App Store 伺服器通知,Google Play 則透過即時開發人員通知和 Voided Purchases API 回報作廢購買,後者可回溯 30 天。
- 只有兩種退款流程允許開發者提交證據:Apple 的 CONSUMPTION_REQUEST,須在 12 小時內回應;以及透過 orders.reviewrefund 進行的 Google Play 退單審查,須在 24 小時內回應。
廣告後台會在應用程式內購買發生的那一刻入帳,而且大多數後台從不沖回。當 Apple 或 Google 之後為這筆購買退款時,錢會從你的撥款中扣除,卻仍留在廣告活動的收益裡,於是 ROAS 繼續把功勞記在促成這筆銷售的廣告上。淨 ROAS,也就是扣除退款後的收益除以廣告支出,才是告訴你哪些廣告活動真正賺錢的數字。你必須自己建立它,因為退款訊號落在你的伺服器上,而不是廣告聯播網裡。
為什麼不計退款時 ROAS 會高估收益
ROAS 是歸因收益除以廣告支出。收益這一側通常只寫入一次,也就是在購買時,由裝置上的 SDK 或從商店匯入的轉換資料寫入。退款是之後發生在裝置之外的事件,發生在客戶與 Apple 或 Google 之間。除非有機制把它帶回同一個廣告活動,否則這筆購買會一直被計入。
如果退款很少且分布平均,這不會造成什麼問題。但通常並非如此。一個承諾超出 App 實際能力的廣告素材、一個投放給錯誤受眾的優惠,或一個充斥盜刷卡的流量來源,都會讓退款集中到特定廣告活動上。總 ROAS 正好掩蓋了這種差異。
什麼是淨 ROAS?
淨 ROAS 是同一個比率,只是把退款從收益中扣除:歸因於某個廣告活動的收益,減去這些購買的退款,再除以該廣告活動的成本。有些團隊還會扣除商店抽成和稅金。無論你還扣除什麼,退款都是會改變哪個廣告活動勝出的那一部分。
退款在商店與廣告後台之間的哪些環節遺漏
Firebase 記錄 Google Play 退款,不記錄 App Store 退款
Google 的自動收集事件清單中包括 in_app_purchase,它會在使用者完成由 Apple App Store 或 Google Play 處理的應用程式內購買(包括首次訂閱)時觸發。與之對應的退款事件 app_store_refund 會在 Google Play 為應用程式內購買退款時觸發,Google 將其標示為僅限 Android。app_store_refund 和自動訂閱事件都不會匯出到 BigQuery。
同一頁面也說明,Analytics 不會自動評估付費 App 的購買收益和退款,且回報的收益可能與 Google Play Developer Console 中的資料不同。在 iOS 上,沒有任何自動機制會從 Firebase 已記錄的購買中扣除 App Store 退款。
Google Ads 將購買金額記為轉換價值
對於使用應用程式內結帳的 Android App,Google Ads 可以追蹤點擊過你廣告的使用者的應用程式內購買,不需要在 App 中加入程式碼。Google 表示,購買金額會自動作為轉換價值回報。對於訂閱,只有首次購買會被記錄為轉換,也只記錄首次付款金額。該說明文章沒有提到退款。
Google Ads 確實有更正工具。轉換調整可以在不改變轉換次數的情況下重新設定轉換價值,也可以撤回轉換,將其價值設為 0.00,並同時作用於 CPA 和 ROAS 出價策略。Google 表示,只有使用了交易 ID 的線上轉換才能調整,且已撤回的轉換不能再次調整。該頁面沒有提到 App 轉換,因此在依賴調整功能之前,請先確認你的轉換設定支援調整。
Apple 的廣告回傳在許多退款到來之前就已關閉
AdAttributionKit 有三個轉換時間範圍,從使用者首次啟動 App 時開始計算:第 0 至 2 天、第 3 至 7 天和第 8 至 35 天。在時間範圍結束之前,App 都可以更新轉換值。之後 Apple 會在隨機延遲後傳送回傳,第一個回傳延遲 24 至 48 小時,第二個和第三個延遲 24 至 144 小時。如果 App 提前鎖定了某個值,系統會忽略該時間範圍內的後續更新。
精細轉換值只會出現在第一個回傳中。之後的回傳最多只帶有粗略值。第 1 天發生、第 10 天被 Apple 退款的購買,已經在一個無法再更改的回傳中回報過了。
| 評估管道 | 購買時記錄的內容 | 購買被退款後會發生什麼 |
|---|---|---|
| Firebase in_app_purchase,Android 和 iOS | 產品 ID、價格、價值、幣別、數量 | Android:觸發 app_store_refund。iOS:沒有自動退款事件 |
| Google Ads,Google Play 轉換,Android | 將購買金額作為轉換價值,訂閱只計首次付款 | 未說明。調整可以重新設定或撤回隨交易 ID 傳送的線上轉換 |
| AdAttributionKit 回傳,iOS | 每個時間範圍一個轉換值,只有第一個是精細值 | 該時間範圍的回傳準備好後即固定 |
| 你自己的伺服器 | 每一筆交易,都與你的使用者 ID 關聯 | Apple REFUND 通知,Google Play 作廢購買訊號 |
App 退款何時到來,由誰決定
退款沒有統一的時程。有些在購買後幾小時內到來,有些則在幾個月後,這就是為什麼在廣告活動報表看似已定案之後,某個同期群的 ROAS 仍會持續下滑。
| 退款途徑 | 商店自己描述的時間 | 由誰決定 | 你伺服器上的訊號 |
|---|---|---|---|
| Google Play 退款申請 | 48 小時內客戶向 Google 申請。之後 Google 會請他們聯絡開發者 | 先是 Google,然後是你 | 透過 RTDN 和 Voided Purchases API 收到作廢購買 |
| Google Play 開發者退款 | 你隨時可以發起 | 你 | 作廢購買(如果你撤銷了權益) |
| Google Play 未經授權扣款檢舉 | 交易後 120 天內 | 作廢購買 | |
| Apple 退款 | 在 reportaproblem.apple.com 申請,24 至 48 小時內更新進度 | Apple | 帶有 revocationReason 的 REFUND 通知 |
| Apple 消費資訊請求 | 你須在 12 小時內回應 | Apple,依據你的資料 | CONSUMPTION_REQUEST |
| Google Play 退單審查 | 你須在 24 小時內透過 orders.reviewrefund 回應 | 銀行,在審閱你的證據之後 | 退單成立時收到作廢購買 |
忽略退款的 ROAS 會讓你損失多少錢
以兩個預算相同的廣告活動為例。下面的數字僅供說明,並非基準。
| 項目 | 廣告活動 A | 廣告活動 B |
|---|---|---|
| 廣告支出 | $10,000 | $10,000 |
| 歸因購買收益 | $14,000 | $12,500 |
| 總 ROAS | 1.40 | 1.25 |
| 該收益中的退款占比 | 18% | 4% |
| 扣除退款後的收益 | $11,480 | $12,000 |
| 淨 ROAS | 1.15 | 1.20 |
總 ROAS 告訴你把預算轉到 A。淨 ROAS 則顯示 B 從每一美元中留下了更多。如果你的出價以總價值為準,演算法會不斷找到更多像 A 那樣的買家,因為從來沒有任何訊號告訴它這些人要求退款了。
廣告支出只是第一筆帳單。一位退款的客戶還會留下這些成本:
- 佣金。按購買計酬的聯盟行銷、創作者和網紅合作通常依銷售額支付,而不是依扣除退款後的金額支付,除非合約另有約定。
- 運算、API 呼叫和儲存空間。在存取權被撤銷之前,退款使用者一直在使用你的伺服器、你付費的第三方 API 和你的儲存空間。這些帳單不會退還。
- 退單成本。自 2026 年 8 月 3 日起,Google 將退單的購買金額加上銀行手續費轉嫁給開發者,因此爭議較多的 Android 流量來源造成的損失會超過它流失的收益。
- 目標設定變差。以已退款購買訓練的價值出價,會去尋找更多類似那些已獲退款的人。

某個廣告活動退款率高,是詐欺還是承諾落空?
通常是承諾的問題。Apple 的 revocationReason 會告訴你一筆退款屬於哪一類。0 表示 App Store 因其他原因為該交易退款,例如誤購。1 表示退款是因為你的 App 中存在實際的或使用者認為存在的問題。來自同一個廣告活動的大量 1,通常指向廣告素材或它引導進入的新手導覽流程。Google Play 上大量的未經授權扣款檢舉,則指向流量來源。
如何為 App 建立淨 ROAS
起步不需要新工具。你需要的是幾項你的資料可能還沒有做的串接。
- 把廣告活動綁定到使用者。在安裝時把歸因結果與你自己的使用者 ID 一起儲存,這樣之後的任何交易都能追溯到某個廣告活動。
- 把交易綁定到使用者。在 iOS 購買中設定 appAccountToken,在 Google Play 購買中設定經過混淆的帳戶 ID,這樣每個商店事件都能準確對應到你的使用者,不必猜測。
- 在伺服器上監聽退款。處理來自 App Store Server Notifications V2 的 Apple REFUND 通知和 Google Play 的作廢購買通知。定期輪詢 Voided Purchases API 作為備援,因為它只會傳回過去 30 天內的作廢紀錄。
- 依購買同期群並列回報總值和淨值。把每筆退款計入帶來這筆購買的廣告活動和購買日期,而不是退款出現的那一天。
- 在平台接受更正的地方傳送更正。如果你的 Google Ads 轉換帶有交易 ID,就重新設定或撤回已退款的轉換。對於無法接受更正的平台,改為依據淨值數字調整其預算。
- 準時回應兩種證據請求。RefundHalt 會在 12 小時時限內回應 Apple 的 CONSUMPTION_REQUEST,在 24 小時內回應 Google Play 的退單審查,讓你可以申辯的退款都能呈現你這一方的說法。
退款應依購買日期還是退款日期計入?
做廣告活動決策時,依購買日期。退款是關於某筆購買的事實,而這筆購買屬於某個廣告活動。財務依退款日期入帳,這就是為什麼你的 ROAS 報表和撥款在任何一天都對不上。兩種檢視都要保留,並分別標明。
同期群的淨 ROAS 什麼時候才算定案?
它是分階段確定的。Google 的自助退款時限在 48 小時後結束,Apple 告訴客戶退款申請會在 24 至 48 小時內有進度更新,而 Google Play 未經授權扣款檢舉可在交易後 120 天內提出。把早期數字視為暫定值,之後再重新檢查同一個同期群。
常見問題解答
- Firebase 會從應用程式內購買收益中扣除退款嗎?
- 只針對 Google Play。Firebase 自動收集的 app_store_refund 事件會在 Google Play 為應用程式內購買退款時觸發,Google 將其標示為僅限 Android。App Store 退款沒有對應的自動事件,而且 Google 表示 Analytics 不會自動評估付費 App 的購買收益和退款。
- Google Ads 會從轉換中移除已退款的應用程式內購買嗎?
- Google 自己關於 Google Play 轉換的文章並沒有這樣說。文章表示購買金額會作為轉換價值回報,且沒有提到退款。Google Ads 轉換調整可以重新設定或撤回某次轉換,Google 表示只有隨附交易 ID 傳送的線上轉換才能調整。
- AdAttributionKit 回傳能反映退款嗎?
- 只有當退款發生在該轉換時間範圍的回傳準備好之前才能。這些時間範圍是首次啟動後的第 0 至 2 天、第 3 至 7 天和第 8 至 35 天。一旦時間範圍結束或值被鎖定,Apple 會忽略該時間範圍內的後續更新。
- 如何計算 App 的淨 ROAS?
- 取歸因於某個廣告活動的收益,減去這些購買的退款,再除以該廣告活動的廣告支出。以 Apple 的 REFUND 通知和 Google Play 的作廢購買訊號作為退款紀錄,把每筆退款計入帶來這筆購買的同期群。
- 我能對拉低 ROAS 的退款提出申辯嗎?
- 只有兩種可以。Apple 的 CONSUMPTION_REQUEST 讓你在 12 小時內傳送消費資料,透過 orders.reviewrefund 進行的 Google Play 退單審查給你 24 小時。Google Play 的 48 小時內退款、客服退款和作廢購買,都是在沒有你參與的情況下決定,銀行退單則是最終結果。
資料來源與延伸閱讀
- Firebase Help: [GA4] Automatically collected events
- Google Ads Help: Measure app conversions with Google Play
- Google Ads Help: About conversion adjustments
- Apple Developer Documentation: Receiving postbacks in multiple conversion windows
- Apple Developer Documentation: notificationType
- Apple Developer Documentation: revocationReason
- Google Play Developer API: Voided Purchases API
- Google Play Help: Apps, games, and in-app purchases refund policies
- Google Play Help: Learn about Google Play refund policies
- Apple Support: Request a refund for apps or content that you bought from Apple
RefundHalt
App Store 與 Google Play 的退款自動駕駛
繼續閱讀
客戶收據上的 App Store 訂單 ID 能告訴你他們買了什麼,以及 Apple 是否已經退款
Apple 的 Look Up Order ID 端點能把客戶 App Store 收據上的訂單 ID 轉換成已簽署的交易,其中包含退款日期與原因。本文說明如何用它處理退款郵件、它做不到什麼,以及 Google Play 的訂單 ID 有何不同。
iOS 網頁結帳的退款不再歸 Apple,而是歸你,銀行爭議也一樣
美國的 iPhone App 現在可以把買家導向網頁結帳。Apple 表示無法協助處理這類銷售的退款,於是退款處理、退單以及 $15 的爭議費都轉到了你身上。本文說明哪些地方變了、要花多少錢,以及如何減少爭議。