Free script
The POAS Script
A read-only Google Ads script that joins your SKU margins to Shopping and PMax performance, then reports profit on ad spend per product. No email required. No gate.
Most accounts are optimised to revenue because revenue is the number Google is given. This script shows you the other number: what each product actually contributes after margin. It takes about twenty minutes to set up.
What it gives you
- Product-level cost, revenue, conversions and ROAS from the Shopping performance view
- Contribution margin joined per item ID from your own sheet
- Gross profit and POAS calculated per SKU
- A verdict per SKU: Scale, Profitable hold, Marginal, or Losing money
- Account-level POAS and total gross profit generated by paid
Setting it up
1. Build the margin table
Create a Google Sheet with two tabs: Margins and POAS Report. In Margins, column A is the Merchant Centre item ID, column B is contribution margin after COGS, shipping, returns and payment fees. Decimals or percentages both work.
2. Paste the script into Google Ads
Tools > Bulk actions > Scripts > New script. Paste the file, set SPREADSHEET_URL, authorise, and preview. Nothing is changed in your account: the script only reads.
3. Set your break-even
TARGET_POAS defaults to 1.5. Set it to whatever your business actually needs a product to return once fixed costs are covered. This is the number that decides Scale, Hold, Cap or Cut.
4. Schedule it daily and read the bottom
The report sorts worst POAS first. The top rows are your leaks. That is the list you take into your next agency call.
POAS = (revenue x contribution margin) / ad spend
A product doing 6x ROAS on a 12% margin returns 0.72 POAS. A product doing 2.5x ROAS on a 55% margin returns 1.38. The second one is the business. Most accounts fund the first one because it looks better in the platform.
Frequently asked questions
What is POAS?
Profit on Ad Spend. Instead of dividing revenue by cost, you divide gross profit by cost. A 6x ROAS on a 12% margin product is a 0.72 POAS, which means every pound spent destroys 28p of profit.
Is the script really free?
Yes. No email required, no login, no gated download. Use it, edit it, share it with your current agency. There is no warranty and no support attached to it.
Will it change anything in my Google Ads account?
No. It is read-only. It queries the Shopping performance view and writes to your own spreadsheet. It does not touch bids, budgets or campaign settings.
What if I do not have margin data per SKU?
Set DEFAULT_MARGIN to your blended contribution margin and run it anyway. It will be directionally useful. The value goes up sharply once you load real per-SKU margins, which is usually a one-off export from your ecommerce platform.
Does this replace a proper POAS setup?
No. This reports POAS. A proper setup feeds margin back into Google as the conversion value so bidding optimises to profit rather than revenue. The script tells you whether that work is worth doing.
Once you have the numbers, the question is what to do with them
The script tells you which SKUs lose money. Restructuring the account so bidding respects that is the harder part. That is the work we do.