Profit Bidding: I Told Google My Real Numbers and It Made Me More Money
What happens when you send profit instead of revenue to Google and Meta? Here is the full story, the math, and whether it is worth it for your store.
ROAS (Return On Ad Spend) is revenue divided by ad spend. Spend $1,000 on ads, get $4,000 in orders, and your ROAS is 4.0. POAS (Profit On Ad Spend) is the same math with profit instead of revenue: if those $4,000 in orders only carry $1,200 of profit after product and shipping costs, your POAS is 1.2. In short: ROAS tells you how much money moved. POAS tells you how much you kept.
A few years ago, before TrueROAS existed, I was running ads for an ecommerce store and having the best month of my life. ROAS was north of 4. Screenshots were flying in the team chat.
I was already mentally spending the profits.
Then the accountant called.
Record revenue. Record ad spend. Almost zero profit.
That month broke my brain a little. Fixing it led me to the single highest-leverage change I have ever made to an ad account: profit bidding.
This article is everything I know about it, with sources for every claim, so you can decide if it is worth it for your store.
The bestseller that was robbing us
Here is what had actually happened. The store's hero product was a big, expensive item: high price, gorgeous ROAS, terrible margin. Heavy to ship, frequently discounted, and costly to source.
Google and Meta only knew the revenue number we sent them. So their algorithms did exactly what we asked: they hunted for revenue. And nothing produces revenue like an expensive product, even if the store only keeps a few percent of it.
Meanwhile, a boring accessory with a 60%+ margin got almost no spend. Its price tag made it look weak in the auction.
The algorithm was not broken. It was obedient. We told it to chase the wrong number.
Here is what one order of each actually looked like, once you follow the money all the way down:
POAS (Profit On Ad Spend) is gross profit divided by ad spend. Above 1.0 you make money. Below 1.0 you are paying platforms for the privilege of shipping boxes.
The hero product ran at a POAS of 0.76, the accessory at 1.61. The product with more than twice the ROAS was a money incinerator, because every product has a different breakeven ROAS. In ProfitMetrics' classic kitchenware example, a frying pan breaks even at ROAS 2.12 while a mixer needs 8.88.
One account-wide target ROAS cannot be right for both.
The fix: tell the algorithm the truth
The fix sounds almost too dumb to work.
Instead of sending the order's revenue as the conversion value, you send the order's gross profit: revenue minus product costs, shipping, payment fees, and discounts.
That is it. Same campaigns, same bid strategies, same buttons.
Google's value-based bidding is value-agnostic; its own documentation says conversion values can be "real economic values, like revenue, or proxy values". Set the value to profit and Target ROAS quietly becomes Target POAS. The machine that used to hunt revenue now hunts money you actually keep.
When we did this, the account rebalanced itself over a few weeks. Spend drained away from the glamorous hero product and flooded into the boring high-margin stuff.
Revenue dipped slightly for two weeks and I sweated through every shirt I owned. Then profit started climbing. By month two the store was making more actual money at a lower ad spend than in our "record" month.
No new creatives. No new campaigns. We just stopped lying to the algorithm.
This is now official on both platforms
Back then this felt like a hack. Today both platforms have made it a first-class feature, which tells you where bidding is heading.
Google announced profit optimization at Google Marketing Live in May 2024: Performance Max and Shopping can optimize for profit using cart data and the cost_of_goods_sold attribute in Merchant Center.
Google's reported result for advertisers using gross profit optimization: an average 15% uplift in campaign profit versus revenue-only bidding. The native feature is still gated to select accounts, so most stores get there by sending profit values directly as the conversion value, which works on any account today.
Meta went even further. In June 2025 Meta officially announced value optimization on profit margins shared through the Conversions API, so campaigns can optimize for POAS instead of revenue ROAS.
In the same announcement Meta reported that value optimization beat volume optimization by an average of +12% ROAS in their testing. And Meta's long-standing benchmark for the Conversions API itself is a 13% average improvement in cost per result when added alongside the pixel, simply because the algorithm sees more complete data.
What the numbers look like in the wild
I am obviously biased (I built a company around this), so do not take my word for it. Here are documented results from stores that switched their bidding from revenue to profit values:
| Store / Source | What changed | Result |
|---|---|---|
| GrejFreak (outdoor gear, DK) | ROAS to POAS bidding | Ad spend -60%, revenue +32%, net profit doubled in 2 months |
| CoolStuff (retailer, SE) | Margin-based Shopping bidding | Revenue +26%, gross profit +42%, cost -10% (Q4 YoY) |
| SavvyRevenue client | POAS targets on profit conversions | Revenue +11%, profit +84% |
| Amical (agency) | Profit bidding | Gross profit +110% in 6 weeks |
| Google (aggregate) | Native gross profit optimization | Average +15% campaign profit |
| Meta (aggregate) | Value vs volume optimization | Average +12% ROAS |
| Store owner (r/ecommerce) | Profit values via Meta CAPI | Profit +25% in 3 months (revenue -18%) |
Fair warning on reading that table: several of those cases are published by vendors who sell profit tracking, so there is selection bias. Nobody publishes the case study where nothing happened.
That is why I anchor expectations on the platform aggregates (+12% to +15%), and treat the doubled-profit stories as the good end of the range, not the promise.
What that means in dollars
Percentages are abstract, so let's make it concrete. Take a typical Shopify store spending $25,000/month on ads, generating $100,000/month in ad revenue (ROAS 4.0) with a 40% gross margin.
That is $40,000 gross profit, or $15,000/month actually kept after ad spend.
| Scenario | Monthly profit after ad spend | Extra profit per year |
|---|---|---|
| Today (revenue bidding) | $15,000 | baseline |
| +10% profit (conservative) | $16,500 | +$18,000 |
| +15% profit (Google's reported average) | $17,250 | +$27,000 |
| +24% profit (GrejFreak-level outcome) | $18,600 | +$43,200 |
$18,000 to $43,000 per year, for changing one number in the data you already send.
Not from new creatives. Not from more hours in Ads Manager. The same budget just stops being spent on orders that were never going to make you money.
Who should do this (and who really shouldn't)
This is the part most articles skip, because it is more fun to promise everyone a doubled profit line.
Profit bidding has real requirements, and for some stores it does nothing at all.
| Requirement | Google Ads | Meta Ads |
|---|---|---|
| Minimum conversion volume | 15 conversions with values in 30 days (official floor), 50+ recommended | 30 purchases with 5+ distinct values in 14 days |
| Learning phase | 3 to 4 weeks of value data before switching targets | About 50 purchases per ad set per week to exit learning |
| Margin variance | Margins must differ across products | At least 5 distinct order values required |
| Data needed | Per-order profit (COGS, shipping, fees, discounts) | Same, sent server-side via Conversions API |
Sources: Google's Target ROAS documentation and Meta's value optimization eligibility requirements.
Skip profit bidding if any of these describe you:
- All your margins are basically the same. If every product keeps 40%, profit is just revenue multiplied by 0.4. The algorithm ranks every auction identically and nothing changes. The bigger your margin spread, the bigger the win.
- You get fewer than ~30 to 50 orders a month. Below the volume floors, value bidding of any kind is noise. Fix volume first.
- You are in lead gen. There is no order margin to send. (Proxy values like lead scores are a different article.)
- You run on razor-thin blended margins with constant sitewide sales. If margins collapse to near zero during promos, you are feeding the algorithm chaos during your biggest weeks.
For everyone else, and that is most Shopify stores selling a catalog with mixed margins at decent volume, the math is heavily in your favor.
SavvyRevenue, an agency that has implemented this across many accounts, reports it works in roughly 80% of implementations. And the failure mode is "nothing improved", not "everything broke".
It is a rare asymmetric bet.
One warning before you switch
The week after you switch, your reported ROAS will drop and you need to not panic. If your margin is 40%, a real ROAS of 4.0 now shows up as a conversion value around 1.6, because the "value" column is now profit.
Nothing got worse. The number just started telling the truth.
Recalculate your targets (breakeven is now simply 1.0), warn whoever reads the dashboards, and judge the switch on month-two profit, not week-one ROAS.
The questions everyone asks on Reddit
While researching this article I went through years of threads on r/PPC, r/GoogleAds, r/FacebookAds and r/ecommerce. The same questions come up every single time profit bidding is proposed, so let me answer them all in one place.
"Is break-even POAS 0 or 1?"
It is 1.0. This gets asked verbatim on r/PPC, and the confusion is understandable. POAS is gross profit divided by ad spend, and ad spend is not subtracted from the gross profit number. At exactly 1.0, the ads ate your entire margin. Practitioners typically start with a target around 1.2 to 1.7 and tune from there.
"Profit values are smaller numbers. Will that break the algorithm?"
This is the most common fear, asked directly in this r/ecommerce thread, and the answer is no. Bidding algorithms care about proportions, not magnitude. As one commenter put it, multiply every value by 300 and nothing changes.
What is real is the transition: expect two to three bumpy weeks while the system relearns. The standard playbook is to collect profit values as a secondary conversion for about 30 days before making them primary, which is exactly how we roll it out at TrueROAS.
"Won't Google and my competitors see my margins?"
A fair concern with a neat community solution: one team on r/PPC sends profit divided by an arbitrary constant (theirs is 7.16), so the proportions survive but nobody can reverse the real margin from the pixel. Sending values server-side instead of through the browser also keeps them out of your page source entirely.
"What about returns and refunds?"
Returns can lag a purchase by 30 days, and skeptics on Reddit raise this constantly. Both platforms handle it: Google supports conversion adjustments that restate a conversion's value after the fact, and a proper server-side setup subtracts refunds automatically. Imperfect margin data that is 90% right still beats revenue data that ignores margins completely.
"Is this against Google's or Meta's policies?"
No. In dozens of threads I did not find a single person who ran into policy trouble, and both platforms have since built profit optimization into their own products. You are not gaming the system. You are feeding it better data, which is exactly what the platforms want.
"Does it always work?"
No, and anyone telling you otherwise is selling too hard. The honest failure cases from the forums: flat margins across the catalog (one consultant ran a manual spreadsheet audit for a client and found POAS and ROAS ranked campaigns identically, saving them the whole setup), and accounts below the volume floors where any value bidding is noise.
That spreadsheet-first sanity check is genuinely good advice: if your margins barely vary, skip the switch.
The honest catch: setup is genuinely painful
So why isn't every store doing this already? Because the plumbing is miserable.
To send correct profit values you need per-order gross profit calculated in real time: SKU-level COGS, shipping costs, payment fees, discounts, ideally refunds.
Then it has to reach the platforms correctly. On Meta that means the Conversions API with proper event deduplication, so you do not double count purchases or have your browser pixel's revenue values silently override your profit values.
Done by hand, this is weeks of developer time and a long list of ways to quietly corrupt your own data.
This is exactly the problem we built TrueROAS to solve. Because of our partnership with Shopify we already sit on your order data, costs included. We calculate true per-order profit and send it back to Meta's Conversions API and Google's enhanced conversion setup with correct deduplication, usually in days instead of weeks.
You keep running your campaigns exactly as before. The algorithms just finally get told which orders actually made you money, and they optimize accordingly.
It is the closest thing to "more profit without doing anything" that I have found in ten years of running ads.
The bottom line
Google and Meta have spent billions building machines that are terrifyingly good at finding whatever you ask them to find. Most stores ask for revenue, so that is what they get, profitable or not.
Ask for profit instead and the same machines, the same budget, and the same ads start working for your bottom line. The platforms' own numbers say that is worth 12 to 15% more profit on average, and the best documented cases go far beyond that.
I watched it happen in my own account years ago, and I have watched it happen for TrueROAS customers ever since.
Profit bidding is not a hack. It is just the correct way to buy ads.


