Skip to main content
Metrics type: Key MetricsCategory: Ad Platform
Advertising Cost of Sales, primary profitability gauge. Replaces generic ROAS hero for Amazon Ads.

At a glance

Advertising Cost of Sales, the primary efficiency metric on Amazon. ad_spend ÷ attributed_sales, expressed as a percentage. The inverse of ROAS (ROAS = 100% ÷ ACOS), so a 25% ACOS = 4× ROAS and lower is better. Industry-healthy ACOS sits at 15-25%; above 30% means non-brand campaigns are losing money for most categories.

Calculation

Calculated automatically from your Amazon Ads data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A US home-goods seller running a mature Amazon catalog: Sponsored Products on branded + non-branded search, Sponsored Brands as awareness, and a Sponsored Display remarketing line. The 30-day window covers 14 Mar 26 to 12 Apr 26. What’s interesting:
  1. Branded ACOS of 5% is “free money” but is not really acquisition. Those shoppers searched the merchant’s exact brand name; they were going to buy anyway. The $2,800 spend defends the slot from competitor-conquest ads. The 5% ACOS makes the blended hero look healthy and disguises a less-flattering non-branded number, agencies who quote a single ACOS number are nearly always quoting the blended figure. Always split using Branded vs Non-Branded Spend.
  2. Non-branded ACOS at 32% is right at the edge of profitability. Industry rule of thumb: target ACOS = gross margin × (1 - desired profit margin). A category with 60% gross margin can absorb up to ~40% ACOS at break-even. At 32%, the merchant is still profitable but has limited headroom; a 4-percentage-point rise on a competitor squeeze would tip the campaign loss-making.
  3. SB Awareness Banner’s 51% ACOS is misleading, top-of-funnel measurement against bottom-of-funnel intent. Sponsored Brands’ real value is the organic halo (the awareness boosts non-paid search rank and DTC site traffic, neither of which Amazon attributes back). Use Sponsored Brands Halo Effect before judging SB on ACOS alone.
  4. The blended 21% looks healthy but reflects $2,800 of cheap brand defence pulling the average down. Strip the branded line and the blended ACOS becomes 27.5% (ROAS 3.6×), much closer to the real cost of incremental sales.
  5. Prior 30D ACOS was 19.4%, so today’s 21.2% is a 1.8-percentage-point worsening, equivalent to ROAS dropping from 5.15× to 4.71×. Below the 40% warn threshold but worth investigating, the SP Auto Targeting campaign is drifting (30.4% this period vs 24% last period).
Quick sanity tests:
  • ACOS down + sales up = healthy scaling on efficient inventory.
  • ACOS up + sales up = scaling beyond the efficient frontier (commonest cause of an alert).
  • ACOS flat + sales down = competitive pressure or seasonality, not your campaigns failing.
  • ACOS up sharply with no sales drop = a single high-spend campaign drifted; check ROAS by Campaign.
  • Branded ACOS rising = competitor conquest bidding has entered your auction.

Sibling cards merchants should reference together

Reconciling against the vendor’s own dashboard

Where to look in Amazon Ads Console: Amazon Ads Console > Campaign Manager, the default Campaign Manager view shows ACOS in the column set per campaign. The total at the top of the table should match this card to within ~1%. Amazon Ads Console > Reports > Sponsored Products / Brands / Display is the report-builder view, useful for breaking ACOS by ad type. Choose a 30-day window and the same date range, the totals match. Amazon Ads Console > Recommendations. Amazon’s own optimisation suggestions. Useful as a sanity-check on what Amazon thinks the inefficiency is. Why our number may legitimately differ from Amazon Ads Console: Cross-connector reconciliation:

Known limitations / merchant FAQs

ACOS vs ROAS, which one should I use? Same data, different convention. ACOS (spend ÷ sales) is what Amazon uses; ROAS (sales ÷ spend) is what Google Ads / Meta use. Convert with ROAS = 100% ÷ ACOS. So 25% ACOS = 4× ROAS. Use the one your team already thinks in; the underlying number is identical. Most Amazon-native sellers think in ACOS; cross-platform marketers prefer ROAS for comparability. Why is my Branded ACOS 5% but my non-branded ACOS 35%? Brand-keyword shoppers searched for your exact name; they were going to buy anyway. The 5% spend defends the slot from competitor-conquest ads but isn’t really acquisition cost. Non-branded keywords compete in the open auction against everyone in your category, so the cost-per-sale is realistically 4-6× higher. A blended hero ACOS is therefore not directly actionable, always split using Branded vs Non-Branded Spend. Agencies who quote a single ACOS number are nearly always quoting the branded-inflated blend. My Sponsored Brands ACOS is 50%, should I pause SB? Probably not. SB ads are mid-funnel awareness placements; the real value is the organic halo (your brand awareness boosts non-paid search rank and external traffic). Amazon doesn’t credit any of that back into the SB ACOS, so the metric undercounts SB’s true contribution. Open Sponsored Brands Halo Effect before deciding. As a rule of thumb, judge SB on new-to-brand sales rather than ACOS. Why doesn’t my Amazon Ads ACOS reconcile with my Google Ads ROAS? Different ecosystems. Amazon Ads only sees clicks-to-purchases inside Amazon; Google Ads only sees clicks on Google properties. The two audiences barely overlap (Amazon shoppers are bottom-funnel intent; Google PMax/Search audiences are broader). Don’t try to add the two budgets and divide into total revenue, the result is meaningless. Treat them as separate channels with separate ACOS/ROAS targets. What changed when Amazon updated the attribution window? The default click attribution window is 14 days for Sponsored Products / Brands / Display. If you re-pull historical reports, you’ll see ACOS shift slightly because Amazon may re-attribute late conversions. The card uses 14d default; switching the report request to 7d will tighten ACOS (lower attributed sales for the same spend, so higher ACOS). Settings live on each report request, not at account level. I sell on US, UK, and DE marketplaces, why are these reported separately? Each marketplace is a separate Amazon Advertising account with its own currency. ACOS is not aggregable across them in any meaningful way; an exchange-rate-converted total is mathematically suspect because the attributed_sales were transacted in local currency. Run one Vortex IQ connector per marketplace; compare ACOS in local currency. Can I trust today’s ACOS? Less than 30-day rolling. Amazon’s attribution is continuous, sales attributed to today’s clicks will keep landing for the next 14 days. Today’s ACOS is provisional and will improve over the next two weeks as late conversions roll in. Don’t restructure campaigns based on a single day’s ACOS; the 7-day rolling is the actionable read. DSP vs Sponsored, do they share the same ACOS? No. DSP (Demand-Side Platform, programmatic display + video) reports through a separate Reports API and uses 14-day-click + 14-day-view attribution by default. DSP ACOS often looks worse than Sponsored ACOS because DSP runs top-of-funnel awareness; ACOS is not the right yardstick for DSP. Use DSP vs Sponsored Spend Mix for the strategic split, and judge DSP on reach and new-to-brand share. How do I set my target ACOS? The merchant playbook: target_ACOS ≤ gross_margin × (1 - desired_profit_margin). So if gross margin is 60% and you want 10% net profit on the marketed line, target ACOS is 60% × 0.90 = 54%. If gross_margin × (1 - target_ACOS) > break-even, scale. A category with 60% gross margin is profitable at any ACOS below ~50%; below 25% you have headroom to scale spend until ACOS rises to that level.

Tracked live in Vortex IQ Nerve Centre

ACOS is one of hundreds of KPI pulses Vortex IQ tracks across Amazon Ads and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.