In my previous post, From 3rd Party To 1st Party: The Evolution Of The Google Advertising Toolset, I wrote about the evolution of AdWords data and how recent changes have constricted the incremental value presented by third-party paid search tools. I wrote in loose terms about using internal analytics to calculate average profit per conversion to use in AdWords Conversion Optimizer.
In this post, I will detail the logic behind and process of incorporating margins into bidding at the CPA and CPC level, in case you prefer manual bid management to cost-per-acquisition based management.
Depending on available data sources, you might have access to internal analytics considering margins or you may be limited to ad server data. For the purposes of this article, I am going to assume that we’re starting with gross revenue aggregated to the keyword level (standard AdWords and Google Analytics reporting). As a result, this process is applicable if you have access to basic analytics or ad server data sets.
An ad serving reporting platform will only display revenue that is captured by the associated pixel or integrated analytics platform. Because pixels are placed on order confirmation pages in the shopping cart, standard practice is to display gross revenue in the reporting platform rather than net revenue. Marketers must manage advertising performance to a return on ad spend (ROAS) or cost per acquisition (CPA) backed out from profitability goals using gross metrics.
At a high level, it’s relatively easy to apply margins to gross revenue to extrapolate thresholds for profitability. If the average margin per sale is known, then the theoretical maximum an advertiser can pay for a transaction is equal to the margin (assuming a customer lifetime value of 1x retail price of their first purchase).
The idea behind average net profit per conversion is to identify the point in time when net revenue is equal to marketing expenses. Using a 30 day cookie, if we manage to a CPA equal to average net profit, then we are establishing a cash flow break-even point of 30 days. Advertisers with more robust analytics can do this same calculation to identify the point where marginal cost is equal to marginal revenue (0 economic profit) on a sliding timeline to determine how much they want to hedge short-term losses in favor of long-term profits.
Gross Margin = Revenue – Cost of Goods
Net Margin = Gross Margin – Operating Expenses
Consider the following situation:
- Average Order Value: $100
- Cost of Goods (cogs): $50
- Gross Margin: $50
- Operating Expenses: $25
- Net Margin: $25
In this situation, the net profit per order is $25, meaning that the maximum acceptable CPA would be $25 on a $100 order. If all orders have the same revenue, cogs, and operating expenses, then we could easily manage advertising expenses to a maximum $25 CPA or minimum 4:1 ROAS, at which point there is no profit to the business on a 30 day basis. If the business has a CLV greater than 1x, then we can manage to a CPA higher than $25 or a ROAS lower than 4:1 and still make a profit.
In most cases, businesses have multiple products with unique margins. As a result, we can make an accurate set of assumptions by using global average margin or category average margin to more accurately calculate average profit per transaction within an account. Simply create a spreadsheet of category margins and run a lookup against this spreadsheet to calculate average profit at the keyword level.
Because CPA = CPC / Conv Rate, we can easily add in profit per click:
So, depending on how much profit must be realized in the initial 30 days, Profit / Click defines the max CPC for a 30 day economic profit of 0. If profit in 30 days is required, simply multiply the profit/click or profit/conv by the required economic profit percentage to determine the ideal CPC or CPA.
Below is the same table with a 50% economic margin and updated iCPC / iCPA:
What makes each bidding system unique is the process by which observed CPCs and CPAs are optimized toward ideal CPCs and CPAs. Some just update to the new ideal number, while others slowly move in that direction so as to not shock the system. There is no right or wrong way, just options and iteration upon iteration. This is a good foundation to start with, but by no means the final product.
Please comment below, as I’d love to hear about the directions different members of the community have taken with their internal tools.
Opinions expressed in the article are those of the guest author and not necessarily Search Engine Land.