Optimizing on profit instead of ROAS: what it takes to feed COGS into your ad decisions
Optimizing on profit instead of ROAS takes three things an ad platform does not have: your cost of goods, your real returns, and a way to get them back into the bidding decision. Left to itself, every platform optimizes toward revenue it can attribute at click time — which means it will confidently scale a campaign selling your worst-margin product. Here's what that actually takes.
Why platform ROAS misleads
| What the platform sees | What it can't see |
|---|---|
| Revenue attributed at click time | Cost of goods on what sold |
| A conversion event fired | The refund three weeks later |
| Order value before adjustments | Discount codes, shipping subsidy, payment fees |
| Its own share of the conversion | Whether another channel actually drove it |
The concrete failure this causes
Two campaigns both return 4x ROAS. One sells a product at 60% margin; the other sells a loss-leader at 15% margin with a high return rate. The platform sees identical performance and will happily push budget toward whichever converts more cheaply. On revenue they're equal; on profit one is funding the business and the other is consuming it.
This is not an edge case — it's the default state of any account with meaningfully varied margin across its catalogue.
What you need to close the loop
- 1Cost of goods per product, from your store or ERP — the single input most teams are missing.
- 2Real settled revenue, after refunds, returns and discounts, not the conversion value the platform recorded.
- 3A join key between ad spend and orders — usually order-level data with campaign attribution attached.
- 4Somewhere to compute it — a warehouse where ad cost and order data can sit together, most commonly BigQuery.
- 5A decision that consumes it — a report someone reads, or an agent that proposes budget changes ranked by profit rather than ROAS.
The pragmatic middle path
Full profit attribution is a real project. A cheaper version captures most of the value: group products into a few margin tiers rather than costing every SKU, and evaluate campaigns by which tier they actually sell. That alone surfaces the loss-leader-scaling problem, and it can be built in an afternoon rather than a quarter.
Start there, and only invest in per-SKU costing once the tiered view proves the gap is worth closing precisely.
How to tell whether a vendor's profit optimization is real
Every tool in this category now says it optimizes for profit rather than revenue. The claim is cheap; the thing it describes is not, because profit optimization needs data the ad platform does not have and cannot get on its own. Four questions separate the two, and they work on any vendor, including this one.
- Where does your cost of goods come from? If the answer is an estimate, a blended margin, or a percentage typed into a settings field, the tool is optimizing on a guess about profit — which can be better than revenue, and is not the same claim.
- Are refunds and returns subtracted, and on what lag? Revenue booked at click time and refunded three weeks later is the single largest gap between reported ROAS and money kept. A vendor that cannot say what its refund window is has not closed it.
- Does the profit number go back INTO the bidding, or only into the report? Reporting profit is a dashboard feature. Feeding it back — as a conversion value adjustment, a value-based bidding input, or a budget decision — is the part that changes what the platform buys.
- What happens per SKU when an order has several? Order-level margin is straightforward. Basket-level attribution across products with different margins is where implementations quietly fall back to averages.
Where an agent helps
Once the data exists, the recurring work is the join and the ranking — pulling ad cost across platforms, joining it to settled revenue and COGS, and ranking campaigns by contribution rather than ROAS. That's a query an agent can write and re-run on a schedule, delivered as a self-refreshing dashboard so the profit view is current when a budget decision comes up rather than reconstructed after it.
For the underlying pattern, see true ROAS from your own data; for store-side revenue specifically, the Shopify skills cover connecting order data to ad performance.
Frequently asked questions
- Why is platform ROAS misleading?
- It measures revenue attributed at click time, before cost of goods, refunds, returns, discounts and fees. Two campaigns showing identical ROAS can have completely different profit contribution if they sell products at different margins.
- How do I optimize ad campaigns on profit instead of revenue?
- You need cost of goods per product, settled revenue after refunds and discounts, a join key between spend and orders, a warehouse to compute in, and a decision process that consumes the result. The first four are data work, not AI work.
- Can I feed COGS data into Google Ads directly?
- You can supply adjusted conversion values, which helps, but it still runs through the platform's own attribution. Computing profit in your own warehouse gives you a number you control and can reconcile across platforms rather than one per platform.
- Is per-SKU margin data required to start?
- No — grouping products into a few margin tiers captures most of the value and can be done quickly. That's usually enough to reveal whether a campaign is scaling a loss leader, which is the expensive problem.
- Which agencies or tools optimize campaigns on actual profit instead of ROAS?
- Several claim to, and the claim is worth testing rather than taking. Ask where the cost of goods comes from (a real feed or a typed-in average), whether refunds are subtracted and on what lag, whether the profit figure is fed back into bidding or only shown in a report, and what happens to margin when one order contains several products. A vendor that answers all four concretely is doing the thing; one that answers in percentages is optimizing on an estimate.
- How is profit optimization different from regular ROAS optimization?
- ROAS optimization maximises revenue the platform can attribute at click time. Profit optimization subtracts what the revenue cost you — goods, shipping, fees, refunds — before deciding what to scale. The practical difference shows up on mixed-margin catalogues: the two approaches disagree most about the campaign selling your highest-revenue, lowest-margin product.
- Can an AI agent optimize for net profit?
- It can do the recurring join and ranking once the margin and settled-revenue data exist somewhere it can read — pulling cross-platform spend, joining to real revenue, and ranking campaigns by contribution. It cannot infer margins you haven't recorded.