Buybox & advertising

Analyse OTTO Ads: Identify campaigns with low ROAS

Which OTTO Ads campaign should you check first? Compare ROAS, advertising costs and attributed revenue using clear periods and practical AI prompts.

Start with OTTO Ads campaigns that fall below your own target ROAS and incur the highest advertising costs during the selected period. This requires complete data, a consistent revenue definition and correctly converted monetary values. A low ROAS on a few euros of spend calls for a different check from a narrowly missed target on high spend. Missing data needs to be resolved separately first.

This workflow applies to OTTO Sponsored Product Ads, meaning product advertisements. With the Backlane OTTO integration, you can read campaigns and their metrics from your connected OTTO account in an AI chat. The Backlane documentation explains the setup. The following prompts are templates; the running seller example is entirely fictional and contains no results from a customer account.

What does OTTO ROAS tell you, and what is missing from a profit assessment?

ROAS, short for Return on Ad Spend, divides revenue attributed to advertising by advertising costs: totalSales / totalCosts. A ROAS of 2 means two euros of attributed revenue for each euro of advertising cost. By itself, it does not tell you whether a campaign is commercially worthwhile.

For totalSales, OTTO uses product-level attribution: the advertising interaction and purchase refer to the same product. Even the aggregate campaign metric therefore does not automatically include every purchase of another product in that campaign. By contrast, totalSalesSeller in the product report captures attributed sales of the same brand from that seller. Keep the two measures separate. The OTTO reporting documentation explains the attribution.

Advertising revenue is therefore neither total OTTO order revenue nor profit. A commercial assessment also needs factors such as purchase costs, marketplace fees, shipping, returns and your campaign objectives. ROAS alone also does not reveal the share of additional sales that would not have happened without advertising.

Set a target that fits your own economics. Without that benchmark, AI can sort campaigns by costs and trends but cannot reliably label any of them “below target”. A universal definition of good OTTO ROAS would be too imprecise for this purpose.

How do you get a comparable campaign overview?

Start with the complete campaign list and use the actual campaign IDs to retrieve metrics. Names make the results easier to read; campaignId keeps the mapping unambiguous. Include paused or ended campaigns if they incurred costs during the period being analysed. Their current status does not describe their whole history. OTTO explains campaign states in its Sponsored Product Ads documentation.

Backlane provides read-only queries for the campaign list and campaign metrics. The list is paginated; more campaigns may follow after the first page. GET /campaign-performance returns aggregate metrics for a specified campaign ID, not automatically a ranking of all campaigns.

Next, choose two periods of equal length. OTTO documents a reporting window covering the last 90 days, excluding the current day. fromDate and toDate include their boundaries and use CET/CEST. Supply both dates; without both, the direct metrics query defaults to seven days. See OTTO’s date rules.

Have these details displayed for each campaign:

DetailWhy you need it
Campaign ID, name and current statusUnambiguous matching and context
Period actually returnedCheck that both comparisons use the same boundaries
totalCosts and totalSalesTraceable basis for ROAS
returnOnAdSpendRatio supplied by OTTO
lastCalculatedAt and retrieval timeDistinguish when metrics were calculated from when you queried them
Data gaps or retrieval errorsAvoid treating incomplete results as zero

The current response schemas define totalCosts, totalSales and costPerClick in euro cents. Divide monetary values by 100 to display them in euros. ROAS is already a ratio and is not converted. Take care with archived analyses: OTTO corrected units and the ROAS calculation on 20 October 2026. Where possible, compare both periods using current queries; the OTTO changelog provides details.

Read the OTTO Ads campaigns for connection [Connection].
Retrieve every result page with campaign ID, name and status.

For each campaign, compare the last 30 complete calendar days
with the preceding 30 days in CET/CEST.
State both periods first and pass both date boundaries for each.
Use only read-only GET queries for campaign metrics.

For each period, show totalCosts and totalSales in euros,
the supplied ROAS, dateRange and lastCalculatedAt.
Check the units in the current schema. Recalculate ROAS where
costs are positive and flag discrepancies.

My target ROAS is [Target]. Sort campaigns below it by current
advertising costs, highest first. Show campaigns that cannot
be assessed separately. Missing data is not zero.
State the retrieval time. Do not change campaigns or budgets.

When advertising costs are zero, your own division is undefined. Show “cannot be calculated” and display any value supplied by the API separately. A failed query supports neither “no revenue” nor “no advertising spend”.

For a compact query using your own target, use the library’s prompt for OTTO Ads campaigns below target ROAS.

Which campaign should you check first in daily practice?

Prioritise by financial scale and data quality. An especially low ROAS alone does not determine the order.

An entirely fictional running example: You sell home accessories and have set your own target ROAS of 3 for this analysis. This is an example assumption, not a recommendation. On 28 October 2026, you compare 28 September to 27 October with 29 August to 27 September. Both periods contain 30 days.

The campaign IDs have been checked in this hypothetical workflow; the table uses only names for readability. All monetary values are already normalised to euros.

CampaignCurrent costsCurrent attributed revenueCurrent ROASPrevious ROASNext step
Lamps€1,200€2,4002.04.0Check at product level first
Shelves€300€3001.02.0Check next
StoolsData missingData missingCannot be assessed3.5Resolve the missing retrieval

Lamps comes first on the checklist: the campaign is below the assumed target and incurs four times the costs of Shelves. The fall from 4.0 to 2.0 is an observed change. It does not yet establish a cause or justify an automatic budget cut.

The calculation for Lamps is €2,400 / €1,200 = 2.0. For Lamps and Shelves combined, ROAS is €2,700 / €1,500 = 1.8. The simple average of their ROAS values would be 1.5 and would ignore the difference in spend. Stools must not be included as a zero in this subtotal; it is explicitly not an overall result for all campaigns.

How do you find the products that need attention within a campaign?

Read the products assigned to the campaign and check their metrics for the same periods. The targets link a SKU to the campaign. GET /product-performance requires both campaignId and sku. The current target list is not a complete historical record of earlier assignments.

Investigate the OTTO Ads campaign [Campaign ID] that needs
attention for [Start date] to [End date] and [Comparison start]
to [Comparison end]. Perform read-only queries only.

Read all pages of assigned targets and identify the SKUs.
For each SKU and period, retrieve product metrics with the campaign ID.
Show costs, totalSales, ROAS, clicks and calculation timestamp.
Normalise monetary values to euros; keep totalSalesSeller separate.

Sort products below my target ROAS [Target] by costs.
Show their share of campaign costs where it can be calculated.
Check discrepancies between product and campaign totals;
flag possible gaps caused by earlier product assignments.
Create a list of observations, open questions and next checks.
Do not change bids, targets or product data.

In the fictional example, lamp L-101 accounts for €900 in costs and €900 in attributed revenue: a ROAS of 1.0 at 75% of campaign costs. L-102 achieves a ROAS of 5.0 with €300 in costs and €1,500 in revenue. L-101 is therefore the specific next item to investigate; the aggregate campaign figure had hidden that difference.

Now check the offer, product presentation and available evidence for the period being analysed. If visibility is unclear, the guide OTTO product not online: Check listing status and find errors can help. However, today’s listing status or stock level does not automatically explain the previous 30 days.

By the end, it should be clear what was measured for L-101, which explanation remains open and what additional information you need. Only decide on a budget or bid once you have that context and your own cost calculation.

The practical guide to analysing marketplace data with AI covers further questions about sales and offers.

Ask your own data the next question.

Connect your seller accounts with Backlane and use the available data in your AI assistant.

Set up Backlane