How to Record Ad Spend So Your Amazon Profit Numbers Aren’t Lies
9 min read
Last month, SKU B07X showed a 15% margin in Amazon Seller Central. We bragged about it in the team chat. Then we pulled the raw P&L and found the "margin" was actually a 3% loss once we added Amazon Ads, DSP, and off-Amazon Facebook spend. The numbers lied because we treated ad spend like a vague ‘marketing cost’ instead of a direct cost per SKU. If you’re still dumping all ad dollars into one bucket labeled ‘Advertising,’ your profit reports are fiction. Here’s how to record ad spend so your numbers match reality.
Why Your Profit Numbers Are Wrong (And How to Fix It)
Amazon’s Business Reports give you revenue and COGS, but they stop there. Platform fees? Fine. Refunds? Fine. But ad spend? It’s lumped into one ‘Amazon Advertising’ line that tells you nothing about which SKU is actually profitable. We learned this the hard way when SKU B08Y started bleeding cash in Q2. The dashboard said 12% margin. The truth? After allocating Facebook ads, TikTok ads, and Amazon DSP by SKU, B08Y was at -8%. The fix is simple: stop guessing. Start tracking every ad dollar against the SKU that drove it.
Here’s the brutal math: if you spend $100 on Amazon Sponsored Products for SKU A and $200 for SKU B, but your reports only show $300 total ad spend without splitting it, you’re flying blind. A 20% margin on SKU A could turn into a 5% loss once you realize $100 of ad spend belongs to it. The only way to know is to record ad spend per SKU, not per campaign.
The Tools You Need (And What to Avoid)
You don’t need another dashboard. You need a system that forces you to assign every ad dollar to a SKU before it’s spent. Here’s what works:
Amazon Ads API. It’s free, it’s real-time, and it gives you impression, click, and spend data down to the campaign level. Pull it daily and match it to SKUs using the ASIN in the campaign name or the targeting report. If you’re not using the API, you’re manually exporting CSVs and praying you didn’t miss a campaign.
TikTok Shop Ads Manager. Same deal. Export the ‘Spend’ column and match it to SKUs via the product ID in the ad set. If you’re running dynamic product ads, split the spend by the SKUs in the catalog feed.
Facebook Ads Manager. Use the ‘Breakdown by Product ID’ in the Ads Reporting tool. It’s buried, but it’s there. Export it weekly and match it to your SKUs. If you’re running catalog sales campaigns, split the spend by the SKUs in the product set.
Avoid ‘all-in-one’ tools that promise to ‘sync’ your ad spend. Most of them round numbers, misattribute spend, or charge you $50/month for a feature you can do in Excel. If the tool doesn’t let you see spend per SKU in a raw CSV, skip it.
How to Allocate Ad Spend to SKUs (Without Losing Your Mind)
Here’s the system we use. It’s not fancy, but it works. We pull three reports daily: Amazon Ads API, TikTok Shop Ads Manager, and Facebook Ads Manager. Then we match the spend to SKUs using the product ID or ASIN. If a campaign targets multiple SKUs, we split the spend proportionally based on the revenue each SKU drives in the last 30 days.
For example, if Campaign X spent $500 and SKU A drove $1,200 in revenue while SKU B drove $800 in the last month, we allocate $300 to SKU A and $200 to SKU B. It’s not perfect, but it’s better than dumping the whole $500 into one bucket. The key is consistency. If you switch allocation methods mid-month, your numbers will lie to you.
We also tag every ad dollar with the SKU’s cost center. If SKU C costs $8 to source and sells for $20, but we spend $5 on ads to move it, the true margin is $7, not $12. Without this tagging, you’re optimizing for the wrong metric.
How to Feed Ad Spend Into Your Profit Reports
Once you’ve allocated ad spend to SKUs, the next step is to feed it into your profit reports. If you’re using a tool like Gomarginify, set up a custom cost category called ‘Ad Spend – SKU Level’ and map it to your SKUs. The tool will pull the ad spend from your API exports and subtract it from revenue before calculating margin.
If you’re doing it manually, create a spreadsheet with columns for SKU, revenue, COGS, platform fees, ad spend, shipping, refunds, and net profit. Pull revenue from Amazon’s Business Reports, COGS from your inventory system, platform fees from the Fee Preview report, shipping from your carrier invoices, refunds from the Returns report, and ad spend from your allocation sheet. Then subtract everything from revenue to get net profit.
The first time you do this, you’ll find SKUs you thought were profitable are actually bleeding cash. SKU D09Z looked great at 22% margin until we added $18 in ad spend per unit. Suddenly, it was at -5%. The shock is temporary. The fix is permanent.
Step by step
- 1
Step 1: Pull Ad Spend Data from Every Channel Daily
Set up API access for Amazon Ads, TikTok Shop Ads Manager, and Facebook Ads Manager. Pull the ‘Spend’ column from each platform’s reporting tool. If you’re running off-Amazon ads on Google or Snapchat, export the spend and SKU mapping from their reporting tools. Do this daily. If you wait until the end of the month, you’ll miss campaigns that started and stopped mid-month, and your numbers will be wrong.
Pro tip: Use a scheduler like Zapier or Make to pull the data automatically and dump it into a Google Sheet or Airtable. If you’re doing it manually, set a calendar reminder for 9 AM every day. Missing a day means your profit reports are already lying to you.
- 2
Step 2: Match Ad Spend to SKUs Using Product ID or ASIN
For Amazon Sponsored Products, use the ‘Targeting’ report in Amazon Ads Manager. It gives you the ASIN and spend per campaign. If a campaign targets keywords, split the spend by the SKUs that appear in the search term report for the last 30 days. For TikTok Shop, use the ‘Product ID’ column in the Ads Manager reporting tool. For Facebook, use the ‘Breakdown by Product ID’ in Ads Reporting.
If a campaign targets multiple SKUs, split the spend proportionally based on revenue. For example, if Campaign Y spent $300 and SKU E01A drove $1,500 in revenue while SKU F02B drove $500, allocate $225 to E01A and $75 to F02B. It’s not perfect, but it’s better than dumping the whole $300 into one bucket.
- 3
Step 3: Tag Every Ad Dollar with the SKU’s Cost Center
Create a cost category in your accounting system or profit tool called ‘Ad Spend – SKU Level’. Tag every ad dollar with the SKU it’s driving. If SKU G03C costs $12 to source and sells for $30, but we spend $8 on ads to move it, the true margin is $10, not $18. Without this tagging, you’re optimizing for the wrong metric.
If you’re using a tool like Gomarginify, set up a custom cost category and map it to your SKUs. The tool will pull the ad spend from your API exports and subtract it from revenue before calculating margin. If you’re doing it manually, add a column in your spreadsheet called ‘Ad Spend – SKU Level’ and fill it with the allocated spend for each SKU.
- 4
Step 4: Feed Ad Spend into Your Profit Reports
If you’re using a tool, set up a custom cost category for ‘Ad Spend – SKU Level’ and map it to your SKUs. The tool will pull the ad spend from your API exports and subtract it from revenue before calculating margin. If you’re doing it manually, create a spreadsheet with columns for SKU, revenue, COGS, platform fees, ad spend, shipping, refunds, and net profit.
Pull revenue from Amazon’s Business Reports, COGS from your inventory system, platform fees from the Fee Preview report, shipping from your carrier invoices, refunds from the Returns report, and ad spend from your allocation sheet. Then subtract everything from revenue to get net profit. The first time you do this, you’ll find SKUs you thought were profitable are actually bleeding cash.
- 5
Step 5: Review and Adjust Weekly
Set a recurring calendar event for every Friday at 4 PM to review your profit reports. Look for SKUs with negative margins or margins below your target. Check the ad spend allocation for those SKUs. If a SKU is losing money, pause the campaigns driving spend to it or reallocate spend to SKUs that are profitable.
We once found SKU H04D was at -12% margin because we were spending $15 on ads per unit. We paused the campaigns and the margin jumped to 8%. The fix was simple: stop throwing money at a SKU that wasn’t profitable. If you’re not reviewing weekly, you’re leaving money on the table.
- 6
Step 6: Automate the Process (Or Suffer the Consequences)
If you’re still doing this manually, you’re wasting time and introducing errors. Set up a system to pull ad spend data daily, allocate it to SKUs, and feed it into your profit reports automatically. Use a tool like Gomarginify, or build a simple script in Python or Google Apps Script to pull the data and update your spreadsheet.
We switched to automation in March and saved 10 hours a month. More importantly, our profit reports became accurate. SKU I05E was showing 18% margin until we automated the process. The truth? It was at -3% once we added ad spend. The automation didn’t fix the problem—it just exposed it. But exposing it is the first step to fixing it.
FAQ
Do I really need to pull ad spend daily, or can I do it weekly?
Pull it daily. If you wait until the end of the week, you’ll miss campaigns that started and stopped mid-week, and your profit reports will be wrong. We tried weekly pulls once and found a $200 campaign that ran for 3 days and was completely missing from our reports. The daily pull caught it, and we adjusted the allocation before it skewed our numbers.
What if a campaign targets multiple SKUs? How do I split the spend?
Split it proportionally based on revenue. For example, if Campaign X spent $500 and SKU A drove $3,000 in revenue while SKU B drove $2,000 in the last 30 days, allocate $300 to SKU A and $200 to SKU B. It’s not perfect, but it’s better than dumping the whole $500 into one bucket. If the campaign is new and there’s no revenue history, split it evenly or use impression share as a proxy.
How do I handle SKUs that aren’t in the ad platform’s reporting tool?
If a SKU isn’t in the ad platform’s reporting tool, it’s probably not being targeted by ads. But if you’re running dynamic product ads or catalog sales campaigns, the SKU might be in the product set but not in the spend report. In that case, pull the ‘Product ID’ breakdown from the ad platform’s reporting tool and match it to your SKUs. If the SKU still isn’t showing up, it’s not being targeted, and you don’t need to allocate spend to it.
Track your real profit across every marketplace
Your Amazon profit reports are wrong because ad spend isn’t tracked right. Here’s how to fix it—step by step—so SKU margins stop lying to you.
Start 7-day free trial