消息服务集成
在移动市场竞争日益激烈的背景下,获客既不容易也代价不菲。因此,合理运营已吸引的用户能够有效改善单位经济效益,在竞争激烈的细分领域尤为如此。
Adapty 提供用户核心支付行为的实时信息。无论是用户开始试用、遇到支付问题,还是购买订阅后决定取消,我们都能第一时间掌握。这些事件都反映了用户状态的变化——这正是最佳的触达时机:发送专属优惠、个性化礼品,或任何其他留存手段。
推送通知平台支持使用标准标签和自定义标签来描述用户,从而构建高效的自动化用户留存体系。要让这套系统正常运作,只需要触发事件来通知平台何时该发送消息。这些事件将通过已配置的集成从 Adapty 发送到推送平台。
请选择您需要集成的服务并按照相应说明操作:
没有找到您的归因服务商?
请告诉我们!提交功能请求,我们会认真考虑。
事件属性
Webhook 事件以 JSON 格式发送。所有事件遵循相同的结构,但其字段会根据事件类型、应用商店以及您的具体配置而有所不同。
Adapty 使用 currencylayer.com 的汇率将其他货币换算为美元(每 8 小时更新一次)。汇率以交易发生时为准——此后的汇率变动不影响本次换算结果。
| 属性 | 类型 | 描述 |
|---|---|---|
| profile_id | uuid | Adapty 用户 ID。 |
| currency | str | 本地货币(默认为 USD)。 |
| price_usd | float | 扣除 Apple/Google 分成前的产品价格,即收入。 |
| proceeds_usd | float | 扣除 Apple/Google 分成后的产品价格,即净收入。 |
| net_revenue_usd | float | 以 USD 计算的净收入(扣除 Apple/Google 分成及税费后的收入)。可能为空。 |
| price_local | float | 以本地货币计算的、扣除 Apple/Google 分成前的产品价格,即收入。 |
| proceeds_local | float | 以本地货币计算的、扣除 Apple/Google 分成后的产品价格,即净收入。 |
| transaction_id | str | 交易(如购买或续订)的唯一标识符。 |
| original_transaction_id | str | 原始购买的交易标识符。 |
| purchase_date | ISO 8601 date | 产品购买的日期和时间。 |
| original_purchase_date | ISO 8601 date | 原始购买的日期和时间。 |
| environment | str | 可以是 Sandbox 或 Production。 |
| vendor_product_id | str | Apple App Store、Google Play Store 或 Stripe 中的产品 ID。对于12 个月承诺计划,值为 <product_id>:monthly。 |
| base_plan_id | str | Google Play Store 中的基础方案 ID,或 Stripe 中的价格 ID。 |
| event_datetime | ISO 8601 date | 事件的日期和时间。 |
| store | str | 可以是 app_store 或 play_store。 |
| trial_duration | str | 试用期时长(天数)。格式为 ” days”,例如 “7 days”。 |
| cancellation_reason | str | 用户取消订阅的原因。 可以是 iOS & Android voluntarily_cancelled、billing_error、refund iOS price_increase、product_was_not_available、unknown Android new_subscription_replace、cancelled_by_developer |
| subscription_expires_at | ISO 8601 date | 订阅的到期日期,通常为未来时间。 |
| consecutive_payments | int | 用户连续订阅(不中断)的周期数,包含当前周期。 |
| rate_after_first_year | bool | 布尔值,表示该订阅在连续续订满一年后是否符合降低佣金比率(通常为 15%)的条件。佣金比率因计划资格和国家/地区而异。详见商店佣金与税费。 |
| promotional_offer_id | str | Adapty 看板产品部分中标注的促销活动 ID。 |
| store_offer_category | str | 可以是 introductory 或 promotional。 |
| store_offer_discount_type | str | 可以是 free_trial、pay_as_you_go 或 pay_up_front。 |
| paywall_name | str | 交易来源付费墙的名称。对于流程,为付费墙屏幕的 ID(scr_...)。 |
| paywall_revision | int | 交易来源付费墙的版本号,值为 1。 |
| developer_id | str | 交易来源版位的开发者(SDK)ID。 |
| ab_test_name | str | 交易来源 A/B 测试的名称。对于跨版位 A/B 测试,为某一版位上的测试名称(<test name> child-N)。如需按版位汇总跨版位测试,请使用 ab_test_id。 |
| ab_test_revision | int | 交易来源 A/B 测试的版本号,值为 1。 |
| ab_test_id | uuid | 交易来源 A/B 测试的 ID。对于跨版位 A/B 测试,所有版位的值相同。 |
| ab_test_parent_name | str | 跨版位 A/B 测试的名称,仅在跨版位 A/B 测试中存在。 |
| ab_test_variant_id | uuid | 交易来源 A/B 测试实验变体的 ID,可用于按测试实验变体拆分交易数据。 |
| ab_test_variant_name | str | A/B 测试实验变体的名称。 |
| flow_id | uuid | 交易来源流程的 ID。 |
| flow_name | str | 交易来源流程的名称。 |
| flow_variation_id | uuid | 该版位上流程实验变体的 ID,与 SDK 中的 flow.variationId 相同。 |
| cohort_name | str | 该用户画像所属目标受众的名称。 |
| profile_event_id | uuid | 可用于去重的唯一事件 ID。 |
| store_country | str | 商店提供给我们的国家/地区信息。 |
| profile_ip_address | str | 用户画像 IP(可以是 IPv4 或 IPv6,优先使用 IPv4)。每次设备 IP 变更时更新。 |
| profile_country | str | 由 Adapty 根据用户画像 IP 判断。 |
| profile_total_revenue_usd | float | 该用户画像的总收入(含退款)。 |
| variation_id | uuid | 发生购买的付费墙的唯一 ID。对于流程,为流程内付费墙屏幕的 ID,而非 A/B 测试实验变体的 ID。 |
| access_level_id | str | 付费访问等级 ID。 |
| is_active | bool | 布尔值,表示该用户画像的付费访问等级是否处于激活状态。 |
| will_renew | bool | 布尔值,表示付费访问等级是否将续订。 |
| is_refund | bool | 布尔值,表示交易是否已退款。 |
| is_lifetime | bool | 布尔值,表示付费访问等级是否为永久授权。 |
| is_in_grace_period | bool | 布尔值,表示用户画像是否处于宽限期内。 |
| starts_at | ISO 8601 date | 用户付费访问等级的开始日期和时间。 |
| renewed_at | ISO 8601 date | 当前付费访问周期最近一次开始的日期和时间。在首次续订之前,与 activated_at 相同。 |
| expires_at | ISO 8601 date | 付费访问到期的日期和时间。 |
| activated_at | ISO 8601 date | 付费访问激活的日期和时间。 |
| billing_issue_detected_at | ISO 8601 date | 出现计费问题的日期和时间。 |
| profile_has_access_level | Bool | 布尔值,表示该用户画像是否拥有有效的访问等级(仅限 Webhook)。 |
每个事件都包含以下属性:
transaction_id, original_transaction_id, purchase_date, original_purchase_date, environment, vendor_product_id, event_datetime, store。
此外,部分事件还有额外属性。对于 subscription_refunded 和 non_subscription_purchase_refunded 事件,必须提供 price_usd 和 proceeds_usd 作为额外属性。
| 事件名称 | 属性 |
|---|---|
| subscription_initial_purchase | price_usd, proceeds_usd, subscription_expires_at, consecutive_payments, rate_after_first_year, trial_duration |
| subscription_renewed | price_usd, proceeds_usd, subscription_expires_at, consecutive_payments, rate_after_first_year, trial_duration |
| subscription_cancelled | cancellation_reason, trial_duration |
| trial_started | subscription_expires_at, trial_duration |
| trial_converted | price_usd, proceeds_usd, subscription_expires_at, consecutive_payments, rate_after_first_year, trial_duration |
| trial_cancelled | cancellation_reason, trial_duration |
| non_subscription_purchase | price_usd, proceeds_usd |
| billing_issue_detected | subscription_expires_at, trial_duration |
| entered_grace_period | subscription_expires_at, trial_duration |
事件示例
{
"price_usd": 9.99,
"proceeds_usd": 6.99,
"transaction_id": "1000000628581600",
"original_transaction_id": "1000000628581600",
"purchase_date": "2020-02-18T18:40:22.000000+0000",
"original_purchase_date": "2020-02-18T18:40:22.000000+0000",
"environment": "Sandbox",
"vendor_product_id": "premium",
"event_datetime": "2020-02-18T18:40:22.000000+0000",
"store": "app_store"
}
Adapty 会将事件发送到您的服务器和第三方分析系统。
profile_ip_address 属性与当前设备 IP 同步。每次 Adapty 服务器从 SDK 接收到信息时,如果 IP 与记录中的不同,则会自动更新。