All insights

How to bid on profit in Google Ads

A £400 order that leaves you £50 and a £150 order that leaves you £85 look very different to Google Ads, and on revenue alone it will back the wrong one. The only way to make Google Ads bid on profit is to send margin as the conversion value instead of revenue, which turns Target ROAS into what is effectively a target return on profit.

Every figure below is hypothetical and rounded to keep the sums readable. Swap in your own before believing any of it.

A worked example: revenue against margin

Picture two products in the same account. The ad cost per order is identical for both, which almost never happens but keeps the comparison clean.

Per order (hypothetical) Product A (branded) Product B (own label)
Selling price, ex VAT £400 £150
Cost of goods £330 £55
Shipping £12 £7
Payment fee at 2% £8 £3
Margin £50 £85
Ad cost per order £40 £40
Return on revenue (ROAS) 1,000% 375%
Return on margin 125% 212.5%
Left after ads £10 £45

On revenue, Product A looks like a star. Revenue is a flattering number that turns up to the board meeting in a good suit and doesn’t mention the supplier invoice. Google Ads takes you at your word, so it pushes budget towards the £400 sale that leaves you £10 after the click.

Send margin instead and the ranking flips, with A returning 125% and B returning 212.5%. Given enough orders to learn from, and a target reset to match, Smart Bidding starts favouring the product that pays the bills.

What does Target ROAS mean once you send margin?

It becomes a target return on profit. At 100%, the margin on an order only just covers the ad that won it, before you’ve paid for overheads or anyone’s salary. To keep £1 for every £1 of ad spend you’d aim for about 200%.

Your old target can’t simply carry over. If margin averages around 25% of revenue across the account, a 400% revenue target is roughly a 100% margin target, because 400 multiplied by 0.25 is 100. Move the target at the same moment as the values, otherwise you’re asking for a return the account can’t produce and spend will dry up. We’d also try it on part of the account first, because changing what a conversion is worth is a big change as far as bidding is concerned.

Where does the cost data come from?

Usually your ERP or stock system. Linnworks, Unleashed, Brightpearl and Sage 200 can all hold cost prices at product level, which makes them the natural source for what an order really cost you. Spreadsheets work at small scale, until the person who maintains them goes on holiday.

Before anything gets sent, check each of these has a sensible answer:

  • Cost of goods per SKU, including landed costs such as freight and duty where they apply.
  • Bundles and kits, which need costing from their components.
  • Stale costs, where supplier prices have moved and the system hasn’t.
  • Missing costs, because a blank cost price must never be treated as free stock. Decide on a fallback such as a category average, or hold the order back.
  • Discounts, because margin has to be worked out on the price actually paid.
  • Phone and offline orders, which never touch the website but cost just as much to fulfil. Our guide to counting phone orders in Google Ads explains how those orders get matched back to the ad.

Where the calculation happens matters too. Keep margin out of the website’s dataLayer, because anything in the browser can be read by anyone who opens developer tools, competitors included. Work it out on the server or in the ERP and send it from there. If that means a custom upload, our guide to the Data Manager API explains where new integrations now have to go.

How do you handle returns, shipping and payment fees?

These three are where margin figures most often go quietly wrong, even when the cost prices are spot on.

Returns. You have two reasonable approaches. You can send a conversion adjustment to retract or restate the value when an order comes back, or you can build an expected returns allowance into the original figure, by category if return rates differ much. We’d usually start with an allowance, since it gives bidding a sensible number at the moment of sale, then add adjustments if returns are large or lumpy.

Shipping. Use what the carrier actually charges, less anything the customer paid you towards it. Free-delivery thresholds catch people out here, because a small order shipped for free can carry a margin that looks fine until the courier bill lands.

Payment fees. Card and gateway fees are usually a percentage, sometimes plus a fixed amount, and marketplaces take their own cut. An average per sales channel is generally accurate enough for bidding.

Is conversions with cart data the same as bidding on margin?

No. Conversions with cart data tells Google which products were in each sale, and if you also provide cost of goods sold in Merchant Center, Google Ads can report gross profit. That’s useful reporting and it’s far less work to set up.

It doesn’t change what the bidding optimises for. Smart Bidding still chases whatever value your conversion action carries, so an account can show gross profit in a report while bids carry on favouring revenue. As far as we’re aware that report only considers cost of goods, which leaves shipping, fees and returns out of the picture. Plenty of businesses should start with cart data and stay there for a while before deciding whether the bigger job is justified.

Should you send true margin or a scaled figure?

This one is a commercial decision more than a technical one. Sending true margin means handing an ad platform a fairly detailed view of your profitability, and some businesses aren’t comfortable with that.

The common alternative is a scaled value, where every margin is multiplied by a fixed factor before it’s sent. Using 0.8 on the example above, Product A sends £40 and Product B sends £68. B is still worth 1.7 times A, exactly as it was at £85 and £50, so the ranking the algorithm sees is intact. Your targets shift by the same factor, so a true 100% return becomes 80% on the scaled figures.

If you scale, keep the factor constant, write it down and tell whoever reads the reports, because Google Ads will then show a conversion value that matches nothing in your accounts. We lean towards scaling when anyone in the business is uneasy, since it should cost little in bidding terms and it removes the argument.

How do you switch to profit bidding without breaking what works?

Order matters here, and the foundations come first:

  1. Fix the tracking you already have. Margin sent through a broken set-up is wrong twice, so start by ruling out problems such as conversions being counted more than once.
  2. Work out margin for recent orders offline. A few months in a spreadsheet, agreed with whoever owns the numbers, shows how good the cost data really is.
  3. Send margin to a secondary action. It runs alongside revenue without affecting bids, so you can compare the two.
  4. Reset the target and switch one campaign. Watch profit rather than the revenue line, because less revenue at a better margin may be exactly what you wanted.
  5. Keep the cost data fresh. Bids are only as current as the cost prices behind them, so someone has to own those prices after go-live.

Our profit bidding service handles the engineering side of this, pulling real costs from your ERP and sending margin to Google Ads through accounts you own. Few people offer it, because most of the work is data engineering and very little of it happens inside Google Ads.

If you have cost data and want a straight view on whether it’s good enough to bid on, book a call and bring an export of recent orders.