Adapty Mail 中的邮件目标
每个活动都需要一个发送收件人的目标页面。这个地方就是邮件目标——一个你只需配置一次、即可在多个活动中复用的名称、URL 和类型的组合。
活动中的每封邮件只指向一个目标地址,所有可点击元素——CTA 按钮、Logo 和首图——都链接到同一个地址。它们在数据图表中分开记录,但共享同一个链接。
目标类型
营销活动的用途决定了目标类型。创建后无法更改目标类型。
| 类型 | 兼容的活动 | 将收件人引导至何处 | URL 的来源 |
|---|---|---|---|
| Web Paywall | 所有营销活动,以及双重确认订阅 | 浏览器中的结账页面,购买方式为网页支付,而非 App Store 或 Google Play 的交易。 | 由 Adapty Mail 生成,或粘贴自您自行托管的付费墙。设置结账涵盖这两种情况。 |
| Deep Link | 应用激活 | 您的应用内您所选的页面。若未安装应用,则跳转至应用商店页面。 | 粘贴自您的链接提供商——OneLink、Branch 或 Firebase。 |
| Cancellation Page | 取消页面活动 | 您自己的账户页面,或您的计费提供商的门户,订阅用户可在此查看、更改或取消订阅。 | 粘贴自您自己的网站或计费提供商。 |
只要使用 HTTPS,任何目标 URL 都是有效的。因此,取消页面可以是一个用于打开您应用的通用链接,而不仅仅是一个网页。这一点很重要,因为 App Store 和 Google Play 的订阅是在应用商店内取消的,而不是在您托管的页面上取消的。
交易型营销活动的目标页
Adapty Mail 包含三种交易型营销活动:
- Double opt-in — 当新用户画像从您的入口点进入时触发。其按钮会打开 Adapty Mail 的确认页面。收件人确认后,将跳转至您的网页付费墙——这也是该营销活动需要配置付费墙的原因。
- App activation — 在用户完成购买后触发,引导买家进入您的应用。
- Cancellation page — 在用户完成购买后触发,为买家提供订阅管理入口。
创建推广活动时,Email Destination 下拉列表为空,说明你尚未创建该类型的目标地址。点击其中的 Create 链接可打开相应的创建表单。
创建目标地址
- 进入 Email Destinations,选择您的营销活动所需的类型。
- 点击 Create。
- 填写目标地址的 Name——在将其关联到营销活动时,您将通过该名称进行选择。
- 填写 URL,必须使用 HTTPS。
- 为每位收件人的不同值添加占位符。
- 如果 URL 中使用了
{response.<key>}占位符,请在 Advanced 下添加 Hook URL。 - 点击 Save。
将目标地址添加到营销活动后,其设置将变为只读状态——即使是草稿状态的营销活动也一样。如需将营销活动发送到其他目标地址,请创建第二个目标地址。
占位符
占位符可为每位用户个性化定制目标 URL。没有占位符,您的页面就无法识别是谁访问了该页面。Adapty Mail 会将占位符替换为每位收件人的唯一值。
| 占位符 | 解析内容 |
|---|---|
{email} | 收件人的电子邮件地址。 |
{adapty.external_profile_id} | 其用户画像 ID,适用于来自 Adapty 集成 的数据。 |
{funnelfox.external_profile_id} | 其用户画像 ID,适用于来自 FunnelFox 的数据。 |
{custom.external_profile_id} | 您发送的用户 ID,适用于来自 Adapty Mail API 的数据。 |
{scheduled_email_id} | 携带该链接的邮件 ID。 |
{custom_attribute.<key>} | 收件人用户画像上的任意自定义属性。键名由您自定义,例如 {custom_attribute.plan}。 |
{response.<key>} | 您自己的端点在点击时返回的值。详见 Hooks。 |
- 收件人没有对应值的占位符会被解析为空字符串,因此不会将字面文本传递到你的页面。
- 自定义属性和 hook 值会进行百分号编码,所以包含
&的值不会截断 URL。 - Adapty Mail 无法识别的占位符会阻止保存,错误信息会同时指出被拒绝的内容和可接受的内容。诸如
{emial}这样的拼写错误会在这里被捕获,而不是等到收件人打开浏览器时才发现。
Hooks
{response.<key>} 占位符用于预留来自你自己端点的值。常见用途包括一次性登录令牌或会话签名。在 Advanced 下创建一个新的 Hook URL 来配置此占位符——否则,URL 将无法保存。
工作原理:
- 收件人点击邮件中的链接。
- Adapty Mail 向您的 Hook URL 发送 GET 请求,并为该收件人填充相应的占位符。请求等待五秒,仅尝试一次。
- 您的端点验证签名并返回一个扁平的 JSON 对象。
- Adapty Mail 用返回结果中同名键的值填充每个
{response.<key>}。未返回的键保留其占位符。 - 无论钩子是否已响应,收件人都会进入您的页面。
请求说明
Hook URL 会将您的其余占位符转发到您的端点。使用这些占位符来识别用户身份。通过以下两个请求头进行身份验证:
| 请求头 | 值 |
|---|---|
X-Adapty-Mail-Timestamp | 请求发出时的 Unix 时间戳(秒)。 |
X-Adapty-Mail-Signature | 以 Settings > Project 中的 Secret key 为密钥,对 <timestamp>.<url> 进行 Hex HMAC-SHA256 签名。 |
在响应请求前,务必验证这两个请求头。未经签名验证的端点可能会将敏感信息泄露给未授权用户。同时,请拒绝时间戳过旧的请求,以防止重放攻击:
expected = hmac_sha256(
key=project_secret_key,
message=f"{timestamp}.{full_request_url}",
).hexdigest()
响应结果
一个扁平的 JSON 对象。每个键对应同名的 {response.<key>} 占位符:
{ "checkout_token": "ct_9f2a…", "plan": "annual" }
字符串、数字和布尔值均会转换为字符串。嵌套对象和数组会被丢弃,因为 URL 中无法存放它们。
点击后会发生什么
Adapty Mail 会填充参数值,调用钩子(如有),记录本次点击,并将收件人跳转到你的页面。
你需要识别访客身份,完成收款,并将购买信息回报给 Adapty。付费墙设置请参阅设置结账页面,购买归因请参阅营销活动分析。