SAT migration to profit tables
Sales & Traffic by ASIN & Date (SAT), amazon_sales_and_traffic_with_cogs, is deprecated and will be removed on November 16, 2026. Update reports, saved exports, schedules, and integrations that use this table before that date.
We are consolidating reporting in Profit by SKU & Date (amazon_profit_by_sku_and_date) and Profit by Date (amazon_profit_by_date) to provide consistent sales and profitability definitions and more up-to-date sales data.
Profit sales come from order items rather than the Sales and Traffic business report. Traffic still comes from Amazon's reports and can be delayed. Moving to a profit table does not make traffic real-time.
Choose a replacement
| Your use case | Use |
|---|---|
| Daily account sales, costs, and profit | amazon_profit_by_date |
| Sales and profit by SKU or child ASIN | amazon_profit_by_sku_and_date |
| Sessions, page views, Buy Box, and conversion by child ASIN | amazon_profit_by_sku_and_date, reading traffic once per ASIN and day |
| Exact original report values or source timestamps | Raw BigQuery integration |
Both profit tables use dates in the marketplace's local time zone. Keep marketplace, seller, date, and currency separate when combining data. These are Seller Central profit tables, not Vendor Central profitability tables.
See the Data Scheme for definitions and refresh information. Both profit tables are premium export sources; check the cost before running migrated exports.
Migrate a daily account report
Use amazon_profit_by_date for account totals. Select date and the metrics you need, or group by date and seller when combining accounts. Use total_sales, total_units_sold, total_orders, cogs_total, ad_spend, and profit for a daily profitability view.
For traffic, use total_sessions, total_page_views, and avg_buybox_percentage. These use Amazon's daily account totals, with a fallback to child-ASIN rows when account totals are missing. Columns starting with asin_ describe aggregated child-ASIN traffic instead.
Do not calculate account profit by adding SKU profits. The account table includes fees and advertising costs that cannot all be allocated to a SKU. For a date-range report, add amounts and counts, then calculate ratios from the totals. Do not add daily percentages or average Buy Box percentages without appropriate weighting.
Migrate an ASIN traffic or conversion report
Use amazon_profit_by_sku_and_date and retain child_asin and date. Sales and costs are per SKU, but traffic describes the child ASIN and repeats on its SKU rows.
For each seller, marketplace, child ASIN, and day:
- Add SKU sales, sold units, and costs.
- Take
maxoftotal_sessions,total_page_views, andavg_buybox_percentageto read ASIN traffic once. - Apply the same rule to browser, mobile, and B2B traffic fields.
- Keep traffic rows whose
skuis null; an ASIN can have traffic without SKU sales activity that day.
For several days, read traffic once per ASIN and day, then add daily sessions and page views. Taking max across the whole period returns only the largest daily value.
Choose a consistent units definition when comparing conversion rates. A rate calculated from shipped units will not necessarily match Amazon's ordered-unit conversion percentage.
Map SAT columns to profit columns
These are the supported migration choices. Sales, units, order counts, and costs can change because the new tables use order and profitability definitions.
| SAT column | Profit column and behavior |
|---|---|
session | total_sessions. Read once per ASIN and day in the SKU table. |
browser_session | browser_sessions. Read once per ASIN and day. |
mobile_session | mobile_sessions. Read once per ASIN and day. |
page_views | total_page_views. Prefer the current column over the legacy alias. |
buybox_percentage | avg_buybox_percentage. Prefer the current column. |
buybox_percentage_b2b | avg_buybox_percentage_b2b. Percentages are 0 to 100. |
units_session_percentage | unit_session_percentage. Keep report percentages separate from rates you calculate. |
total_units | total_units_sold for shipped sales; total_units_b2b + total_units_b2c for non-cancelled ordered quantities. Neither choice guarantees the original report value. |
total_sales | total_sales. SAT is ordered product sales; profit sales are shipped item revenue plus buyer-paid shipping, minus shipping promotions. |
total_orders | total_orders. SAT counts report order items; profit tables count distinct shipped orders within their grouping. |
cogs_item_value | cogs_item. Per-unit item cost becomes an aggregated shipped-item cost. |
cogs_shipping_value | cogs_shipping. Per-unit shipping cost becomes an aggregated cost. |
cogs_total_value | cogs_total. Includes shipped-item costs and lost/damaged or missing-return adjustments. |
cogs_currency | currency for profit reporting. Profit currency replaces the uploaded-cost currency field. |
cogs_present | cogs_present. Checks cost coverage across contributing shipped items and returns. |
item_supplier_name | item_supplier_name. Returns a comma-separated list of distinct suppliers for shipped items. |
dt_created, dt_updated | Raw report timestamps. No equivalent profit columns. |
Keep fields such as child_asin, parent_asin, product_name, browser_page_views, mobile_page_views, and the matching B2B traffic fields where available. A matching name does not always mean the same calculation: profit total_units_b2b comes from non-cancelled order-item quantities.
The SKU table's units_refunded, refund_rate, and shipped report fields remain report metrics per ASIN. In Profit by Date, these are account-level report metrics. Financial refund_count and physical return_units measure different events and are not substitutes for report refunded units.
Update exports, schedules, and integrations
- Find the replacement by its name or table name. For the application programming interface (API), use
GET /api/v1/exports/sources; for Model Context Protocol (MCP), useexports_sources_get. - Read its columns. In MCP, call
exports_source_getuntilcolumnsMeta.hasNextPageis false. Copy the returned source ID rather than constructing one. - Update the source, selected columns, aggregation inputs, grouping, filters, and sort fields. Keep aggregation aliases if you need the same output labels.
- Update or recreate saved and scheduled exports with the replacement source. Existing SAT exports and schedules do not migrate automatically.
- Run a sample for a completed period. Check field names, row counts, currency, and ordered-versus-shipped differences before switching your downstream report.
For example, an export that sums session as sessions needs to sum total_sessions on Profit by Date. On the SKU table, read max(total_sessions) per ASIN and day instead. Update the aggregation input as well as the output name.
Additional columns available after migration
The following columns are in the profit tables but were not in SAT. Some are renamed replacements; others add sales, fees, advertising, or profitability detail. Supplier name already existed in SAT and is retained in both profit tables.
Available in both profit tables
| Area | Columns |
|---|---|
| Profitability | profit, total_cost, acos, tacos, roi |
| Sales and account detail | sales_tax, sales_tax_missing_items, total_sales_b2b, total_sales_b2c, unshipped_sales, total_units_b2c, total_units_sold, total_units_sold_b2b, total_units_sold_b2c, currency |
| Refunds and returns | refund_count, refund_cost, return_units |
| COGS and inventory adjustments | return_cogs, cogs_item, cogs_shipping, lost_damaged_by_amazon, missing_returns, cogs_total |
| Amazon fees | total_fees, total_selling_fees, total_fees_tax, total_fees_net, total_selling_fees_tax, total_selling_fees_net, fba_fees_tax, fba_fees_net, fba_fees, awd_fees |
| Advertising | ad_spend, ad_sales, ad_orders, ad_units_sold, ad_clicks, ad_impressions |
| Traffic and conversion | avg_buybox_percentage, avg_buybox_percentage_b2b, avg_buybox_percentage_b2c, total_sessions, sessions_b2c, total_page_views, page_views_b2c, browser_sessions, browser_sessions_b2b, mobile_sessions, mobile_sessions_b2b, browser_page_views_b2b, mobile_page_views_b2b, unit_session_percentage, unit_session_percentage_b2b |
Additional columns in Profit by SKU & Date
| Area | Columns |
|---|---|
| Product information | sku, product_brand, product_category_root, product_category_node, product_image_url, product_url |
| Traffic and conversion | browser_sessions_b2c, mobile_sessions_b2c, browser_page_views_b2c, mobile_page_views_b2c, session_percentage, session_percentage_b2b, page_views_percentage, page_views_percentage_b2b, browser_session_percentage, browser_session_percentage_b2b, mobile_session_percentage, mobile_session_percentage_b2b, browser_page_views_percentage, browser_page_views_percentage_b2b, mobile_page_views_percentage, mobile_page_views_percentage_b2b |
Additional columns in Profit by Date
| Area | Columns |
|---|---|
| Advertising | sponsored_tv_ad_spend |
| Target reporting | ad_target_reported_spend, ad_target_reported_sales, ad_target_count, ad_target_costed_sales, ad_target_costed_spend, ad_target_unsupported_sales, ad_target_missing_cost_sales, ad_target_costed_estimated_profit_after_ads, ad_target_mature_spend_without_sales |
| Search-term reporting | ad_search_term_reported_spend, ad_search_term_reported_sales, ad_search_term_count, ad_search_term_costed_sales, ad_search_term_costed_spend, ad_search_term_unsupported_sales, ad_search_term_missing_cost_sales, ad_search_term_costed_estimated_profit_after_ads, ad_search_term_mature_spend_without_sales |
| Sales and account detail | average_sales_per_order_item, average_sales_per_order_item_b2b, average_sales_per_order_item_b2c, average_units_per_order_item, average_units_per_order_item_b2b, average_units_per_order_item_b2c, average_offer_count, average_parent_items |
| Claims | claims_granted, claims_granted_b2b, claims_granted_b2c, claims_amount, claims_amount_b2b, claims_amount_b2c |
| Feedback | feedback_received, feedback_received_b2b, feedback_received_b2c, negative_feedback_received, negative_feedback_received_b2b, received_negative_feedback_rate, received_negative_feedback_rate_b2b |
| Traffic and conversion | order_item_session_percentage, order_item_session_percentage_b2b |
| ASIN traffic | asin_browser_sessions, asin_browser_sessions_b2b, asin_browser_sessions_b2c, asin_mobile_sessions, asin_mobile_sessions_b2b, asin_mobile_sessions_b2c, asin_browser_page_views, asin_browser_page_views_b2b, asin_browser_page_views_b2c, asin_mobile_page_views, asin_mobile_page_views_b2b, asin_mobile_page_views_b2c, asin_session_percentage, asin_session_percentage_b2b, asin_page_views_percentage, asin_page_views_percentage_b2b, asin_browser_session_percentage, asin_browser_session_percentage_b2b, asin_mobile_session_percentage, asin_mobile_session_percentage_b2b, asin_browser_page_views_percentage, asin_browser_page_views_percentage_b2b, asin_mobile_page_views_percentage, asin_mobile_page_views_percentage_b2b, asin_unit_session_percentage, asin_unit_session_percentage_b2b |
Target and search-term summaries overlap and must not be added together or added to account profit. Use each for its documented advertising analysis.
Keep original report data with Raw BigQuery
The underlying data remains available after integrated SAT is removed. Set up a Raw data integration using the BigQuery connection guide. An Integrated data subscription does not provide access to the Raw dataset.
Use raw_sp_api_report_sales_and_traffic for Amazon's child-ASIN report values, including orderedProductSales, unitsOrdered, totalOrderItems, and source timestamps. Raw field names differ from integrated names.
For uploaded costs and suppliers, use raw_amazon_cogs with the appropriate product, connection, and effective date. The raw report does not include SAT's COGS join. Choose the applicable dated COGS record and avoid duplicate report rows.
Raw access preserves source data, including Amazon's reporting delays and revisions. It does not reproduce SAT's integrated columns automatically.
Need help?
If you have questions about choosing a replacement, updating a schedule, or matching an existing report, contact us or open a support ticket (opens in a new tab). Include the current source, columns, date range, and the result you need.

