通过 Adapty Mail API 发送邮件和交易数据

Adapty Mail API 让你无需通过 Adapty SDK 中转,直接从服务器向 Adapty Mail 发送用户画像和交易数据。以下场景适合使用它:

  • 在 Adapty Mail 中尚未有用户列表时添加订阅者。
  • 复用来自其他应用的订阅者列表。
  • 以你的后端作为数据源,通过服务器到服务器的方式向 Adapty Mail 推送数据。

用 API 还是 SDK? 大多数应用通过 Adapty SDK 向 Adapty Mail 发送数据,SDK 会自动收集邮箱和购买信息。如果你的应用没有集成 Adapty SDK、数据已存储在服务器上,或者需要从其他来源导入订阅者,请选择 API 方式。

开始之前

在发送数据之前,请先完成 Adapty Mail 的配置——包括创建营销活动、市场细分(如有需要)、网页付费墙以及已上线的流程。Adapty Mail 仅向配置完成后创建的用户画像发送邮件;此前已发送的用户画像不会收到任何邮件。请先参阅Adapty Mail 入门指南完成配置,再回到此处继续操作。

你还需要准备好 API 密钥和基础 URL:

  • Secret API key(密钥):在 Adapty Mail 中,进入 Settings 并复制你的 Secret API key。该密钥与项目绑定,API 通过它识别数据所属的项目。
  • Base URL:所有请求均发送至 https://api-mail.adapty.io
  • Authentication(身份验证):在 Authorization 请求头中以 Bearer {your_secret_api_key} 的格式传入密钥。

在收集用户邮箱并将其发送至 Adapty Mail 之前,请务必获得用户的明确授权。您有责任遵守 GDPR、CAN-SPAM 及所在市场的其他相关法规。

发送用户画像

用户画像包含用户的邮箱和属性。要创建或更新用户画像,请向 /api/v1/profile/save/ 发送 POST 请求。

以下三个字段为必填项:

  • 由你的应用或后端维护的稳定 external_profile_id
  • Adapty Mail 用于发送营销活动邮件的 email
  • external_created_at —— 用户创建时间,可用于市场细分

请始终传入稳定的 external_profile_id,不要使用匿名 ID 或每次安装时生成的值。Adapty Mail 依靠它将邮件、点击和购买行为关联到同一个用户画像。

curl --request POST \
  --url 'https://api-mail.adapty.io/api/v1/profile/save/' \
  --header 'Authorization: Bearer {your_secret_api_key}' \
  --header 'Content-Type: application/json' \
  --data '{
    "external_profile_id": "user_12345",
    "external_created_at": "2026-06-01T10:30:00Z",
    "email": "[email protected]",
    "country": "US",
    "custom_attributes": {
      "plan": "trial"
    }
  }'

请参阅 保存用户画像 参考文档,了解所有可用字段。

发送交易事件

拥有邮箱的用户画像即可进入 never purchased 流程。其他所有流程还需要交易事件。

never purchased 之外的所有流程都依赖购买历史。在处理购买、续订和取消订阅时,同步发送用户画像的交易事件,这样 Adapty Mail 才能将其归入正确的流程。交易事件同时也支持收入归因。只有在你仅运行 never purchased 营销活动时,才可以跳过这一步。 要记录一笔交易,请向 /api/v1/profile/transaction-event/save/ 发送 POST 请求。使用与用户画像相同的 external_profile_id,这样 Adapty Mail 才能将该交易关联到正确的用户。

curl --request POST \
  --url 'https://api-mail.adapty.io/api/v1/profile/transaction-event/save/' \
  --header 'Authorization: Bearer {your_secret_api_key}' \
  --header 'Content-Type: application/json' \
  --data '{
    "event_type": "subscription_started",
    "event_id": "evt_abc123",
    "event_datetime": "2026-06-10T14:20:05Z",
    "external_profile_id": "user_12345",
    "store": "app_store",
    "store_product_id": "premium_monthly",
    "store_transaction_id": "1000000123456789",
    "store_original_transaction_id": "1000000123456789",
    "purchased_at": "2026-06-10T14:20:00Z",
    "originally_purchased_at": "2026-06-10T14:20:00Z",
    "price_usd": "9.99"
  }'

请参阅 保存交易事件 参考文档,了解所有可用字段。

将事件映射到流程

发送与实际发生情况对应的 event_type。Adapty Mail 会根据用户画像的事件历史推断其当前状态,并将其路由到匹配的流程。

event_type发送时机流程
subscription_started用户开始新订阅。活跃 — 无再触达流程
subscription_renewed订阅自动续期。活跃 — 无再触达流程
subscription_renewal_reactivated用户重新开启自动续订。活跃 — 无再触达流程
non_subscription_purchase用户完成一次性购买。活跃 — 无再触达流程
subscription_renewal_cancelled用户关闭自动续订(订阅在到期前仍有效)。续订已取消
billing_issue_detected续订付款失败。账单问题
entered_grace_period付款失败,但用户仍处于宽限期内。账单问题
subscription_expired订阅到期,访问权限终止。已过期
subscription_refunded订阅购买已退款。已退款
non_subscription_purchase_refunded一次性购买已退款。已退款