Revenue tells you what sold. Profit tells you what those sales actually produced. PixelYourSite sends both: the standard Purchase event for revenue, and a separate ProfitConversion event for profit. You keep the normal Purchase optimization and reporting, and you get a second profit-based signal to use across Meta, GA4, Google Ads, and TikTok.
How it works
For each WooCommerce order, PixelYourSite calculates:
Profit = order revenue − total cost of goods
It then fires a ProfitConversion event with that profit value attached. The event is server-side only — Meta CAPI, GA4 Measurement Protocol, and TikTok Events API. It never appears in the browser console or in tools like Meta Pixel Helper.
Cost of goods can come from two sources, in this priority:
- WooCommerce native Cost of Goods (built into recent Woo versions).
- PixelYourSite WooCommerce Cost of Goods (paid add-on, easier to manage, supports rules like flat-cost percentages).
If a product is missing a cost value, ProfitConversion is skipped for that order. The Purchase event still fires normally.
What gets sent
| Platform | Event name | Value parameter | Other params |
|---|---|---|---|
| Meta CAPI | ProfitConversion | value = profit | currency, order_id |
| GA4 MP | ProfitConversion | value = profit, profit = profit | currency, order_id |
| TikTok Events API | ProfitConversion | value = profit | currency, order_id |
The duplicate value/profit on GA4 is intentional. profit lets you build a Custom Metric. value lets Google Ads import the conversion with its monetary value when you import the GA4 key event.
Requirements
- WooCommerce with at least one product carrying a Cost of Goods value.
- PixelYourSite Pro with Meta CAPI and/or GA4 Measurement Protocol configured. TikTok Events API is optional.
- A COG source. Either WooCommerce native Cost of Goods, or the PixelYourSite WooCommerce Cost of Goods add-on.
Setup
- Make sure your products have Cost of Goods values. Empty products will silently skip ProfitConversion.
- PixelYourSite Pro → WooCommerce → enable Profit Tracking.
- Verify Meta CAPI is configured (Pixel ID + Conversions API token), and that GA4 Measurement Protocol is configured (Measurement ID + API Secret).
- Place a real test order. ProfitConversion fires alongside the Purchase event on the thank-you page, and again when the order moves to Completed if you use the order-status-based firing path.
ProfitConversion respects your existing fire-once setting. If “Fire the event only once for each order” is on, ProfitConversion won’t fire twice for the same order.
Use it in Meta
How Much Profit Did Your Meta Ads Really Make? WooCommerce Strategy Revealed
How Much Profit Did Your Meta Ads Really Make? WooCommerce Strategy Revealed
Meta is where this pays off fastest because you can keep your normal Purchase setup and add a profit signal next to it.
Create a custom conversion
Events Manager → Custom Conversions → Create custom conversion.
- Source: your dataset.
- Rule:
Event NameequalsProfitConversion. - Name it
ProfitorOrder Profit.
Add profit columns to Ads Manager
Ads Manager → Columns → Customize columns. Search for your custom conversion and add its results and value columns. A practical report:
- Amount spent
- Purchases
- Purchase conversion value
- Purchase ROAS
- Profit (custom conversion results)
- Profit value (custom conversion value)
Add a “Profit after ad spend” custom metric
Ads Manager → Columns → Customize columns → Create custom metric. Subtract Amount spent from your Profit custom conversion value. The result is closer to what the campaign actually contributed than ROAS.
You can keep Purchase as the primary conversion (for bidding and reporting) and use ProfitConversion as a side metric, or test optimizing toward profit once you have enough volume.
Use it in GA4
Small Margins Kill Your Business: Track WooCommerce Profit in GA4 and Google Ads
Small Margins Kill Your Business: Track WooCommerce Profit in GA4 and Google Ads
GA4 lets you turn profit into a metric you can use anywhere.
Confirm the event arrives
GA4 → Reports → Realtime. Place an order. ProfitConversion should appear in the event count card within seconds.
Create the custom metric
Admin → Data display → Custom definitions → Custom metrics → Create custom metric.
- Metric name:
Profit - Event parameter:
profit - Unit of measurement:
Currency
Custom metrics may take 24–48 hours to appear in standard reports.
Add profit to reports
Open a detail report (Traffic acquisition, Campaigns, Landing page), click Customize report → Metrics, and add Profit. Now revenue and profit sit side by side.
Use it in Explorations
Explore → Free form. Add the Profit metric and pair it with dimensions like Session source / medium, Session campaign, Default channel group, or Landing page. This is where you see which sources actually produce profit rather than just revenue.
Use it in Google Ads
Google Ads can import GA4 key events as conversion actions, with the event’s value parameter as the conversion value. That’s why PYS sends value alongside profit — so Google Ads gets a usable monetary signal.
Mark ProfitConversion as a key event in GA4
In GA4: Admin → Events, find ProfitConversion, toggle Mark as key event on.
Import into Google Ads
Goals → Conversions → Summary → New conversion action → Import → Google Analytics 4 properties → Web → pick ProfitConversion.
Start as a secondary conversion
Set the imported ProfitConversion as a secondary conversion first. Primary actions drive bidding; secondary actions are observational. Keep Purchase as the primary, watch profit on the side, and only promote it later if the data supports optimizing toward profit.
Use it in TikTok
TikTok Events API receives ProfitConversion automatically once you enable Profit Tracking and have TikTok configured in PYS. There’s no manual setup on the TikTok side beyond what you already do for Purchase. The event arrives with value set to profit, so any TikTok report that uses event value (including Smart Performance Campaign analysis) reflects profit instead of revenue when filtered to ProfitConversion.
Why two events instead of one
Two reasons.
Reporting clarity. Purchase represents the total order value. That’s the standard, and replacing its revenue with profit breaks reports and confuses optimization. A separate event keeps Purchase clean and adds profit as its own line.
Privacy. Purchase fires both browser-side and server-side. Anyone with a browser tag inspector can see its value — that’s fine, it’s the order total, which a buyer already knows. Profit is different. It exposes your margin. PYS sends ProfitConversion server-side only so it never appears in browser tools.
Limits and edge cases
- Products without cost data. ProfitConversion skips the entire order if any line item is missing a Cost of Goods value. The Purchase event still fires. Audit your catalog before relying on the metric.
- Zero or negative profit. Skipped. Discounts or shipping that pushes margin below zero won’t produce a ProfitConversion event.
- Refunds and partial refunds. ProfitConversion fires on the initial order. PYS doesn’t fire a reversal event for refunds.
- Manual orders and admin-created orders. Fire on order completion if the order goes through the standard WooCommerce flow. Pure imports may not trigger the event.
- Subscription renewals. Fire if your subscription plugin runs orders through the normal Woo order lifecycle. Test once with a renewal.
- Currency conversion. PYS sends the order currency. Reports in a different reporting currency are converted by the ad platform, not by PYS.
- API not configured. ProfitConversion only fires on platforms whose server API is configured. Meta CAPI off, no Meta event. GA4 Measurement Protocol off, no GA4 event.
Privacy
ProfitConversion is server-side only, so margin data never enters the browser. It’s also not personally identifying — it’s a numeric value attached to an order ID. The standard PYS consent rules (cookie consent and ad-data consent via ConsentMagic) apply just like they do to Purchase.
