Adapty Mail 中的邮件目标

每个活动都需要一个发送收件人的目标页面。这个地方就是邮件目标——一个你只需配置一次、即可在多个活动中复用的名称、URL 和类型的组合。

活动中的每封邮件只指向一个目标地址,所有可点击元素——CTA 按钮、Logo 和首图——都链接到同一个地址。它们在数据图表中分开记录,但共享同一个链接。

目标类型

营销活动的用途决定了目标类型。创建后无法更改目标类型。

类型兼容的活动将收件人引导至何处URL 的来源
Web Paywall所有营销活动,以及双重确认订阅浏览器中的结账页面,购买方式为网页支付,而非 App Store 或 Google Play 的交易。由 Adapty Mail 生成,或粘贴自您自行托管的付费墙。设置结账涵盖这两种情况。
Deep Link应用激活您的应用内您所选的页面。若未安装应用,则跳转至应用商店页面。粘贴自您的链接提供商——OneLink、Branch 或 Firebase。
Cancellation Page取消页面活动您自己的账户页面,或您的计费提供商的门户,订阅用户可在此查看、更改或取消订阅。粘贴自您自己的网站或计费提供商。
Note

只要使用 HTTPS,任何目标 URL 都是有效的。因此,取消页面可以是一个用于打开您应用的通用链接,而不仅仅是一个网页。这一点很重要,因为 App Store 和 Google Play 的订阅是在应用商店内取消的,而不是在您托管的页面上取消的。

交易型营销活动的目标页

Adapty Mail 包含三种交易型营销活动:

  • Double opt-in — 当新用户画像从您的入口点进入时触发。其按钮会打开 Adapty Mail 的确认页面。收件人确认后,将跳转至您的网页付费墙——这也是该营销活动需要配置付费墙的原因。
  • App activation — 在用户完成购买后触发,引导买家进入您的应用。
  • Cancellation page — 在用户完成购买后触发,为买家提供订阅管理入口。

创建推广活动时,Email Destination 下拉列表为空,说明你尚未创建该类型的目标地址。点击其中的 Create 链接可打开相应的创建表单。

创建目标地址

  1. 进入 Email Destinations,选择您的营销活动所需的类型。
  2. 点击 Create。
  3. 填写目标地址的 Name——在将其关联到营销活动时,您将通过该名称进行选择。
  4. 填写 URL,必须使用 HTTPS。
  5. 为每位收件人的不同值添加占位符。
  6. 如果 URL 中使用了 {response.<key>} 占位符,请在 Advanced 下添加 Hook URL。
  7. 点击 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 将无法保存。

工作原理:

  1. 收件人点击邮件中的链接。
  2. Adapty Mail 向您的 Hook URL 发送 GET 请求,并为该收件人填充相应的占位符。请求等待五秒,仅尝试一次。
  3. 您的端点验证签名并返回一个扁平的 JSON 对象。
  4. Adapty Mail 用返回结果中同名键的值填充每个 {response.<key>}。未返回的键保留其占位符。
  5. 无论钩子是否已响应,收件人都会进入您的页面。

请求说明

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。付费墙设置请参阅设置结账页面,购买归因请参阅营销活动分析。