Skip to content
  • There are no suggestions because the search field is empty.

Value Optimization for Profit on Meta

How to send order-level profit to Meta with ProfitMetrics, optimise campaigns on it, and measure the result with POAS.

Meta’s Value Optimization for Profit (VO for Profit) lets a Sales campaign optimise on the profit of each order instead of its revenue. ProfitMetrics calculates that profit from your shop’s real costs and sends it to Meta on the Purchase event, next to the revenue. Meta has opened VO for Profit for every ProfitMetrics customer on Conversion Booster for Meta, so there is nothing to request. This article covers the key terms, how the profit value is built, the requirements, setup, testing, reporting, the optional custom events and the most common problems.

On this page

Key terms

These five terms come up throughout setup and reporting.

Term Meaning
ROAS Revenue ÷ ad spend. Treats every euro of revenue as equal, whatever it cost you to deliver.
Gross profit Order revenue after the variable order costs set up in ProfitMetrics: product cost, shipping, payment fees and packaging, with discounts and VAT taken out.
POAS Gross profit ÷ ad spend. 1.0 is break-even: at that point the ads have used up all the gross profit. Meta calls this profit ROAS.
Gross profit after ad spend Gross profit − ad spend. The profit left once advertising is paid for.
Profit margin The conversion value option in Meta’s campaign settings. Despite the name, it takes an order-level profit amount, not a percentage.

NOTE: Two baskets that both paid 78.00 can leave 26.00 or 10.00 in gross profit. On revenue alone, Meta sees them as the same order.


How the profit value is built

ProfitMetrics starts from the paid order amount and subtracts each cost from your settings. An example order, in EUR excluding VAT:

Line Amount
Paid order amount + 300.00
Product cost — 120.00 from the product feed, 80.00 from the 20% Gross Margin fallback − 200.00
Shipping — GLS Home Delivery tier − 8.00
Payment fee — 375.00 incl. VAT × 2.40% + 0.30 − 9.30
Packaging — fixed per order − 1.20
Gross profit sent to Meta 81.50 (27.2%)

Revenue (300.00) and gross profit (81.50) travel on the same Purchase event, sent from ProfitMetrics through Meta’s Conversions API. Meta receives, matches and attributes the order once, so the two values always describe the same orders.

NOTE: A flat margin, such as 30% of revenue on every order, gives Meta nothing new to learn from. The profit has to move with the real costs of each order.


Is your account ready?

Meta’s current guidance for VO for Profit:

Requirement Guidance
Profit value Actual, indexed or masked profit, sent through the Conversions API or your catalogue.
Value variety At least 5 different profit values.
Purchase volume At least 100 purchases a week over the previous 4 weeks.
Budget Enough for at least 30 conversions a day.
Test length At least 3 weeks, to get past the cold start.
Timing Profit must reach Meta within 7 days of the ad impression. ProfitMetrics sends it as soon as the order comes in.

NOTE: Low volume, or the same margin on every order, means the account isn’t a fit yet. Meta can change these thresholds and labels, so check Ads Manager before launch.


Choose what ProfitMetrics sends

In Conversion Booster for Meta, go to the Meta integration, open Meta events and edit the Purchase event. One dropdown decides what is sent.

Option What it does
Revenue Sends the Purchase with revenue only.
Revenue & Profit Sends the Purchase with revenue and gross profit. Use it when ProfitMetrics is your Purchase source.
Profit Sends the Purchase with profit only.
Append Profit Keeps the Purchase you already send, with its revenue, and adds the gross profit to it.
Disabled ProfitMetrics sends no Purchase event.

NOTE: Already sending a Purchase from another setup? Choose Append Profit and keep your existing tracking. Two Purchase events with different values will confuse Meta.


Set up a profit campaign

Audience, creative and placements stay as they are. Only the conversion value changes.

  1. Check your costs. Fallback Costs, product feed cost prices, shipping and payment rules, VAT treatment and handling costs should all be set in ProfitMetrics. The profit is only as good as the costs.
  2. Set the Purchase event to Revenue & Profit or Append Profit, as above.
  3. Check that profit reaches Meta. In Events Manager, open the Purchase event. Gross profit should appear among the parameters received, and profit coverage should be 100%: every Purchase in the last seven days carried a profit. Fix anything lower before you launch.
  4. Create a Sales campaign. Use the Create a profit campaign link on the Profit row in Events Manager, which opens with the right defaults, or choose Sales as the objective and Website as the conversion location.
  5. Set the performance goal to Maximize value of conversions, with Purchase as the conversion event.
  6. Set Conversion value to Profit margin. This is the switch that makes Meta optimise on profit.
  7. Budget for at least 30 conversions a day.
  8. Add the profit column. It is off by default. Open Customize columns, search for “margin” and place it next to Amount spent.

Test and read the results

Treat the profit campaign as a test of one change: the conversion value. Keep the existing revenue campaign running as a baseline if budget allows, and use the same or comparable creative, audience and offer. Broad targeting usually lets Meta learn fastest from the profit value.

Run it for at least three weeks. Performance may dip in week one and improve after week two, so avoid edits and don’t judge it in the first few days. Look at POAS and gross profit after ad spend first, then revenue, ROAS, conversion volume, CPA, new-customer mix and average order value.

What you see What it means What to do
ROAS down, POAS up Meta is trading some revenue for more profitable orders. Usually good if the goal is profit growth. Scale carefully.
ROAS up, POAS down More revenue, but at worse margins. Don’t scale on ROAS alone. Check products, discounts and costs.
Fewer conversions, more profit per order The profit value works but may be too narrow or short of budget. Check total profit after ad spend against your growth goal.
ROAS and POAS both down Cold start, a weak profit value, too little volume, or a real performance problem. Wait out the learning window, then check the profit data and campaign settings.

NOTE: Meta’s figures won’t match your webshop 1:1. Ads Manager counts conversions by Meta’s attribution settings and modelling; your shop counts every order when it is placed. Use Events Manager and your order counts to check delivery, and Ads Manager to judge campaigns.


Reporting in Ads Manager

Keep revenue and profit side by side so you can see when they move apart. These columns, left to right, give the full picture:

Column Shows
Purchases conversion value Revenue.
Purchase margin value The gross profit Meta received on the Purchase.
Profit after ad spend Custom metric: gross profit minus amount spent.
purchase_margin How many purchases carried a profit.
Avg. profit margin per purchase Custom metric: gross profit per order.
POAS Custom metric: purchase margin value ÷ amount spent.

You can use these columns without switching any campaign to profit. Scale the campaigns that make money rather than the ones with the best ROAS, and cut or fix anything with a POAS below 1.00: the click cost more than the profit it brought in.

NOTE: POAS has no revenue in it, so VAT doesn’t affect it. If you show ROAS next to it, note whether revenue is sent with or without VAT, because Meta can’t tell the difference.


Optional: ProfitMetrics custom events

ProfitMetrics also sends eight custom events. Use them for reporting first. Once one has enough volume, you can bid on it for a narrower goal, such as profit from new customers.

Event Use
PM Revenue
PMRevenue
Revenue from all customers.
PM Revenue - New customers
PMRevenueNewCustomers
Revenue from new customers.
PM Revenue - New customers LTV (28 days)
PMRevenueNewCustomersLTV28Days
Revenue from new customers over their first 28 days.
PM Revenue - Returning customers
PMRevenueReturningCustomers
Revenue from returning customers.
PM Gross Profit
PMGrossProfit
Profit from all customers, and POAS.
PM Gross Profit - New customers
PMGrossProfitNewCustomers
Profit from new customers.
PM Gross Profit - New customers LTV (28 days)
PMGrossProfitNewCustomersLTV28Days
Profit from new customers over their first 28 days.
PM Gross Profit - Returning customers
PMGrossProfitReturningCustomers
Profit from returning customers.

To make them available, connect ProfitMetrics to the right Meta dataset (pixel) and allow the events if Meta puts them under Event Blocking. Then run a very small Sales campaign, about €1 a day or €1–2 per ad set, until the events register, which often takes around 20 minutes. Pause or delete it once the events appear in Ads Manager.

NOTE: Only bid on a custom event with at least 30–50 conversions a week. This is separate from Meta’s 100 purchases a week for VO for Profit: a shop with 200 purchases a week but only 18 new-customer profit events should keep that event for reporting.


Troubleshooting

Symptom Check
Profit coverage is below 100% Some orders arrive without profit. Check the Purchase setting and that your cost data covers every product.
Some products look unusually profitable Their cost is probably missing. Add cost prices or set a fallback margin.
Free-shipping orders look too profitable The customer pays nothing, but the shop still pays the carrier. Add that cost in the shipping rules.
Profit seems to include tax Check the VAT setting in ProfitMetrics.
Meta receives two Purchase events with different values Switch ProfitMetrics to Append Profit, or turn off the other Purchase source.
A custom event shows in Events Manager but not in Ads Manager Allow it under Event Blocking and run the small activation campaign.
Results look poor after 2–3 days Normal cold start. Keep to the three-week test and avoid edits.
Ads Manager and your shop show different numbers Expected: attribution and order timing differ. Check delivery in Events Manager separately from campaign results.