
How Ledge Loungers replaced its Amazon reporting stack
Aaron Snow · Ledge Loungers
Read the case studyNova Data Share
Every Nova number, as tables your reports, apps and agents can query
For agencies, portfolios and data teams who build their own reports, apps and AI agents. Seller Central, Vendor Central, Ads and DSP data in 27 reconciled tables, refreshed hourly.
Browse the 27 tablesPlug it into the tools you already use
WITH brand_map AS (
SELECT 'demo-kitchen' AS sku, 'Northwind Kitchen' AS brand
UNION ALL SELECT 'demo-bottle', 'Alder & Co'
UNION ALL SELECT 'demo-leash', 'Brightpaw'
)
SELECT b.brand, p.marketplace_id,
ROUND(SUM(p.net_profit), 2) AS net_profit
FROM nova_share.product_metrics p
JOIN brand_map b ON p.sku = b.sku
WHERE p.metric_date >= CURRENT_DATE - 30
GROUP BY b.brand, p.marketplace_id
ORDER BY net_profit DESC;| brand | marketplace_id | net_profit |
|---|---|---|
| Northwind Kitchen | US | 9,104.22 |
| Northwind Kitchen | UK | 7,316.85 |
| Alder & Co | US | 5,208.58 |
| Brightpaw | DE | 4,811.34 |
Whether you run a portfolio of brands, an agency or a finance team
Amazon sources
Your stack
555,000+ queries in the last 30 days
Used by ProfitZon, Gravitiq
Net profit by brand and marketplace, yesterday against the same day last week
product_metricsSearch terms with spend and no sale in the last 14 days, by brand
advertising_search_termsSellable FBA and AWD stock with units in transit, per SKU
inventoryinbound_shipmentsDaily DSP and Sponsored Products spend side by side
dspadvertisingAgencies, portfolios and brands read it every hour
Source: Nova Data Share query log, 30 days to 27 October 2026.
The Nova MCP answers questions inside Claude or ChatGPT. Data Share is for the app or the agent you build yourself, in your code, on your rules.
Most Data Share queries come from apps and scripts, not BI tools.
Used by Sitruna, ProfitZon, Gravitiq and Flummox
Every column carries a description, and cost_dictionary gives the P&L block of every Amazon cost, so an agent reads the tables without a guide.
dataset_freshness updates every 2 minutes, so your agent checks a table's age before it answers.
orders_live carries today's order lines, provisional until Amazon's report confirms them.
A read-only login, scoped to your organization's rows, up to 10,000 queries an hour. Nothing your agent runs can change your data.
import clickhouse_connect
db = clickhouse_connect.get_client(
host="share.novadata.io", port=8443, secure=True,
username=NOVA_USER, password=NOVA_PASSWORD,
database="nova_share",
)
# Is the P&L fresh enough to answer?
fresh = db.query(
"SELECT updated_at FROM dataset_freshness "
"WHERE dataset = 'product_metrics'"
)
top = db.query(
"SELECT sku, round(sum(net_profit), 2) AS profit "
"FROM product_metrics "
"WHERE metric_date >= today() - 7 "
"GROUP BY sku ORDER BY profit DESC LIMIT 10"
)import { createClient } from "@clickhouse/client";
const db = createClient({
url: "https://share.novadata.io:8443",
username: process.env.NOVA_USER,
password: process.env.NOVA_PASSWORD,
database: "nova_share",
});
// What sold in the last minutes
const rs = await db.query({
query: "SELECT * FROM orders_live LIMIT 50",
format: "JSONEachRow",
});
const orders = await rs.json();Building something with heavy traffic? Copy the tables into your own database and serve your app from there. See the limits
| dataset | cadence | updated_through | updated_at |
|---|---|---|---|
| product_metrics | hourly | 2026-10-29 12:00 | 2026-10-29 12:41 |
| orders_live | every_minute | 2026-10-29 13:02 | 2026-10-29 13:02 |
| advertising | hourly | 2026-10-29 12:00 | 2026-10-29 12:33 |
| sqp_weekly | weekly | 2026-10-25 | 2026-10-28 06:14 |
| inventory | hourly | 2026-10-29 12:00 | 2026-10-29 12:48 |
Build it yourself and you own the history, the restatements and the maintenance for as long as you need the data.
Impression share cannot be backfilled at all. Without collection from day one, that history is gone. Nova has been collecting it.
Fees and refunds restate for about 60 days, ad attribution for about 14. Nova re-reads those windows daily.
Parent ASIN differs per country. FX changes daily. FBA and AWD stock can be counted twice. Every settlement line must land in exactly one table. Vendor and Seller schemas differ.
Amazon changes APIs and fees constantly. Nova absorbs that work for every client.
Months of data engineering and permanent maintenance. Or a live connection the same day.
27 tables, grouped by the question they answer. 18 included, 9 on request.
product_metricsOne row is account × marketplace × ASIN × SKU × day. P&L lines, units, traffic, BSR, reviews.329 colsIncludedseller_partner_id varcharmarketplace_id varcharsku varcharmetric_date dateunits bigintproduct_sales floatnet_profit floatorders_liveOne row is order line, current UTC day and the three before. What sold today; is_provisional = 1 until the report confirms it.IncludedRefreshed: every minute
is_provisionalordersOne row is order line, last 24 months. Each sale with fees, refunds, settlements.On requestpurchase_at_utcpurchase_at_localpurchase_daymarketplace_nameskuquantityproduct_salesaccount_costsOne row is settlement line not tied to an order line. Subscription, storage lumps, inbound, removals, coupons.On requestEvery column is listed in the docs.
sku_costsOne row is settlement line on a SKU, without an order. Reimbursements, clawbacks, reversals.On requestEvery column is listed in the docs.
cost_dictionaryOne row is Amazon cost key, the same for everyone. Block and category of each cost.13 colsIncludedcost_key varcharexport_name varcharcost_level varcharadvertisingOne row is ad structure × attributed ASIN × day. Console view of Sponsored Products, Brands, Display.67 colsIncludedcampaign_id bigintchild_asin varcharmetric_date datespend floatsales floatadvertising_campaignsOne row is campaign × day (× ad group × ASIN on Products, Display). Campaigns, longest history.45 colsIncludedcampaign_id bigintmetric_date datespend floatadvertising_targetsOne row is target × day, Brands and Display. Audiences, keywords and product targets.45 colsIncludedcampaign_id biginttarget_id biginttargeting varcharspend floatadvertising_placementsOne row is campaign × placement × day. Top of search, product pages, rest of search.32 colsIncludedcampaign_id bigintplacement varcharmetric_date datespend floatadvertising_search_termsOne row is ad structure × search term × day. What shoppers typed.35 colsIncludedcampaign_id bigintkeyword_id bigintsearch_term varcharspend floatadvertising_negative_targetsOne row is negative keyword or target, current state. What each account blocks.24 colsIncludedcampaign_id bigintad_group_id bigintnegative_id bigintkeyword_text varcharadvertising_impression_shareOne row is keyword × snapshot day, covering 30 days. Impression share and rank, as in Campaign Manager.13 colsIncludedkeyword varcharsnapshot_date datesearch_term_impression_share floatdspOne row is day × line item × cut. Amazon DSP display and video.76 colsIncludedAmazon DSP display and video ads by day and line item, with product, supply source, device, creative, audience and country breakdowns. Separate from PPC. About 95 days of history from advertiser connection.
Every column is listed in the docs.
sqp_weeklyOne row is marketplace × parent ASIN × search query × week. Market demand and your share.31 colsIncludedparent_asin varcharsearch_query varcharsearch_volume bigintyour_purchases bigintsqp_monthlyOne row is marketplace × parent ASIN × search query × month. Same as weekly, longer history.33 colsIncludedparent_asin varcharsearch_query varcharsearch_volume bigintyour_purchases bigintlisting_healthOne row is account × marketplace × SKU, current state. Listing status, issues, Buy Box.99 colsIncludedmarketplace_id varcharsku varcharis_buyable booloffers_buy_box_lost boolinventoryOne row is account × stock region × SKU × day. FBA and AWD stock.55 colsIncludedstock_region varcharsku varcharsnapshot_date datefba_sellable bigintawd_onhand bigintunits_sold_30ddaily_units_soldinbound_shipmentsOne row is FBA shipment × SKU, current state. Sent and received.25 colsIncludedshipment_id varcharsku varcharshipment_status varcharquantity_received bigintsupply_chainOne row is stock region × ASIN, current state. Your own counts, supplier orders, lead times.19 colsIncludedStock at your warehouse or 3PL, open supplier orders and product references entered in Nova. Empty until you fill it.
Every column is listed in the docs.
vendor_product_metricsOne row is vendor account × marketplace × ASIN × day. The 1P P&L, on product_metrics names.65 colsOn requestchild_asin varcharmetric_date dateproduct_sales floatnet_profit floatvendor_inventoryOne row is vendor account × marketplace × ASIN × week. Amazon's stock of your products.19 colsOn requestchild_asin varcharsnapshot_date datevendor_sellable_units bigintvendor_purchase_ordersOne row is purchase order line. What Amazon ordered and received.37 colsOn requestpurchase_order_number varcharchild_asin varcharordered_units bigintreceived_units bigintvendor_invoicesOne row is invoice. Invoices and their settlement.34 colsOn requestinvoice_id varcharinvoice_status varcharinvoice_amount decimalvendor_remittancesOne row is payment line. What Amazon paid and deducted.39 colsOn requestpayment_id varcharinvoice_id varcharnet_amount_paid decimalvendor_forecastOne row is vendor account × marketplace × ASIN × forecast week. Amazon's demand forecast in units.14 colsOn requestchild_asin varcharweek_start_date datemean_forecast_units bigintdataset_freshnessOne row is account × table. When each table last changed and how far it goes.6 colsIncludedFor each table and seller account: how far the data goes, when it last changed and its refresh rhythm.
Refreshed: every 2 minutes
updated_throughSame tables, same login. Choose the tool you already open.
Host
share.novadata.ioPort (MySQL)
3306Database
nova_shareThe share is for pulling: copy the tables into your warehouse and point reports at your copy.
Full setup in the docsLive the same day. Start your free trial.
Accurate Amazon data for every team
Data Share is part of a custom plan. We scope the accounts, access and reporting needs with you before quoting. Request a quote on our pricing page.
read-only over MySQL, HTTPS or native ClickHouse connections. Power BI, Looker Studio, Tableau, Metabase, DBeaver and Python can use MySQL. You can replicate the tables into your own warehouse and join them with other data.
Yes. Connect over HTTPS from Python, Node.js or any ClickHouse client with a read-only login scoped to your organization. Columns carry descriptions and dataset_freshness tells your agent how recent each table is. For a high-traffic app, copy the tables into your own database first.
2 years of history, where available. Depth varies by table and when collection began. Amazon limits historical reports, and impression share cannot be backfilled. DSP has about 95 days from advertiser connection. dataset_freshness reports the actual data extent.
The 6 Vendor Central tables open on request for customers with a Vendor account. Product metrics, inventory, forecasts, purchase orders, invoices and remittances cover your Vendor operation. orders, account_costs and sku_costs are available on request, not included by default.
Nova maintains the collection and reconciliation layer, including changes to reports and Amazon fees. Your team does not have to maintain those Amazon pipelines itself.
CSV exports give you files to move and combine. Reporting automation delivers prepared reports. Data Share gives your BI, warehouse, agents and apps a read-only connection to structured tables that refresh hourly.
Yes. The tables are projections of the data the app and the MCP read. product_metrics keeps the raw P&L basis: your display choices, such as spreading storage fees or your own costs, stay in the app and the MCP.
Tables refresh hourly and swap in whole a few minutes after each build. orders_live refreshes every minute and dataset_freshness every 2 minutes.
In the app, open Integrations, Nova Data Share and click Request access. Nova creates your login and sends it apart from the setup. Data Share is part of a custom plan.
Bring your tools. Nova brings the reconciled tables.
14-day free trial, no card required.