Home › Strategy › Profit Tracking vs ROAS: When & How to Implement POAS in Google Ads
August 30, 2022
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.
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.
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.
The most common way to establish a ROAS target is by using the following method:
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.
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:
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.
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.
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.
This is not a minor “add-on” because it solves a lot of the tracking issues that most advertisers experience at no added cost.
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.
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.
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:
Let’s go through these steps one by one.
Go to Tools and Settings → Measurement → Conversions.
Set the conversion to be a secondary conversion action.
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:
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.
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:
Again, let’s walk through each step below.
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.
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.
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.
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.
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.
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:
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.
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:
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.
Your email address will not be published. Required fields are marked *
Save my name, email, and website in this browser for the next time I comment.
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.
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.
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.
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.