At a glance
Return on ad spend, the cross-platform-friendly view of the same data Amazon natively reports as ACOS. attributed_sales ÷ ad_spend. ROAS = 100% ÷ ACOS, so a 25% ACOS = 4× ROAS and higher is better. Industry-healthy ROAS sits at 4-6.7× (= ACOS 15-25%). Below 2× is unprofitable for most categories once COGS and Amazon fees are factored in.
| The formula | SUM(attributedSales14d) ÷ SUM(cost). Returned as a unitless ratio. ROAS is the inverse of ACOS, the same data, expressed in the convention most cross-platform marketers use. |
| Reports API endpoint | POST /reporting/reports on Amazon Advertising API v3, with reportTypeId per ad type (spCampaigns, sbCampaigns, sdCampaigns). DSP uses a separate Reports API. |
| ROAS vs ACOS framing | Same data, different convention. ROAS = sales ÷ spend (direct). ACOS = spend ÷ sales (inverse). Amazon natively reports ACOS; this card converts to ROAS for cross-platform consistency with Google Ads / Meta. ACOS 25% = ROAS 4×; ACOS 50% = ROAS 2×. |
| Attribution model | Last-click within Amazon ecosystem only. A click on a Sponsored Product ad attributes to that ad if the same shopper places an order on Amazon within the attribution window. No cross-channel visibility. |
| Default attribution window | 14-day click for Sponsored Products / Brands / Display. DSP uses 14-day click + 14-day view. The window is configurable per report request (1d / 7d / 14d / 30d). |
| Brand vs non-brand keyword scope | Critical and reported separately when keywords are tagged. Branded ROAS commonly 15-25× (very high because the audience was going to buy anyway). Non-branded ROAS 2.5-4× (the real acquisition cost). The blended hero number hides this; cross to Branded vs Non-Branded Spend. |
| Sponsored Products vs Brands vs Display vs DSP | SP (search-result ads, bottom-funnel, highest ROAS). SB (banner search ads, mid-funnel, lower ROAS but with halo). SD (audience-driven product ads). DSP (programmatic display + video, top-of-funnel. ROAS undercounts DSP’s value). Each ad type has its own report endpoint. |
| Currency | Account currency only (set per Amazon Advertising account, locked at marketplace creation). Multi-marketplace = separate accounts. |
| Amazon-only attribution gap | If a shopper clicks an Amazon ad, leaves Amazon, then buys on the merchant’s DTC Shopify or BigCommerce site later, Amazon never sees the sale and the DTC platform never sees Amazon’s role. The two ecosystems are completely siloed. ROAS understates the ad’s true contribution to the merchant’s combined revenue. |
| Time window | 30D vsP (default 30 days vs the prior 30 days). Today is provisional for ~24h; the 14-day click window means today’s ROAS will improve over the next two weeks as late conversions land. |
| Alert trigger | <2 (warn), <1 (critical). <1 means ad spend exceeds ad-attributed sales (loss before any cost-of-goods). |
| Roles | owner, marketing, finance |
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, same account as the ACOS example. The 30-day window covers 14 Mar 26 to 12 Apr 26.| Campaign group | Spend | Attributed sales (14d) | ROAS | Equivalent ACOS |
|---|---|---|---|---|
| SP, Branded Search | $2,800 | $56,000 | 20.0× | 5.0% |
| SP, Non-branded | $14,200 | $43,800 | 3.08× | 32.4% |
| SP, Auto Targeting | $3,400 | $11,200 | 3.29× | 30.4% |
| SB, Brand Awareness Banner | $4,800 | $9,400 | 1.96× | 51.1% |
| SD, Remarketing | $1,600 | $5,800 | 3.62× | 27.6% |
| Total (this card) | $26,800 | $126,200 | 4.71× | 21.2% |
- The blended 4.71× hides huge per-campaign variance. Branded Search at 20× is largely free revenue (people searching the brand name were buying anyway). SB Awareness Banner at 1.96× is below the 2× warn threshold. The hero ROAS is useful as a directional read but ROAS by Campaign is what drives daily decisions.
- Branded Search inflates everything. If you exclude branded keywords, the “true acquisition” ROAS drops to about 3.0×. Most agencies reporting ROAS to clients quietly include branded; for honest reads exclude it.
- Sponsored Brands at 1.96× looks unprofitable but probably isn’t. SB is mid-funnel awareness; the real value is the organic halo Amazon doesn’t credit. Open Sponsored Brands Halo Effect before pausing SB.
- A category-typical break-even ROAS for a 60%-margin product is ~1.7×. At 4.71× the merchant has comfortable headroom; at 2× they’d be in the warning zone; below 1.7× they’d be losing money before overheads.
- Prior 30D ROAS was 5.15×, so today’s 4.71× is a modest 8.5% drop. Spend rose ~5% while ROAS fell 8.5%, a directionally normal “scaling beyond the efficient frontier” pattern. Watch ROAS Trend for the 7-day rolling.
- ROAS up + spend up = healthy scaling on efficient inventory.
- ROAS flat + spend up = scaling without losing efficiency. Good.
- ROAS down + spend up = scaling beyond efficient frontier. Most common cause of an alert.
- ROAS down + spend flat = something changed in attribution or competitive landscape. Investigate before cutting.
- ROAS up + spend down = pulled back wisely from low-quality inventory. Good if intended.
Sibling cards merchants should reference together
| Card | Why pair it with ROAS |
|---|---|
| Amazon Ads ACOS | The same data expressed as a percentage instead of a multiple. Use whichever convention your team thinks in. |
| Amazon Ads Total Spend | The denominator. ROAS up + spend up = healthy scaling; ROAS up + spend down = retreat from low-quality inventory. |
| Amazon Ads Total Revenue | The numerator. Tells you whether ROAS moved on cost-side or revenue-side. |
| Amazon Ads ROAS by Campaign | Headline ROAS hides per-campaign variance. Open this before making decisions. |
| Amazon Ads ROAS Trend | Daily series. ROAS is volatile day-to-day; the 7-day rolling is the actionable read. |
| Amazon Ads TACOS | The strategic complement, “are ads growing the whole pie or just shifting attribution?” |
| Branded vs Non-Branded Spend | Branded ROAS dominates the blended figure; always split. |
| Sponsored Brands Halo Effect | SB ROAS undercounts organic lift. Use this before judging SB on ROAS alone. |
| Google Ads ROAS | The cross-platform paid-acquisition comparison, useful for budget allocation between Google and Amazon. |
| Shopify Total Revenue | The other half of merchant revenue (DTC). Amazon Ads has zero visibility into Shopify. |
Reconciling against the vendor’s own dashboard
Where to look in Amazon Ads Console: Amazon Ads Console > Campaign Manager. Amazon natively reports ACOS, not ROAS. To convert: ROAS =100% ÷ ACOS. So a Campaign Manager column showing 25% ACOS = 4× ROAS in this card.
Amazon Ads Console > Reports > Sponsored Products / Brands / Display, same conversion applies. Some report templates include a derived “Sales/Spend Ratio” which is mathematically identical to ROAS.
Amazon Ads Console > Recommendations. Amazon’s optimisation suggestions surface in ACOS terms. Convert as needed.
Why our number may legitimately differ from a derived ROAS in Amazon Ads Console:
| Reason | Direction of divergence | Why it happens |
|---|---|---|
| Timezone. Amazon Advertising reports use PT (Pacific) regardless of account location. Vortex IQ aligns to PT. | None when both are PT-aligned. | Amazon’s reporting backend is in Seattle. |
| Report-generation latency (1-3 hours). | Today’s ROAS is provisional for ~24h. | Amazon batches report builds; the most recent hours catch up on the next refresh. |
| ACOS calculation timing. The 14-day click window means today’s numerator continues to land for two weeks. | Today’s ROAS will rise over the next 14 days as more attributed sales land. | Amazon re-attributes nightly; this card re-pulls every 4 hours. |
| API rate limits. Amazon Advertising API enforces ~2 requests/sec; large accounts may have stale partials during heavy refresh. | Stale by up to 1 refresh cycle (~4h) in extreme cases. | The pull is paginated and rate-limited. |
| Attribution window choice. If Amazon Ads Console is set to a 7-day-window report, ROAS will look lower than this card’s 14d default. | This card may show higher ROAS than the Console’s 7d view. | The wider window captures more sales against the same spend. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
amazon_sp.amzn_sp_total_sales | Ad-attributed sales ≤ Selling Partner Total Sales. The gap is organic. | Amazon Ads attribution doesn’t include marketplace organic; Selling Partner reports the whole order. |
google_ads.gads_roas | No relationship. Separate ecosystems. | Don’t try to add the two; the audiences are mostly disjoint. Treat as independent budget lines. |
google_analytics.ga_revenue_by_channel | Amazon traffic on the merchant DTC site shows in GA4 as referral source amazon.com. This is incremental DTC revenue Amazon Ads does NOT see. | The Amazon-only attribution gap. |
shopify.total_revenue | No direct relationship. Different sales channel. | Don’t compare. |
Known limitations / merchant FAQs
ROAS vs ACOS, which one should I use? Same data, different convention. ROAS = sales ÷ spend (a multiple, higher is better). ACOS = spend ÷ sales (a percentage, lower is better). Convert withROAS = 100% ÷ ACOS. Amazon natively shows ACOS, this card converts to ROAS for cross-platform consistency with Google Ads / Meta. Pick whichever your team already thinks in.
My ROAS is 5× and my finance team says I’m losing money, who’s right?
Probably finance. Amazon’s attributedSales14d is gross revenue, before COGS, Amazon fees, FBA fulfilment, returns, and overhead. A 5× ROAS on 60% gross margin and 15% Amazon fees gives you a contribution margin of roughly 1.4×, marginally profitable. The rule of thumb: divide ROAS by 2 to get a rough “true contribution multiple” for typical Amazon FBA economics.
Why is my Branded Search ROAS 20×+?
People searching for your exact brand name were going to buy anyway. Branded Search captures ~70-90% of that intent for cheap clicks. Branded ROAS is a poor measure of paid-acquisition health, you’re not really acquiring those customers, you’re paying Amazon to defend them. The “true acquisition” ROAS uses non-branded campaigns only.
My ROAS dropped 30% overnight, what should I check?
In order of likelihood: (1) Attribution-window settling. The 14-day click window means yesterday’s number isn’t final yet; check again in 48-72 hours. (2) Promo-period rollover. ROAS during a Lightning Deal rolls into “normal” the day after; sales attribution catches up unevenly. (3) Competitor entered the auction. Check CPC Trend for sudden spikes. (4) ASIN went out of stock. Check Active Ads on Out-of-Stock SKUs, zero conversion against continuing spend. (5) Buy Box loss. Check Active Ads on No-Buy-Box ASINs.
Should I optimise for ROAS or for total ad-attributed revenue?
Depends on your phase. Profitability-constrained: optimise for ROAS. Growth-focused with profitable unit economics: optimise for absolute attributed sales volume. ROAS will compress as you scale into less-efficient inventory but total profit grows. The right answer is rarely “highest ROAS”; usually it’s “highest ROAS subject to spending the budget”.
Why doesn’t my Amazon Ads ROAS match my Google Ads ROAS?
Different ecosystems. Amazon Ads only sees clicks-to-purchases inside Amazon; Google Ads only sees clicks on Google properties. The audiences barely overlap (Amazon shoppers are bottom-funnel intent; Google PMax/Search audiences are broader). Don’t try to combine the two, treat them as separate channels with separate ROAS targets.
Can I trust today’s ROAS?
Less than the 7-day rolling. ROAS for today is built from incomplete data, the 14-day click attribution window means today’s numerator continues to grow for two weeks. Don’t restructure campaigns based on a single day’s ROAS; the 7-day rolling is the most actionable.
Multi-marketplace, how does ROAS work?
Amazon Advertising accounts are single-marketplace by design. Multi-marketplace sellers run separate accounts per marketplace. Each account reports ROAS in its own currency. This card is per-account.
My ROAS-target playbook?
The merchant heuristic: target_ROAS ≥ 1 ÷ (gross_margin × (1 - desired_profit_margin)). So if gross margin is 60% (after Amazon fees) and you want 10% net profit, target ROAS is 1 ÷ (0.6 × 0.9) = 1.85× minimum. Below that, you’re losing money. If gross_margin × (1 - 1/ROAS) > 0, the campaign is contribution-positive and worth scaling.