Summary:
- Tracking the profit from each transaction enables you to set more accurate bids.
- Setting ROAS targets based on an average of your margin per product leaves money on the table.
- Profit tracking is the natural progression of revenue and ROAS tracking.
- As much as 60% of the products bought are not equivalent to or the same as what people clicked on in Google Shopping, making margin labels useless.
- When tracking profit instead of revenue/ROAS, you can stop the endless game of guessing whether X is a good ROAS if you can increase profitable revenue by lowering ROAS or if you can increase profits by lowering revenue and increasing ROAS.
Introduction
In early 2020, I first wrote this article, and I predicted that tracking revenue instead of profit would one day be deemed wildly insufficient. That prediction didn’t quite hit the mark, but today, it’s not surprising to open Google Ads accounts with profit tracking.
I still believe that for the right case, profit tracking is necessary to scale beyond the immediate plateau, but not because it shows you whether you make a profit from advertising. If anything has changed in tracking since 2020, it’s that most people have opened their eyes to how flawed most tracking metrics are.
One of these flaws is the misbelief that users buy the same products they click on in Google Shopping. As much as 60% of users buy a different product than the one they clicked on, and through our studies, as much as 40% buy a completely different category.
This is wild to me, and it ruins any idea of using margins or average return on ad spend (ROAS) targets to run an account.
This, and much more, is what we will dive into in today’s article.
Good to Know If You Are New to Profit Tracking
When I refer to profit tracking, I’m not suggesting that you get a report on how much each campaign or marketing channel contributed to the bottom line.
Specifically, this means that the profit tracked from each transaction is the value you send to Google Ads, Facebook Ads, Google Analytics, etc., not revenue.
Tracking your profits allows you to bid the exact amount you can afford, so you can maximize profits in real time instead of defaulting to an average ROAS metric.
A Couple of New Terms
Seeing this is a rather new field for most people, I want to explain some of the terms we’ll use in this post.
Profit: This is the profit derived from each transaction. It is calculated using discounts, cost of goods sold, shipping, taxes, transaction fees, etc., but doesn’t include overhead, warehouse costs, or the cost of the ad spend (although it could).
Profit on ad spend (POAS): This is similar to ROAS, but instead of revenue, we use profit.
Why Tracking Profit Beats Tracking Revenue
The most common way to establish a ROAS target is by using the following method:
- Sit-stand desks: Low margin, so the optimal ROAS is 500%.
- Office chairs: High margin, so the optimal ROAS is 250%.
Let’s set the target to an average of 375% ROAS and see where it goes.
Yes, I’m simplifying and exaggerating, but bear with me here.
In the end, this means that by pushing a 375% ROAS, you’re potentially leaving money on the table, as you are not pushing the office chair market as hard as you could.
Furthermore, you’re potentially losing money on selling sit-stand desks.
However, it averages out, right?
And that’s the problem: It doesn’t always average out, and it shouldn’t. You have the option to do something smarter, so do it.
Margin Custom Labels Are Not Good Enough
One solution that has gained much traction in Google Shopping over the last couple of years is using margins in a custom_label. This allows you to set lower ROAS targets for products with a high margin and vice versa.
The challenge with margins is that they only tell you the margin of the product that users click on in Google Shopping, not what they end up buying.
Agencies peddle bad advice, and most advertisers don’t understand this dynamic enough to push back.
Surprisingly, many users do not buy the product they clicked on in Google Shopping. In our studies, this figure was as high as 60%.
Another scenario occurs when users buy multiple products with different margins in a single transaction. Your margin data can’t track this, and your bidding is therefore inaccurate.
This problem becomes exponentially bigger with any increase in the number of products you have.
Here’s an example:
The advertised product is a kids’ smartwatch in blue.
Clicks on the product in Google Shopping produced 91 transactions with 101 items. Already, we can tell that 10% of transactions include more than one product.
Looking at the products sold, we get the following:
Out of 91 transactions that came after clicks on the blue kids’ smartwatch, only 45% of users bought the actual product:
- 45% bought the actual product.
- 13% bought the watch in another color.
- 11% bought in a similar product.
- 30% bought in a different category.
The products from different categories varied tremendously.
Purchases involved everything from wifi cameras to USB chargers to a DAB+ boombox. Somehow, someone searched for a kids’ smartwatch and bought a boombox.
This is just one example from data gathered over a 14-day period from one SKU in a store with +20,000 SKUs. Imagine the impact of all products over the course of a year.
Find Your Own Data
A way to find your own data is by checking the Google Analytics product performance report vs. the Google Ads report. Compare the SKU numbers with the item ID in Google Shopping to get an idea of how many sales are generated directly from Google Shopping for a product after it has been clicked on.
Set up a segment that shows only the clicks from one of your top 10 products in Google Shopping:
In the second step, you insert the product ID from Google Shopping. I know it says “Keyword,” but that’s how Google Analytics categorizes product groups in Google Shopping.
Ultimately, applying your margins using a custom_label is better than not doing anything. But when you have the option to track profit directly, then it is definitely the most preferable method by far, as evidenced by the flawed assumption that users buy what they click.
How Profit Tracking Works in Practice
Our favorite partner is ProfitMetrics.io.
In short, it works by making a profit calculation for each transaction. Instead of sending the full conversion value (revenue) to Google Ads (or Analytics or Facebook Ads), ProfitMetrics steps in as the middle man, sending only the profit value to Google Ads.
To do this, you need to include the cost of goods sold in your feed for ProfitMetrics. Other than that, the setup is fairly simple, and ProfitMetrics will complete all steps automatically once you have the cost of goods sold.
With ProfitMetrics, you also get full server-side tracking, enhanced conversion setup, and offline conversion import. Honestly, for some of our advertisers who don’t have a dedicated tracking team, we advise using ProfitMetrics just to obtain better initial tracking abilities.
Credit: ProfitMetrics.io
This is not a minor “add-on” because it solves a lot of the tracking issues that most advertisers experience at no added cost.
Case: 11% revenue increase, 84% profit increase. Wait, what?
For a case we’ve been running for a long time, we agreed to try to push for a higher profit level. We were already happy with the improvements made over our time working together, but the question remained:
If we worked at a 2x POAS target instead of 1.5x POAS, how much would our profit volume increase?
So we started pushing the bidding toward a higher POAS, knowing all too well that our profit volume might decrease in the experiment.
Profits went up—big time. We increased profits by 84% compared to the year before, but the big surprise was when we saw that there was only an 11% increase in revenue.
Compared to an 84% increase in profits, the 11% increase in revenue was abysmal.
How to Implement Profit Tracking in Google Ads
First, you need to get the profit from each transaction imported into Google Ads using simple software like ProfitMetrics.io, as explained above. This part is simple.
Then, you need to make the switch from using revenue to profit as your primary conversion action in Google Ads. This part is a bit trickier, but after a lot of trial and error, we have found a simple, bulletproof methodology.
Importing Profit to Google Ads
You’re changing your entire data foundation. That’s kind of a big deal (but worth it). Any automated bidding that you have running will have to be paused. (I’ll show you how to mitigate risk.)
So, it’s key that you’re doing a slow transition to avoid shocking the system.
The way to do this is as follows:
- Set up a ProfitMetrics account on ProfitMetrics.io.
- Import the profit conversion action to Google Ads.
- Set up custom columns to show profit and POAS.
- Set up custom columns to show revenue and ROAS.
Let’s go through these steps one by one.
- Set up a ProfitMetrics account on ProfitMetrics.io.
- Import the profit conversion action to Google Ads.
Go to Tools and Settings → Measurement → Conversions.
Set the conversion to be a secondary conversion action.
- Set up a custom column to show your profit and POAS.
The metric “All Conversion Value” must be selected or else it will not work. Then, choose the conversion action that you created for the formula:
- Set up custom columns to show revenue and ROAS.
Now, you should repeat the same steps for revenue and ROAS. The reason is that once you change your primary conversion action in the account, then you can’t really use historical data to compare year-over-year.
You still want to track your revenue, and by setting up custom columns for revenue and ROAS, you can do exactly that plus comparing year-over-year performance.
Switch Smart Bidding to Bid Based on Profit
You can’t just change over from revenue to profit tracking. This would wreak havoc on the Smart Bidding algorithm and substantially decrease your bids.
However, we have a proven solution.
The first thing you need to do after setting up the profit conversion action is to let it run for 30 days as a secondary conversion action.
The next steps are as follows:
- Understand what certain ROAS levels mean in terms of profit/POAS.
- When ready, replace your revenue with your profit conversion.
Again, let’s walk through each step below.
- Understand what your current performance equals in POAS.
According to this, a POAS target of 170% seems to be a good start to setting up a new Smart Bidding portfolio based on the current performance.
NB: The data above are from a couple of days. You should use a full 28-day period and any conversion lag for your target.
- When ready, replace your revenue with your profit conversion action.
For this part, you simply go back to your conversion settings and set your profit conversion action to your primary action.
Remember to change your other conversion action (the one for revenue) to Secondary, and verify that you have set the correct settings in the overview:
Once you’ve changed your conversion action to profit, you need to immediately make changes to your Smart Bidding setup.
However, that requires a bit of finesse, so let’s go through our method, which we’ve tweaked over more than 30 implementations.
Create a New Portfolio Bid Strategy for Smart Bidding
Once you know what you should set your ROAS (POAS) target to, the next step is to set up a new Portfolio Bid Strategy.
This is key.
If you do not set up a new Portfolio Bid Strategy, Smart Bidding will use historical data from the time you tracked revenue.
By setting up a new Portfolio Bid Strategy, Smart Bidding will use only the historical data from the profit-based conversion action—not the revenue conversion action.
That’s the key, and Smart Bidding can use the historical data when you start using profit as your primary conversion action. That way, you don’t have to start from scratch when making the shift, which is something most advertisers are scared to do.
Big Account and Want to Test?
You can do the same thing with just a single campaign by changing the conversion action at the campaign level and creating a portfolio bid strategy only for that campaign.
This way, you can get a sense of what happens when you switch the conversion action.
The Alternative: Supplement Revenue with Profit Data
Over the last three years, we’ve shifted primarily to tracking profit in many accounts.
However, around 2021, we started noticing a pattern. Accounts would perform worse after shifting to profit tracking.
SavvyRevenue started developing a theory: Smart Bidding has a harder time working with profit because less data is obtained with profit tracking. Instead of $100 in revenue, $10 in profit is obtained, and as mentioned, the POAS levels are much lower than ROAS levels—from maybe 500% ROAS to 120% POAS.
Going from a 120% POAS to a 130% POAS target in Smart Bidding is a very small change, which sometimes doesn’t give the needed result.
Now, this is solely an observation we’ve made, and Google are vehemently stating that it is not a problem for Smart Bidding to work with POAS levels.
But we found a few scenarios where you should consider waiting to replace the revenue conversion action with the profit conversion action, which I will go through below.
Can Smart Bidding Function with Profit Bidding?
The short answer is yes. It works perfectly fine in 80% of the accounts we run with profit tracking. However, we have seen some weird coincidences with growth in an account stagnating or outright dropping when shifting Smart Bidding accounts to profit tracking.
In almost all cases, we saw performance slowly increase again after we changed back to revenue as our primary conversion value.
The reason for this, I believe, is not universal but caused by a few rare occurrences:
- Advertisers start reacting differently to “low ROAS days” now that they can see they are losing money, and they thus try to micromanage daily performance—which is not advised.
- Lots of heavy promotions can take your profits near zero. This means the value Smart Bidding receives might go from $100 of profit per transaction to $5 per transaction.
- In heavily discounted markets, this happens routinely and results in very inconsistent data for Smart Bidding.
- There is no meaningful difference in your margins, so changing to profit bidding doesn’t produce a meaningful change.
However, we are unsure whether it might be the clients who become less patient. A low ROAS day is just that—a low ROAS day. When you track profits, a low ROAS day is sometimes shown as a loss on the day—that can be tough to swallow.
Google’s Smart Bidding team is confident that Smart Bidding can work with profit as a value and that Smart Bidding can differentiate between a 120% vs. 140% ROAS target, just as well as between a 400% vs. 500% target.
So, to answer my own question: Yes, it can definitely work. Just note that if performance starts going in the wrong direction, then it might be a good idea to switch back to revenue as your primary conversion value.
Don’t Worry about Implementation, Just Get Started
I always recommend just getting started with any of the necessary steps. Implementing profit tracking is a big deal if you try to do everything at once. However, it can all be boiled down into a couple of key steps:
- Set up ProfitMetrics: This allows you to understand your profit levels as you increase or decrease your ROAS targets. Just this should be enough motivation.
- Import profit to Google Ads: Now you can see the profit numbers live in your account.
- Last step: Start bidding based on profit instead of revenue.
It all starts with step one, which is very harmless, and it doesn’t require you to make any changes to what you do today.
It’s also not “yet another metric” to track. It’s THE METRIC to track for Google Ads, and combining this metric with a blended ROAS (or blended POAS) approach can be powerful for any eCommerce business.
So, I challenge you to get started.
17 thoughts on “Profit Tracking vs ROAS: When & How to Implement POAS in Google Ads”
Hi Andrew,
Thank you so much for your dedication and for writhing these great pieces.
Just a short question on setting up the profit tracking, if I may 🙂
The profits are apparently added on a product level and then imported into Ads. Do you also have to set this up on a order-level / aggregate base of the products in an order?
Just started with importing the profits into Analytics today and it might be self-explanatory in a later stage, but right now I am struggling with this a little.
Thanks again!
Christopher
Hi Chris,
Glad you enjoy them!
For profit-tracking to be effect it’s crucial that you import the profit from each transaction (or order). It needs to be a calculation that happens for each individual transaction rather than a blanket statement on the product level.
Does that make sense, or did I misunderstand your question? 🙂
Yes, it makes perfect sense. Thank you very much! 🙂
As an alternative one can use offline conversion uploads (periodic) using Google Ads API for that, but this obviously requires in-house development.
That’s another solution, but it requires a bit more than working with someone like ProfitMetrics. Also, ProfitMetrics allows you to include Facebook, SEO and other channels in your overall dashboard.
Hi Andrew,
Thanks for the post (and all the others) and the discover of profitmetrics.io. Some years ago, we tried to manage this through big scripts and google sheet and it was a nightmare.
I have a question. GDPR compliance and other things like ITP impact the attribution of the sales.
As you say in the post, the fluctuations of the POAS can be significant. So if I miss some of the sales because of tracking problems, is it not hard to manage?
It is already hard with ROAS. Some clients have 30% of the traffic through Safari with an average conversion delay of 3 days (this information was before ITP). Now that Safari deletes all cookies after 24h when it detects you come from an ad, we know we miss some attribution for our campaigns.
It impacts already the ROAS, but it seems it will impact more the POAS and can lead to a wrong analysis on Google Ads.
For some clients who comply with the GDPR laws in France, we saw in average 50% loss of data for all acquisition channels. With this loss, Google Ads Smart bidding algorithms, which were performing well, start to perform badly, as the data they receive was partly wrong (some conversions were not tracked and sent).
Tracking problems are tricky now and really impacts performances and strategies.
Don’t you have these problems too with your European clients? Thanks
Losing the data is very troublesome, yes. That’s why ProfitMetrics is tracked serverside. Meaning that they track every single sale.
GDPR laws are also very tough. 50% data loss is extreme, and even though we have seen those cases, then proper setups of cookie consent can result in only a 10% loss of data. Much easier to manage 🙂
How can I incorporate the ad spend into the profit calculation? Does Google pass back the cost of each individual click within the gclid parameter which I could use to calculate profit at the click/conversion level? I would need to use the ad spend for each individual click in order to calculate the profit.
Thanks!
That’s what ProfitMetrics does 🙂
It sends the profit back to Google Ads where the ad spend per click / keyword / product etc. is, so you can see it there.
Thx for the article Andrew!
I’m getting data in Google Ads for a month now, and we are looking into switching to profit as a primary conversion. In the article, you mention the following:
“Big Account and Want to Test?
You can do the same thing with just a single campaign by changing the conversion action at the campaign level and creating a portfolio bid strategy only for that campaign.
This way, you can get a sense of what happens when you switch the conversion action.”
That looks like an interesting test. But, when selecting a conversion action on campaign level, you can only choose webshop purchases, and when you don’t change profit to primary conversion, it wil still report on revenue as conversion value. But you can only change the primary and secundary conversion for the whole account, not campaign level. So when you set revenue and profit to primary, you’ll have the sum of both as conversion value in the complete account, and when you change revenue to secundary and profit to primary, the whole account will report on profit as conversion value.
How do you tackle this?
Thx!
Hello Andrew.
Awesome article! Thank you. We really love your blog.
We’ve implemented profit tracking in a different way.
We are already calculating and sending the profit value to Google Ads instead of the revenue (order value) directly from our e-commerce. So in our Ads account the Conv. Value is actually our profit. What do you think about this?
Other thing we need to do is to schedule conversion adjustments and modify the order value (profit) for past orders because we have an additional shipping cost that happens after a few days of purchase. Just to explain:
1º Customer places order
2º Conversion tracking fired with order temporary profit
3º After a few days (3-10) the order has additional costs.
4º We adjust that order value (profit) so it reflects the real profit.
Do you think constantly adjusting Conv. value can negatively impact Smart Bidding? This is our main concern at this time…
So in our Ads account the Conv. Value is actually our profit. What do you think about this?
That’s the recommended way 🙂 So that works as well.
I still like to have the revenue in there for the transition though. Also, for certain cases it can make sense to keep the revenue as a separate column to keep up with trends (i.e. margins slimming, which means volume is lower, but revenue stays the same, etc.).
“Do you think constantly adjusting Conv. value can negatively impact Smart Bidding? This is our main concern at this time…”
That’s fine. Smart Bidding knows how to work with delayed information like this. Just keep it steady and you are good!
Very good article Andrew.
I have few questions I couldn’t find the answers for anywhere and maybe you have it.
1. – Does Smart Bidding know which products you finally sell in order to boost them? Or they just know which products were clicked?
2.- Does Smart Bidding has more information if you are using Google Analytics for conversions than Google Ads conversions?
3.- What do you think about adding a conversion value for new buyers? It makes sense if these users will buy you in the future at no Ads cost.
Thanks, Jaume!
1) Yes! Or kind of. Smart Bidding will know the value of what was sold, which means products with better margins is “boosted”.
2) Google Ads. By far!
3) It’s a good idea if you can feed the data based on your own backend info, and not “cookie” info.
Nice article! Do you have any advice on ProfitMetrics alternatives (I am working with a very small business on Shopify with low AOVs, so ProfitMetrics is too expensive given they charge by order volumes).
I’m thinking about whether there’s a way to use more generic automation tools with offline conversion tracking, or whether a cheaper / more generic server side integration would work. Cheers!
I’m not familiar with a tool that can send the profit into Google Ads other than ProfitMetrics.io.
Lifetimely.io is a Shopify app that allows you to see your marketing breakdown based on profit although it doesn’t send the profit values into Google Ads.