# 转化事件

转化事件以统一的格式收集用户收入，以便您将其用于归因、分析和细分。

## 什么是转化事件

收入事件很少以单一形式出现。您的 SDK 可能会触发 `PW_InAppPurchase`，您的后端可能会发送一个自定义的 `OrderPlaced` 事件，而 Stripe 或 Shopify 会提供它们自己的 webhook 事件。如果没有一个共享的格式，要针对收入进行定位或报告，就需要为每个来源编写独立的逻辑。

转化事件通过将所有这些规范化为 `PW_Conversion` 来解决这个问题，这是一个具有固定字段集的内置事件：

*   `value`：交易金额
*   `currency`：ISO 4217 货币代码
*   `transaction_id` 和 `product_id`：可选的标识符

`PW_Conversion` 涵盖了购买、订阅续订以及来自第三方平台的支付，无论原始的资金事件来自何处。除了[默认事件](/zh/product/audience-data-and-segmentation/events/default-events/)和[自定义事件](/zh/product/audience-data-and-segmentation/events/custom-events/)，转化事件是 Pushwoosh 中的第三个事件类别。

一旦收入以 `PW_Conversion` 的形式记录下来，RFM 细分、Customer Journeys、仪表板和 ManyMoney AI 都会读取相同的规范化数据，无论它是由哪个来源产生的。

### 收入如何到达 Pushwoosh

您可以通过以下两种方式之一获取 `PW_Conversion` 记录：

*   **直接从您的代码发送：** 您的应用程序或后端在购买后发送 `PW_Conversion`。
*   **在控制面板中映射现有事件：** 将 Pushwoosh 指向您已经发送的购买事件，它将在不更改您代码的情况下生成 `PW_Conversion` 记录。您可以为每个应用程序映射多个源事件。

<Aside type="caution" title="重要">
每次交易只使用一种路径。如果您直接发送 `PW_Conversion`，并且还映射了另一个为同一次购买触发的事件，Pushwoosh 会将两者记录为独立的 `PW_Conversion` 事件。Pushwoosh 不会检测或合并跨来源的重复项，即使它们共享一个 `transaction_id`。
</Aside>

## 使用案例

一旦设置了转化事件，这些数据就可以在 Pushwoosh 中所有与收入相关的地方使用：

*   根据消费金额和新近度为高价值用户构建 [RFM 细分](/zh/product/audience-data-and-segmentation/segmentation/rfm-segmentation/)，而无需为每个事件编写自定义的收入逻辑。
*   在 [Customer Journey](/zh/product/customer-journey/pushwoosh-journey-overview/) 中将 `PW_Conversion` 设置为[转化目标](/zh/product/customer-journey/journey-settings/#conversion-goals)，以查看哪些流程实际推动了购买，而不仅仅是点击或打开。
*   在仪表板和报告中查看收入，而无需为每个购买事件构建自定义逻辑。
*   将来自 SDK 购买事件和支付 webhooks（Stripe、Shopify）的收入合并到一个数据集中，而不是分别分析每个来源。
*   让 [ManyMoney AI](/zh/product/pushwoosh-ai/ai-assistant/) 在其推荐和营销活动优化中使用真实的交易数据。

<Aside type="tip" title="示例场景">
**合并续订和商店订单**

一个订阅应用在每次续订付款后发送 `PW_Conversion`，并将其 Shopify webhook 映射到 `PW_Conversion` 以处理一次性商品销售。现在，这两个收入来源都计入同一个 RFM 细分，因此该应用的最大消费者会自动进入 **Champions** 细分。然后，您可以在 Customer Journey 中用忠诚度优惠来定位他们。

**统一跨渠道的消费**

一个移动应用直接从其后端为应用内购买发送 `PW_Conversion`，并另外为其网站上的购买映射一个 Stripe webhook。因为 Pushwoosh 将两者视为同一种收入事件，所以当 ManyMoney AI 推荐下一个目标客户时，它会看到客户完整的消费历史，包括应用和网站。

**查看哪些旅程推动了购买**

一个旅程用赢回优惠来定位最近流失的用户。其**转化目标**设置为 `PW_Conversion`。旅程结束后，目标统计数据显示了这些用户中有多少人进行了购买，因此您可以看到该旅程推动了真实的购买，而不仅仅是打开。要查看这代表多少收入，请单独检查细分或仪表板的收入视图。Customer Journey 按目标显示购买次数，而不是每个旅程的美元总额。
</Aside>

## 如何设置转化事件

转化事件是按应用程序配置的。您可以通过以下两种方式之一设置转化事件。请按照适合您实现方式的路径说明进行操作。

### 从您的代码发送 `PW_Conversion`

当您可以在您的应用程序或后端添加或更改事件代码时，此路径适用。每次购买后，通过 [postEvent](/zh/developer/api-reference/user-centric-api/#postevent) 方法发送 `PW_Conversion`。

<Aside type="caution" icon="setting" title="需要开发人员协助">
要从您的代码发送 `PW_Conversion`，您需要开发团队的帮助。请将**查看代码**中的示例以及[此链接](/zh/developer/guides/audience-and-segmentation/events/)分享给他们以获取说明。
</Aside>

1.  前往 **Audience > Events**。找到 **Conversion events tracking** 卡片。

<img src="/events-conversion-events-5.webp" alt="事件页面，其中包含设置前的“转化事件跟踪”卡片，显示已映射事件为零和“开始收集收入”按钮"/>

2.  点击 **View code**。

<img src="/events-conversion-events-3.webp" alt="设置转化事件页面，其中包含“查看代码”链接"/>

3.  复制示例，并在您的应用程序或后端中任何完成购买的地方添加 `postEvent` 调用。
<img src="/events-conversion-events-2.webp" alt="集成代码对话框，其中包含适用于 JavaScript、Swift、Objective-C 和 Java 的 PW_Conversion postEvent 示例"/>

<Aside type="tip">
只有 `value` 和 `currency` 是必需的。`transaction_id` 和 `product_id` 是可选的。

如果您发送 `transaction_id`，Pushwoosh 会完全按照您传递的方式存储它。它不会根据此字段对收入进行去重。
</Aside>

**JavaScript 示例：**

```javascript
Pushwoosh.postEvent("PW_Conversion", {
    value: 49.99,
    currency: "USD",
    transaction_id: "ord_18274",
    product_id: "sku_premium_m"
});
```

#### postEvent 调用的属性

下表列出了您在发送 `PW_Conversion` 时可以传递的属性。

| 字段 <div style="width:120px"></div> | 类型 <div style="width:100px"></div> | 必需 <div style="width:80px"></div> | 描述 |
| --- | --- | --- | --- |
| `value` | number | 是 | 交易的货币金额。 |
| `currency` | string (ISO 4217) | 是 | 交易货币代码，例如 `USD` 或 `EUR`。 |
| `transaction_id` | string | 否 | 交易的唯一标识符。建议用于您自己的记录保存。Pushwoosh 会按原样存储它，但不会用它来对收入进行去重。 |
| `product_id` | string | 否 | 购买的产品或计划的标识符。 |

<Aside type="caution">
转化事件目前不支持退款或取消。没有办法发送负值或反向的 `PW_Conversion` 记录。一旦交易被记录，即使购买后来被退款或取消，它仍会保留在您的收入总额中。
</Aside>

### 映射现有事件以跟踪收入

当购买数据已经通过另一个事件流动，并且您不想更改代码时，此路径适用。当映射的源事件到达时，Pushwoosh 会触发并将其记录为 `PW_Conversion` 事件。

<Aside type="note">
映射不会更改或替换源事件。它会像以前一样继续工作。源事件在细分、事件历史和仪表板中仍然可用，就像任何其他事件一样。Pushwoosh 还会从中创建一个 `PW_Conversion` 记录，仅用于收入功能。
</Aside>

1.  前往 **Audience > Events**。找到 **Conversion events tracking** 卡片。

2.  点击 **Start collecting revenue**（或者如果您已经映射了一个事件，则点击 **Event mapping**）。**Set conversion events** 页面将打开。

<img src="/events-conversion-events-7.webp" alt="设置转化事件页面，其中包含“使用现有事件跟踪转化”部分"/>

3.  在 **Use existing events to track conversion** 中，打开 **EVENT** 下拉菜单并选择您已经发送的事件。该列表包括自定义事件、默认事件和入站 webhook 事件（例如 Stripe 或 Shopify）。

<img src="/events-conversion-events-4.webp" alt="设置转化事件页面，其中包含默认的 EVENT 下拉菜单，显示“选择事件”占位符"/>

4.  映射其余属性：

    *   在 **PRICE** 中，选择存储交易金额的属性。
    *   在 **CURRENCY** 中，选择存储货币代码的属性。
    *   可选地，映射 **TRANSACTION ID (OPTIONAL)** 和 **PRODUCT ID (OPTIONAL)**。
<img src="/events-conversion-events-1.webp" alt="转化事件映射表单，其中已填写 EVENT、价格、货币、交易 ID 和产品 ID 字段"/>

要映射另一个源事件，请点击 **+ ADD EVENT**。要删除映射，请点击 **REMOVE**。

5.  点击 **Apply**。

您可以将多个事件映射为同一应用程序的源。例如，将自定义的 `purchase_completed` 事件与 Stripe webhook 事件一起映射。

<Aside type="caution" title="重要">
更改不会重新计算过去的统计数据。只有新的转化数据才会使用更新后的设置。
</Aside>

## 监控转化事件

**Audience > Events** 上的 **Conversion events tracking** 卡片总结了所选应用程序的转化活动。它显示两个数字：

*   **Mapped events:** 当前有多少源事件正在输入到 `PW_Conversion`。
*   **Triggered last 7 days:** 在该窗口内触发的 `PW_Conversion` 事件总数，来自任何当前或过去的映射，或来自直接的 `postEvent` 调用。

点击 **View code** 以重新打开 `PW_Conversion` 集成示例。

<img src="/events-conversion-events-6.webp" alt="设置后的“转化事件跟踪”卡片，显示触发的事件计数、事件映射计数、“查看代码”、“事件映射”和“如何使用”链接"/>

<Aside type="caution" title="重要">
此计数反映了过去 7 天内触发的每个 `PW_Conversion` 事件，无论来源如何。如果您更改或删除映射，它已经生成的过去 `PW_Conversion` 事件将保持计数，直到它们超出 7 天的窗口期。该数字不会立即下降或重新计算。
</Aside>