Skip to content

合作夥伴 Postback 整合驗證 ​

對象: 在聯盟後台設定 postback 的人,以及確認設定已就緒的 AM 或 BD。請在第一個廣告系列上線之前跑一遍本頁。

Postback 是發往 https://mmp.revosurge.com 的普通 HTTP GET 呼叫,所有內容都放在查詢字串裏。

規則分兩級

必要規則會阻止上線。建議規則不會,但每一條都有具體的代價 — 通常是歸因質素,或對帳能力。

規則 ID(PB-R-01、PB-O-01…)是穩定的。請在工單和發給合作夥伴的電郵中引用它們。

Postback 的失敗是刻意靜默的

RevoSurge 絕不會因為負載問題而回 4xx。一條沒有可用身分識別的 postback 會回 200 {"status":"ignored"} — 你的後台會把它記為成功,而這筆轉換就此消失。本頁大部分內容都是因為這一個行為而存在的。

必要規則 ​

ID規則失敗會導致甚麼
PB-R-01每次呼叫都帶上正確的 k403。甚麼都不會被記錄。
PB-R-02端點路徑與事件相符 — 事件類型由路徑決定event 宏只作交叉核對記錄,絕不用於判定類型。把充值發到註冊路徑,它就永遠是一次註冊。
PB-R-03click_id 與 user_id 至少有一個200 {"status":"ignored"}。在你的日誌裏看來是成功,但這筆轉換並不存在。
PB-R-04click_id 或 user_id 中沒有未替換的宏字面值 {sub1} 會令整條 postback 被丟棄。在其他欄位中則只損失該欄位。
PB-R-05首次充值發到 /first-deposit,之後的充值發到 /repeat-deposit首存(FTD)數會雙向出錯,而 FTD 通常正是廣告系列的出價目標。
PB-R-06ts 是 unix 毫秒,不是秒秒級值會被自動修正,並當作契約偏離上報。不會有任何失敗,但你依賴的是我們的修正,而不是傳送你真正想表達的值 — 而且告警會落到你的客戶經理那邊,而不是你。
PB-R-07/first-deposit、/repeat-deposit 和 /revenue 都傳送 amount,且正負號正確(/registration 與 /app-launch 不帶金額)沒有可報告的收入,也無從計算 ROAS。
PB-R-08event_id 全域唯一、穩定,並在重試時原樣重複沒有它,去重會退回到 txid,再退回到查詢字串雜湊。任何欄位次序有變的重試都會變成第二筆轉換。
PB-R-09503 要重試;200 和 403 不重試503 代表寫入未被確認 — 除非你重發,否則這筆轉換就會遺失。缺少 event_id 時重試 200 有重複計數的風險。
PB-R-10註冊的生產 URL 中不含 dryrun每條 postback 都只回傳判定結果,甚麼都不記錄。
PB-R-11user_id 與你在 Web 追蹤器和 S2S 中使用的識別碼相同同一玩家變成兩份檔案。充值無法關聯到帶來它的那次點擊。
PB-R-12Postback 從你的後台伺服器端觸發,而不是從瀏覽器k 金鑰以明文出現在 URL 中 — 瀏覽器觸發的 postback 會把它暴露在網頁原始碼裏。用戶端呼叫亦會被廣告攔截器攔掉,並在重新整理時重複觸發。
ID規則代價是甚麼
PB-O-01傳送 ctxclick_id 缺失或過期時沒有後備歸因。
PB-O-02傳送 txid 作為第二去重鍵一旦 event_id 缺失,去重就會降級為查詢字串雜湊,這很脆弱。
PB-O-03以真實值填寫 hash_id / hash_name 和 source_id / source_name沒有按連結或流量來源的細分。廣告系列表現欠佳時,你無法分辨是哪個投放位帶來了這些充值。
PB-O-04傳送 country地區報表較弱;我們只能退回到推斷。
PB-O-05把你自己的事件類型宏作為 event 傳送失去能發現端點用錯(PB-R-02)的交叉核對。
PB-O-06在你知道時聲明 is_new_customer 和 first_deposit_ts我們無法用自己的首存判定來印證你的首存分類。
PB-O-07若你採用分攤歸因模型,聲明 attribution_share歸因會被當作全額歸因處理,同時高估 RevoSurge 和你自己的貢獻。

必要項修復方式 ​

PB-R-01 — 金鑰錯誤或缺失 ​

修復: 在 URL 中加上 k=<your postback key>。金鑰在對接時發放 — 如果你沒有,請向你的客戶經理索取。

請當作共用密鑰處理:它只放在你後台保存的伺服器端 postback URL 中,絕不能出現在玩家瀏覽器看得到的任何地方。

PB-R-02 — 事件用錯了端點 ​

修復: 使用與事件相符的路徑:

事件路徑
玩家帳號建立/v1/pb/{partner}/registration
首次充值/v1/pb/{partner}/first-deposit
之後的充值/v1/pb/{partner}/repeat-deposit
收入分成結算/v1/pb/{partner}/revenue
App 啟動(每一次啟動)/v1/pb/{partner}/app-launch

沒有其他路徑。App 安裝不是啟動,也沒有對應的 postback 路徑 — 安裝經由你的 MMP 回傳。從啟動路徑發出的註冊,或從註冊路徑發出的啟動,都會被永久錯誤歸類,與存款走錯路徑一樣。

/revenue 上的負 amount 是合法的 — 在收入分成之下,虧損的期間就是一次負的收入事件。如果你需要專門上報退款或追回(chargeback / clawback),請與你的客戶經理議定表示方式,而不要想當然地以為一條負收入會被這樣解讀。

把 event 宏設對並沒有幫助 — 它只作交叉核對記錄,絕不用於判定類型。只有路徑才算數。

PB-R-03 — 沒有可用的身分識別 ​

修復: 傳送 click_id(首選)或 user_id。至少有一個必須解析為真實值。

請對照你的日誌檢查,而不是憑假設:回應是 200,所以你的後台幾乎肯定會把這些報告為已送達。

PB-R-04 — 未替換的宏 ​

修復: 觸發一條測試 postback,然後讀回儲存下來的值。如果 click_id 以字面值 {click_id} 或 {sub1} 到達,代表你後台裏的宏名與該平台實際替換的宏名不一致。

在 click_id 和 user_id 以外的欄位中,未替換的宏不會導致 postback 被丟棄:該欄位會被略去,但字面值會保留下來供診斷 — 而這正是排查哪個宏名寫錯時要看的東西。

這是上線時最常見的失敗,因為一個在設定畫面裏看來沒問題的模板,只有在真實轉換經過它時才會暴露出來。

PB-R-05 — 首次與後續充值走同一路徑 ​

修復: 你的後台必須知道一筆充值是否是該玩家的首存,並路由到對應的路徑。如果做不到,就把所有充值都發到 /repeat-deposit 並告知你的客戶經理 — 少算的首存可以補救;發到註冊路徑的充值則無法補救。

PB-R-06 — 時間戳用了秒 ​

修復: ts 和 first_deposit_ts 都是 unix 毫秒。把 10 位數的值乘以 1000。

秒級值會被偵測、修正,並視為契約偏離 — 事件以修正後的時間儲存,同時觸發告警。所以它不會在你的日誌裏顯示為失敗,但也不是悄無聲息地出錯:你的客戶經理會收到通知。

另外,超過 30 天的舊事件或超過未來 60 分鐘的事件會被記錄並標記,絕不會被拒絕。

PB-R-07 — 金額缺失或正負號錯誤 ​

修復: 在每一條充值和收入 postback 上,把 amount 作為帶正負號的十進位數傳送。結算幣別為 USD,且不作任何換算,所以請傳送 USD。

在收入分成之下,負值是合法且預期之內的:營運方虧損的期間就是一次負的收入事件。

PB-R-08 — 沒有穩定的 event_id ​

修復: 在你自己的系統中為每筆轉換產生一個全域唯一的 ID,並作為 event_id 傳送。任何重試都傳送完全相同的值。

去重優先次序依次為 event_id、txid,最後是查詢字串的逐位元組雜湊。雜湊後備並不是安全網:改變參數次序、新增一個欄位,或對某個值重新編碼,同一筆轉換就會被計為兩次。 這一點在 /app-launch 上最要緊:同一玩家會多次啟動 App,若沒有 event_id 和 ts,兩次啟動可能產生相同的 URL,被合併成一條。

PB-R-09 — 重試行為錯誤 ​

修復:

回應意思是否重試
200 {"status":"ok"}已寫入持久化儲存否
200 {"status":"ignored"}沒有可用的身分識別 — 請修正負載否,結果會完全一樣
503 {"status":"unavailable"}寫入未被確認是
403金鑰錯誤或 IP 不獲允許否

200 確認的是寫入已完成,而不只是我們收到了請求。

PB-R-10 — dry run 沒有關掉 ​

修復: 從後台註冊的 URL 中移除 dry run 參數。dryrun、dryrun=1 和 dryrun=true 都會被接受,所以請搜尋 dryrun,而不是某個確切的字串。dry run 回應帶有回應標頭 X-Ingest-Mode: dryrun,且不記錄任何內容。

PB-R-11 — 識別碼與你的其他追蹤不一致 ​

修復: 在 Web 追蹤器(user_id)、S2S(identity.client_user_id)和 postback(user_id)中,每個玩家使用同一個識別碼。同樣的字串、同樣的大小寫,不要一處帶前綴而其他地方不帶。

這一項出錯時每條 postback 都會成功,只是數字是錯的。事後修正亦不會合併已經拆分開的檔案。

PB-R-12 — 從瀏覽器觸發 postback ​

修復: 使用你聯盟平台的伺服器端 postback 功能來觸發。像素或用戶端呼叫會把 k 金鑰放進網頁原始碼,會被廣告攔截器攔掉,而且玩家每次重新整理都會重複觸發。

RevoSurge 亦可能把 postback 限制在你的出口 IP 白名單內 — 請向你的客戶經理確認是否已為你啟用,因為啟用後來自瀏覽器的呼叫會以 403 失敗。

PB-O-01 — 沒有 ctx ​

修復: 傳入你的平台提供的投放情境宏。click_id 缺失或過期時,歸因正是靠它還原的。

PB-O-02 — 沒有 txid ​

修復: 把你的交易 ID 作為 txid 傳送。它是第二去重鍵,也是你們財務團隊對帳時依據的欄位。

PB-O-03 — 分類欄位為空 ​

修復: 把 hash_id / hash_name 對應到你的連結或帳號識別碼,把 source_id / source_name 對應到你的流量來源。

請傳送真實值,而不是佔位符。在這裏填一個常數比留空更糟,因為它看來已經填好,卻會悄悄破壞所有以它為基礎的細分報表。

PB-O-04 — 沒有 country ​

修復: 如果你的平台提供玩家國家,請傳送它。

PB-O-05 — 沒有 event 宏 ​

修復: 把你自己的事件類型宏作為 event 傳送。它絕不會改變轉換的分類方式 — 那是端點路徑的職責 — 但端點用錯這類問題,正是靠它在扭曲一整個月的報表之前被發現。

PB-O-06 — 沒有首存聲明 ​

修復: 當你的系統知道 is_new_customer 和 first_deposit_ts 時,請傳送它們。我們讀不懂的值會記為空值,而不是 0。

PB-O-07 — 沒有歸因份額 ​

修復: 如果你在多個來源之間分攤歸因,請在 attribution_share 中聲明你的份額。它會作為你方的聲明被記錄 — 絕不會被換算標度,也不會被乘進 amount。

本頁無法檢查的兩件事 ​

  • 你的後台在真實轉換發生時確實會觸發。 即使平台的 postback 規則已被停用、套用到錯誤的廣告系列,或被一個永遠不會符合的條件過濾掉,你貼進瀏覽器的 URL 依然能通過本頁的每一條規則。只有上線測試才能證明它確實會觸發。
  • 你的總數與我們的一致。 歸因窗口、分攤歸因模型和結算時點都會合理地改變數字。請按 event_id 和 txid 對帳,而不是比較總數。

下一步 ​

所有必要規則都通過後,前往交付與上線。