CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

kuudoai/kuudo-skills

22 Agent Skills for Amazon sellers and advertisers: Sponsored Products and Brands audits, search-term mining, budget pacing, DSP and Amazon Marketing Cloud, reporting, listing optimization and compliance, product images, repricing, FBA inbound, stockout, refunds, buyer messaging, and profitability. Built for Kuudo's hosted Amazon Ads and Selling Partner MCP servers; price, budget, listing, and shipment writes are previewed and wait for explicit approval.

68

1.65x
Quality

93%

Does it follow best practices?

Impact

66%

1.65x

Average score across 22 eval scenarios

SecuritybySnyk

Medium

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

campaign.mdskills/amazon-ads-reporting/references/reports/sd/

Sponsored Display Campaign mapping

Equivalent to v3 Sponsored_Display_Campaign_report — 49 v3 columns mapped to v1 fields

Summary

This template replicates the v3 Sponsored Display Campaign report on the Amazon Ads API v1 cross-product reporting endpoint (CreateReport). 47 of 49 v3 columns map cleanly to v1 fields; 2 are derived client-side (ACOS, click-only ACOS). This is the broadest of the four SD reports — it includes the full Add to Cart suite, NTB DPV breakdown, Branded Search breakdown, and Long-Term metrics on top of the standard delivery/conversion metric set.

The 51-field payload was validated against the packaged v1 catalog: zero unknown fields, zero missing required, zero incompatible pairs.

Field list (grouped by role)

Time dimension (exactly one required)

  • date.value

Level-of-detail dimensions

  • country.code
  • country.name
  • campaign.country
  • campaign.deliveryStatus
  • campaign.currencyCode
  • campaign.budgetAmount
  • campaign.budgetType
  • campaign.id
  • campaign.name
  • portfolio.portfolioId
  • portfolio.name
  • campaign.costType
  • adProduct.value

Required supporting field

  • budgetCurrency.value

Delivery metrics

  • metric.impressions
  • metric.viewableImpressions
  • metric.clicks
  • metric.ctr
  • metric.detailPageViews
  • metric.cpc
  • metric.vcpm
  • metric.totalCost

All-attribution conversion (14-day)

  • metric.sales
  • metric.purchases
  • metric.unitsSold
  • metric.roas
  • metric.newToBrandPurchases
  • metric.newToBrandSales
  • metric.newToBrandUnitsSold

Click-only attribution variants

  • metric.salesFromClicks
  • metric.purchasesFromClicks
  • metric.unitsSoldFromClicks
  • metric.roasFromClicks
  • metric.newToBrandPurchasesFromClicks
  • metric.newToBrandSalesFromClicks
  • metric.newToBrandUnitsSoldFromClicks

NTB Detail Page View breakdown

  • metric.newToBrandDetailPageViews
  • metric.newToBrandDetailPageViewsFromViews
  • metric.newToBrandDetailPageViewsFromClicks
  • metric.newToBrandDetailPageViewRate
  • metric.costPerNewToBrandDetailPageView

Add to Cart suite

  • metric.addToCart
  • metric.addToCartFromViews
  • metric.addToCartFromClicks
  • metric.addToCartRate
  • metric.costPerAddToCart

Branded Searches breakdown

  • metric.brandedSearches
  • metric.brandedSearchesFromViews
  • metric.brandedSearchesFromClicks
  • metric.brandedSearchRate
  • metric.costPerBrandedSearch

Long-term metrics

  • metric.longTermSales
  • metric.longTermRoas

Filter (limits the report to SD)

  • adProduct.value = SPONSORED_DISPLAY

v3 → v1 field mapping

v3 Column (Sponsored_Display_Campaign)v1 field_idRoleNotes
Datedate.valueTime dimensionRequired time dimension.
Countrycountry.nameDimensionPair with country.code.
—country.codeDimensionISO country code.
—campaign.countryDimensionCampaign-setup country (independent of impression country). Both included for redundancy.
Statuscampaign.deliveryStatusDimensionReplaces v3's 'Status' column. v1 reports CURRENT delivery status (DELIVERING/INACTIVE/ENDED), not historical — same as the SP Campaign report. If you need a historical status timeline, capture campaign.deliveryStatus daily at ingest as an SCD.
Currencycampaign.currencyCodeDimensionPair with budgetCurrency.value.
Budget Amountcampaign.budgetAmountDimensionPair with campaign.budgetType to disambiguate daily vs lifetime.
—campaign.budgetTypeDimensionDAILY / LIFETIME — context for budgetAmount.
Campaign Namecampaign.nameDimensionPair with campaign.id.
—campaign.idDimensionStable join key.
Portfolio nameportfolio.nameDimensionPair with portfolio.portfolioId.
—portfolio.portfolioIdDimensionStable join key.
Cost typecampaign.costTypeDimensionCPC / VCPM. Native dimension in v1.
—adProduct.valueDimensionIdentifies SD; also used in the report filter.
—budgetCurrency.valueRequired supportv1 minimal-baseline supporting field.
Impressionsmetric.impressionsMetricDirect.
Viewable Impressionsmetric.viewableImpressionsMetricDirect.
Clicksmetric.clicksMetricDirect.
Click-Thru Rate (CTR)metric.ctrMetricDirect.
14 Day Detail Page Views (DPV)metric.detailPageViewsMetricDirect — all-attribution DPV.
Spendmetric.totalCostMetricv1 renames 'spend' to totalCost.
Cost Per Click (CPC)metric.cpcMetricDirect.
Cost per 1,000 viewable impressions (VCPM)metric.vcpmMetricDirect.
Total ACOS(derive client-side)DerivedtotalCost / NULLIF(sales, 0) or 1 / roas.
Total ROASmetric.roasMetricDirect.
14 Day Total Orders (#)metric.purchasesMetricEquivalent — orders → purchases.
14 Day Total Units (#)metric.unitsSoldMetricDirect.
14 Day Total Salesmetric.salesMetric14-day window is set on the report request.
14 Day New-to-brand Orders (#)metric.newToBrandPurchasesMetricDirect.
14 Day New-to-brand Salesmetric.newToBrandSalesMetricDirect.
14 Day New-to-brand Units (#)metric.newToBrandUnitsSoldMetricDirect.
Total ACOS - (Click)(derive client-side)DerivedtotalCost / NULLIF(salesFromClicks, 0).
Total ROAS - (Click)metric.roasFromClicksMetricDirect.
14 Day Total Orders (#) - (Click)metric.purchasesFromClicksMetricDirect.
14 Day Total Units (#) - (Click)metric.unitsSoldFromClicksMetricDirect.
14 Day Total Sales - (Click)metric.salesFromClicksMetricDirect.
14 Day New-to-brand Orders (#) - (Click)metric.newToBrandPurchasesFromClicksMetricDirect.
14 Day New-to-brand Sales - (Click)metric.newToBrandSalesFromClicksMetricDirect.
14 Day New-to-brand Units (#) - (Click)metric.newToBrandUnitsSoldFromClicksMetricDirect.
New-to-brand detail page viewsmetric.newToBrandDetailPageViewsMetricDirect.
New-to-brand detail page view view-through conversionsmetric.newToBrandDetailPageViewsFromViewsMetricDirect — view-attributed NTB DPV.
New-to-brand detail page view click-through conversionsmetric.newToBrandDetailPageViewsFromClicksMetricDirect — click-attributed NTB DPV.
New-to-brand detail page view ratemetric.newToBrandDetailPageViewRateMetricDirect — NTB DPV / impressions.
Effective cost per new-to-brand detail page viewmetric.costPerNewToBrandDetailPageViewMetricDirect.
14 Day ATCmetric.addToCartMetricDirect — total Add to Cart events.
14 Day ATC Viewsmetric.addToCartFromViewsMetricDirect — view-attributed ATC.
14 Day ATC Clicksmetric.addToCartFromClicksMetricDirect — click-attributed ATC.
14 Day ATCRmetric.addToCartRateMetricDirect — ATC / impressions.
Effective cost per Add to Cart (eCPATC)metric.costPerAddToCartMetricDirect.
14 Day Branded Searchesmetric.brandedSearchesMetricDirect.
Branded Searches view-through conversionsmetric.brandedSearchesFromViewsMetricDirect — view-attributed branded searches.
Branded Searches click-through conversionsmetric.brandedSearchesFromClicksMetricDirect — click-attributed branded searches.
Branded Searches Ratemetric.brandedSearchRateMetricDirect — branded searches / impressions.
Effective cost per Branded Searchmetric.costPerBrandedSearchMetricDirect.
Long-Term Salesmetric.longTermSalesMetricDirect — projected 12-month sales from incremental NTB shopper engagement driven by the campaign.
Long-Term ROASmetric.longTermRoasMetricDirect — long-term sales / total cost.

Yellow rows are derived client-side. All other rows are direct mappings.

Critical differences from the v3 report

ChangeWhat it means for the request
Filter on adProduct.value = SPONSORED_DISPLAYThe v1 endpoint is shared across all ad products.
Status semantics shiftv3 'Status' was historical; v1 campaign.deliveryStatus is the campaign's CURRENT delivery status (DELIVERING/INACTIVE/ENDED). Same caveat as the SP Campaign report — for a true historical status timeline, capture daily snapshots in the warehouse.
Add to Cart suite — full mappingv3 ATC, ATC Views, ATC Clicks, ATCR, eCPATC map directly to metric.addToCart, metric.addToCartFromViews, metric.addToCartFromClicks, metric.addToCartRate, metric.costPerAddToCart. v1 has a much wider ATC family (newToBrand variants, halo variants, promoted variants) — extend the field list if you need them.
Branded Searches breakdown — full mappingv3 columns map directly: brandedSearches, brandedSearchesFromViews, brandedSearchesFromClicks, brandedSearchRate, costPerBrandedSearch. The 'view-through conversions' / 'click-through conversions' suffixes on v3 column names map to *FromViews / *FromClicks in v1.
NTB DPV breakdown — full mappingv3's 'New-to-brand detail page view view-through conversions' = metric.newToBrandDetailPageViewsFromViews; same pattern for click-through and the rate / cost variants.
Long-Term Sales / ROAS — direct mappingmetric.longTermSales is the 12-month projected sales from incremental NTB shopper engagement; metric.longTermRoas = longTermSales / totalCost. Available at the SD campaign grain.
No metric.acos field — applies to BOTH all-attr and click-onlyCompute totalCost / NULLIF(sales, 0) and totalCost / NULLIF(salesFromClicks, 0).
'Spend' → metric.totalCostRenamed across all ad products in v1.
Attribution windows leave the field namev3's '14 Day' prefix is gone; window is set on the report request.

Operational notes

  • Status historicity: campaign.deliveryStatus reports CURRENT status. For a historical status timeline, capture daily snapshots in the warehouse as a slowly-changing dimension.

  • Long-Term Sales / ROAS: these are PROJECTED 12-month metrics derived from NTB shopper engagement modeling — they're estimates, not actuals. Treat as forward-looking metrics rather than realized revenue.

  • Derivations to materialize in the warehouse: acos = totalCost / NULLIF(sales, 0); acosClickOnly = totalCost / NULLIF(salesFromClicks, 0). Persist raw inputs alongside the views.

  • Bid optimization recovery: this v3 report doesn't include the 'Bid optimization' column, but the SD Targeting and SD Advertised Product reports do. If you join all four SD reports together in the warehouse, fetch bidOptimization from the campaign-list operation once and join on campaign.id.

skills

LICENSE.md

README.md

tile.json