Skip to content

服务器到服务器 (S2S) 概述 ​

受众: 选择档位的广告主与 UA 经理(第 1–4 节)、负责实施的开发者(第 5–8 节)

服务器到服务器 (S2S) 追踪直接从你的后端向 RevoSurge 发送事件—— 全程不经过浏览器。这是让已确认的转化与收入完整送达我们的方式。

1. S2S 是什么,为什么重要 ​

Web 追踪器运行在访客的浏览器中。要了解用户从哪里来,那里是对的地方;但要了解用户花了多少钱, 那里就是错的地方。

浏览器事件会丢失。广告拦截器会过滤掉它们,浏览器的防追踪机制会丢弃它们, 用户还会在支付服务商跳转回来的途中关闭标签页。在典型的 iGaming 网站上, 浏览器上报的充值中有相当一部分根本不会送达。

你的后端没有这种问题。当支付服务商确认一笔充值时,这是你的服务器确定掌握的 事实。S2S 就是你把这份确定性交给我们的方式。

以下情况使用 S2S:

  • 充值、提现,以及任何附带金额的事件
  • 由后端而非浏览器确认的事件——KYC、账户状态、奖金
  • 任何准确性比便利性更重要的事件

S2S 不能替代 Web 追踪器

Web 追踪器知道广告点击;你的后端知道钱。RevoSurge 通过你的用户 ID 将两者 合并为同一个用户档案。大多数广告主两者同时使用——参见 追踪概述。

2. 两个档位:Basic 与 Full ​

S2S 分为两个档位。它们不是两个产品,也不是两个端点——相同的 URL、 相同的 API Key、相同的信封、相同的校验。档位描述的是你发送了事件目录中的多少事件, 进而决定我们能针对什么进行优化。

BasicFull
你发送的事件2 个必填、2 个建议完整目录——24 个事件
必填register · depositBasic 的全部事件,加上目录中的其余事件
建议login · deposit_initiated—
可统计的内容注册、首充玩家生命周期的每个阶段
可出价优化的目标注册、首充、充值金额Basic 的全部目标,加上玩家价值——GGR 与 LTV
解锁功能Registration Funnel · FTD 报表 · 基于充值的 ROASBasic 的全部功能,加上 预测 LTV · 流失 · Bonus Engine
需要金额吗?需要——deposit 始终要求 context.amount 和 context.currency需要,另外还需你发送的其他每个事件的必填字段
典型开发周期约 2–3 天约 3–5 天
适合希望尽快摆脱浏览器上报收入按玩家价值出价的运营商

Basic 覆盖的内容 ​

四个事件,其中两个必填:

事件状态原因
register必填在服务器端统计注册,不会被拦截
deposit必填统计充值。必须携带 context.transaction_id、context.amount 和 context.currency
login建议区分回访玩家与新玩家
deposit_initiated建议已发起但未结算的充值——显示玩家在收银台的哪一步流失

由于 deposit 按定义就携带 context.amount 和 context.currency,Basic 给你的是 充值金额,而不只是充值次数——ROAS 随档位自带,而不是额外的一步。

首充如何统计

S2S 中没有首充事件,也没有首充标志。你把每一笔充值都作为 deposit 发送,RevoSurge 将 FTD 判定为我们收到的该用户最早的一笔 deposit。

因此你无需自己对充值进行分类——但如果你已有存量玩家,请参阅下方的警告。

/first-deposit 与 /repeat-deposit 的区分属于 Partner Postback,那是另一套 API。如果你两者都在用, 请告知你的客户经理,以免两者被统计为各自独立的首充。

如果你已有存量玩家,第一周的 FTD 会虚高

FTD 是我们看到的最早一笔充值,而不是实际存在的最早一笔充值。在你 开启 S2S 的当天,一位存量玩家的下一笔充值是我们为其收到的第一笔—— 因此会被计为首充。

拥有大量存量用户的运营商会在第一周看到一个 FTD 峰值,但那并非真实的 获客。有两种处理方式:

  • 先回填。 在上线前通过 /v3/s2s/batch 发送你的历史充值, 让真正的首充已经在记录中。
  • 或与客户经理约定一个截止时间点,在首个报表周期内剔除已知玩家的 FTD。

请在启动以 FTD 为优化目标的广告系列之前决定采用哪种方式——否则出价会去追逐这个 峰值。

Full 增加的内容 ​

目录中的其余事件——验证、账户状态、提现、投注以及完整的奖金 生命周期。每个事件名称参见 7. 事件目录。

bet 是最重要的一个:它是唯一携带玩家价值的事件,且其他 追踪方式都无法发送它。没有 bet,预测 LTV 和流失模型就没有可建模的 数据。

从 Basic 升级到 Full 没有任何成本

无需迁移,也没有开关要切换。你发送更多事件,它们就开始送达。已统计的 事件不受影响。

3. 我需要哪个档位? ​

由你的广告系列目标决定。

优化目标档位
仅注册都不需要——Web 追踪器即可覆盖
首充Basic(如果你没有研发资源,也可用 Partner Postback)
充值金额Basic——deposit 要求携带金额,因此已包含在内
玩家价值——GGR、LTVFull

从 Basic 开始

两个事件就能让你摆脱浏览器上报的收入,这是目前能获得的最大一项准确性提升。 上线后再补齐其余事件——目录不会消失。

4. S2S vs Web 追踪器 ​

Web 追踪器S2S
运行位置访客的浏览器你的后端
实施方Web/前端团队后端团队
原生获取广告归因是仅当你传入 click_id 时
会被广告拦截器拦截可能否
收入数据的权威来源否是
典型事件page_view、register、login、deposit、enter_game标准 + iGaming 预设共 24 个事件
凭证追踪器 ID(TRA-AWP-…)API Key(rs-…)
设置工作量约 45 分钟约 1–2 天

S2S 解锁的功能 ​

开启 S2S 是后台设置向导 (Setup Wizard) 的第 3 步。它会解锁需要 可靠收入数据的模型:

功能作用档位
Registration Funnel在服务器端统计注册Basic
FTD 报表首充玩家,在充值实际结算处统计Basic
ROAS基于已确认收入的广告支出回报率Basic
LTV按用户、来源和广告系列计算的真实生命周期价值Full
pLTV预测生命周期价值——及早预测玩家价值Full
流失(Churn)流失风险评分Full
Bonus Engine由真实充值与奖金行为驱动的奖金定向Full

没有 S2S,这些功能将保持关闭,AdWave 的自动出价也只能基于 不完整的转化数据进行优化。

5. 后台设置——生成 API Key ​

5.1 前提条件 ​

  • ✅ 已为你的域名创建产品——参见 追踪概述 → 创建你的产品
  • ✅ 可在后台访问 Product(Admin/Master,或具有 Product 权限的角色)
  • ✅ 能够发起出站 HTTPS POST 请求的后端
  • ✅ 已为你的产品启用 iGaming 预设(如果你要发送 deposit 或任何其他 iGaming 事件)——请与你的客户经理确认(参见 7. 事件目录)

5.2 打开 S2S 面板 ​

登录 AdWave 或 DataPulse,进入 Product。有 两个入口可以进入 S2S 设置——显示的内容相同:

  • Setup Wizard → Step 3 · S2S Postback,或
  • Manage Product → 点击你的产品名称 → S2S 卡片

生成密钥之前,面板显示 API Key: No API key yet 和 S2S Status: Pending。

S2S Postback step in the Setup Wizard before an API key exists

5.3 生成 API Key ​

点击 Generate API Key。

密钥会立即签发并以掩码形式显示——rs-i●●●●●●●●——旁边有一个复制按钮(⧉)。 请立即复制并保存到你的密钥管理系统中。

S2S panel with an active API key and S2S Status Active

你也可以在 Manage Product 表格中生成密钥:没有密钥时 API Key 列显示 --,点击该行的操作按钮即可生成。签发后,该列会 显示有效密钥的数量(例如 1 Active)。

像对待密码一样对待 API Key

它用于认证对你账户数据的写入。请在服务器端将其保存在密钥管理系统中。 切勿将其放入前端代码、移动应用安装包、标签管理器或公开代码仓库。 生成新密钥不会自动吊销旧密钥——请有计划地进行轮换。

5.4 从后端发送事件 ​

Base hosthttps://datapulse-api.revosurge.com
端点/v3/s2s/event(单条) · /v3/s2s/batch(批量)
方法POST
认证请求头X-API-Key: <your key>
速率限制每个 API Key 每分钟 60 次请求

每个事件至少需要:

字段原因
identity.client_user_id你的稳定账户 ID——必须与你传给 Web 追踪器的 user_id 一致
identity.click_idRevoSurge 点击标识符。事件要归因到广告系列就必须携带——凡是你捕获到了点击 ID 的用户,都要发送。自然流量用户不会有。
event目录中的哪个事件
timestamp事件发生时间,Unix 毫秒(13 位)
context.ip_address用户的 IP,用于地理与反作弊信号

当 API 返回 400 时,最常缺失的就是这五个字段。

完整的请求/响应结构、字段类型及各事件的载荷: 服务器事件 API (v3)。

使用与 Web 追踪器相同的用户 ID

S2S 中的 client_user_id 必须与 Web 追踪器中的 user_id 完全相同。如果 两者不同,RevoSurge 会将其视为两个不同的用户,归因随之失效。这是 最常见的 S2S 集成错误。

click_id 从哪里来?

Web 追踪器会从落地页 URL 中保存它,并通过 getClickid() 提供。请在注册时 获取它,在你的数据库中与该账户关联保存,并随该用户的每个 S2S 事件一起发送。参见 Web 追踪器 SDK 参考。

6. 在后台中验证 ​

回到 Product → Setup Wizard → Step 3 · S2S Postback。

  • 一旦我们收到一个有效且已认证的事件,S2S Status 就会从 Pending 变为 Active。
  • Event Stream 栏会显示最近一个事件的名称、用户 ID 和时间戳。
  • 每个预设都会显示 Receiving / Errors / Not yet seen 的计数,目录中的每个事件 都会显示最近一次收到的时间。
  • 步骤徽标会从 Waiting for first S2S event 变为 S2S Postback active · n/23。

如果没有收到任何事件 ​

点击 Why are S2S events not flowing? 打开 S2S Help Center。它会针对你过去 24 小时的流量 运行六项检查。

S2S Help Center diagnostic panel

检查项检查内容未通过时
X-API-Key Authenticated认证成功(200)与返回 401 的 X-API-Key 请求占比密钥错误或已被吊销,或请求头名称不完全是 X-API-Key
Recent POST Activity是否有 POST 请求到达 /v2/s2s/event 或 /v2/s2s/batch你的后端没有调用该端点——检查出站防火墙规则和 URL
Schema Errors (400)因结构错误被拒绝的请求占比——并列出最常缺失的字段补上缺失字段。最常见的是 client_user_id、click_id、event_name、timestamp 或 ip_address
Rate Limit Hits (429)429 的占比——上限为每个 API Key 60 RPM通过 /v2/s2s/batch 批量发送事件,并加入带退避的重试
Server Errors (5xx)以 5xx 失败的请求占比我方的临时问题——使用指数退避重试。持续出现 5xx:请联系支持团队
Event Status Not Active该产品在 AdWave 中的事件状态是否为激活这是警告而非阻断——事件正在送达,但该产品尚未被标记为可用于广告系列

7. 事件目录 ​

两个预设共 24 个事件。每个事件在后台中显示为 Receiving、Errors 或 Not yet seen。

必须为你的产品启用 iGaming 预设

标准预设(9 个事件)对每个产品自动启用。iGaming 预设(15 个事件)由 RevoSurge 应要求 按产品启用。

deposit 是 iGaming 事件。在该预设启用之前,你发送的每一笔充值都会被拒绝并返回 422 EVENT_DISABLED,无论你的集成多么正确——而且这不是 你能在代码里修复的问题。

开始开发之前,请先让你的客户经理确认 iGaming 已启用。

⭑ 标记的是四个 Basic 事件。 其余均属于 Full。

标准预设(9 个事件) ​

分组事件
用户生命周期⭑ register · ⭑ login
验证与授权email_verified, phone_verified, marketing_consent_updated
应用生命周期app_install, app_open, app_uninstall, push_permission_updated

iGaming 预设(15 个事件) ​

分组事件
用户生命周期session_ended, vip_tier_changed
验证与授权kyc_completed, kyc_rejected, account_blocked, account_unblocked
资金⭑ deposit_initiated · ⭑ deposit · deposit_failed, withdraw
游戏bet
奖金生命周期bonus_offered, bonus_claimed, bonus_completed, bonus_cashed_out

后台事件网格显示的数量比目录接受的少一个

设置向导目前列出 14 个 iGaming 事件,并显示 n/23。deposit_initiated 已被 API 接受且有完整规范——只是尚未绘制在该网格中。照常发送即可, 它会被存储。其字段参见 iGaming 事件。

关于 deposit_initiated——玩家已发起但尚未结算的充值。它能告诉 你玩家在收银台的哪一步流失。context.transaction_id 为必填,且必须 与后续 deposit 或 deposit_failed 上的 transaction_id 一致,这样才能将这次尝试与其 结果关联起来。

添加事件的顺序

从四个 Basic 事件开始。然后是 withdraw 和 bet——这两个事件让你从 ROAS 走向 真实的玩家价值。验证类和奖金类事件放在最后;它们能让预测 LTV、流失模型和 Bonus Engine 更精准,但起步阶段没有任何功能依赖它们。

每个事件的字段级定义: 标准事件 · iGaming 事件

8. API 版本 ​

版本状态时间戳格式
v3当前版本——所有集成均使用此版本Unix 毫秒
v2将于 2026 年 10 月 18 日弃用Unix 秒

新集成请从 v3 开始。如果你正在使用 v2,请参阅 从 v2 迁移。

确认你已上线

S2S 卡片中的 Event Stream 栏和各事件的 last seen 时间戳读取的是 我们实际存储的事件。无论使用哪个版本,它们都是确认你的集成 正常工作的权威依据。

后续步骤 ​