Conversion events
Conversion events collect user revenue in one uniform format so you can use it for attribution, analytics, and segmentation.
What are conversion events
Anchor link toRevenue events rarely come in one shape. Your SDK might fire PW_InAppPurchase, your backend might send a custom OrderPlaced event, and Stripe or Shopify deliver their own webhook events. Without a shared format, targeting or reporting on revenue means writing separate logic for every source.
Conversion events solve this by normalizing all of that into PW_Conversion, a built-in event with a fixed set of fields:
value: the transaction amountcurrency: ISO 4217 currency codetransaction_idandproduct_id: optional identifiers
PW_Conversion covers purchases, subscription renewals, and payments from third-party platforms, regardless of where the original money event comes from. Alongside default and custom events, conversion events are the third event category in Pushwoosh.
Once revenue lands as PW_Conversion, RFM segmentation, Customer Journeys, dashboards, and ManyMoney AI all read the same normalized data, no matter which source produced it.
How revenue reaches Pushwoosh
Anchor link toYou get a PW_Conversion record in one of two ways:
- Send it directly from your code: your app or backend sends
PW_Conversionafter a purchase. - Map an existing event in the Control Panel: point Pushwoosh at a purchase event you already send, and it generates
PW_Conversionrecords without changing your code. You can map more than one source event per application.
Use only one path per transaction. If you send PW_Conversion directly and also map another event that fires for the same purchase, Pushwoosh records both as separate, independent PW_Conversion events. Pushwoosh does not detect or merge duplicates across sources, even when they share a transaction_id.
Use cases
Anchor link toOnce conversion events are set up, that data becomes usable everywhere revenue matters in Pushwoosh:
- Build RFM segments for high-value users based on spend amount and recency, without custom revenue logic for each event.
- Set
PW_Conversionas a Conversion Goal in a Customer Journey to see which flows actually drive purchases, not just clicks or opens. - View revenue in dashboards and reporting without building custom logic for each purchase event.
- Combine revenue from SDK purchase events and payment webhooks (Stripe, Shopify) into one dataset instead of analyzing each source separately.
- Let ManyMoney AI use real transaction data in its recommendations and campaign optimizations.
Combine renewals and store orders
A subscription app sends PW_Conversion after each renewal payment, and maps its Shopify webhook to PW_Conversion for one-time merchandise sales. Both revenue sources now count toward the same RFM segmentation, so the apps biggest spenders land in the Champions segment automatically. From there, you can target them with a loyalty offer in a Customer Journey.
Unify spending across channels
A mobile app sends PW_Conversion for in-app purchases directly from its backend, and separately maps a Stripe webhook for purchases made on its website. Because Pushwoosh treats both as the same kind of revenue event, ManyMoney AI sees a customers full spending history, app and website combined, when it recommends who to target next.
See which journeys drive purchases
A journey targets recently churned users with a win-back offer. Its Conversion Goal is set to PW_Conversion. After the journey ends, the goal statistics show how many of those users made a purchase, so you can see the journey drove real purchases, not just opens. To see how much revenue that represents, check the segment or dashboard revenue view separately. Customer Journey shows purchase counts by goal, not a dollar total per journey.
How to set up conversion events
Anchor link toConversion events are configured per application. You can set up conversion events in one of two ways. Follow the instructions for the path that fits your implementation.
Send PW_Conversion from your code
Anchor link toThis path fits when you can add or change event code in your app or backend. After each purchase, send PW_Conversion through the postEvent method.
To send PW_Conversion from your code, youll need help from your development team. Share the sample from View code, along with this link with them for instructions.
- Go to Audience > Events. Find the Conversion events tracking card.
[Events page with Conversion events tracking card before setup, showing zero mapped events and Start collecting revenue button]
- Click View code.
[Set conversion events page with View code link]
- Copy the sample and add the
postEventcall wherever a purchase completes in your app or backend.
[Integration code dialog with PW_Conversion postEvent samples for JavaScript Swift Objective-C and Java]
Only value and currency are required. transaction_id and product_id are optional.
If you send transaction_id, Pushwoosh stores it exactly as you pass it. It does not deduplicate revenue by this field.
Example for JavaScript:
Pushwoosh.postEvent("PW_Conversion", { value: 49.99, currency: "USD", transaction_id: "ord_18274", product_id: "sku_premium_m"});Attributes for the postEvent call
Anchor link toThe following table lists the attributes you can pass when sending PW_Conversion.
| Field | Type | Required | Description |
|---|---|---|---|
value | number | Yes | The monetary amount of the transaction. |
currency | string (ISO 4217) | Yes | The transaction currency code, for example USD or EUR. |
transaction_id | string | No | A unique identifier for the transaction. Recommended for your own record-keeping. Pushwoosh stores it as-is but does not use it to deduplicate revenue on its own. |
product_id | string | No | The identifier of the purchased product or plan. |
Conversion events do not currently support refunds or cancellations. There is no way to send a negative or reversing PW_Conversion record. Once a transaction is recorded, it stays in your revenue totals even if the purchase is later refunded or canceled.
Map an existing event to track revenue
Anchor link toThis path fits when purchase data already flows through another event and you do not want to change your code. When a mapped source event arrives, Pushwoosh fires and records it as a PW_Conversion event.
Mapping does not change or replace the source event. It keeps working exactly as before. The source event stays available in segmentation, event history, and dashboards like any other event. Pushwoosh additionally creates a PW_Conversion record from it, used only for revenue features.
-
Go to Audience > Events. Find the Conversion events tracking card.
-
Click Start collecting revenue (or Event mapping, if youve already mapped an event). The Set conversion events page opens.
[Set conversion events page with Use existing events to track conversion section]
- In Use existing events to track conversion, open the EVENT dropdown and select the event you already send. The list includes custom events, default events, and inbound-webhook events (such as Stripe or Shopify).
[Set conversion events page with default EVENT dropdown showing Select event placeholder]
-
Map the remaining attributes:
- In PRICE, select the attribute that stores the transaction amount.
- In CURRENCY, select the attribute that stores the currency code.
- Optionally, map TRANSACTION ID (OPTIONAL) and PRODUCT ID (OPTIONAL).
[Conversion event mapping form with EVENT price currency transaction ID and product ID fields filled in]
To map another source event, click + ADD EVENT. To remove a mapping, click REMOVE.
- Click Apply.
You can map multiple events as sources for the same application. For example, map a custom purchase_completed event alongside a Stripe webhook event.
Changes wont recalculate past statistics. Only new conversion data will use the updated setup.
Monitor conversion events
Anchor link toThe Conversion events tracking card on Audience > Events summarizes conversion activity for the selected application. It shows two numbers:
- Mapped events: how many source events currently feed into
PW_Conversion. - Triggered last 7 days: the total number of
PW_Conversionevents fired in that window, from any current or past mapping, or from directpostEventcalls.
Click View code to reopen the PW_Conversion integration sample.
[Conversion events tracking card after setup, showing triggered event count, event mapped count, View code, Event mapping, and How to use links]
This count reflects every PW_Conversion event fired in the last 7 days, regardless of source. If you change or remove a mapping, past PW_Conversion events it already generated stay counted until they age out of the 7-day window. The number doesnt drop or recalculate right away.