Dashboard Overview

Welcome back, Admin

Select All | Clear

only

[[ skuSearch ? 'No SKU matches your search.' : 'No SKUs match the selected markets/family.' ]]

Show only [[ c.label ]] [[ chipCounts[c.key] ]] clear [[ activeHealthData.length ]] of [[ unfilteredCount ]] listings · sorted by [[ sortLabel ]] [[ sortDir === 'asc' ? '▲' : '▼' ]]
SKU[[ sortMark('sku') ]] Market Price[[ sortMark('current_price') ]] AVG Rating[[ sortMark('avg_rating') ]] Reviews[[ sortMark('review_count') ]] Buy Box %[[ sortMark('buy_box_percentage') ]] Sales Rank[[ sortMark('sales_rank') ]] Categories Delivery Stock[[ sortMark('stock_available') ]]
Days Left[[ sortMark('stock_days_left') ]]
Spec [[ d ]]d
stock only +shipments
[[ daysLeftLoading ? 'updating…' : (daysLeftSpec ? 'forecast' : 'avg over ' + velocityDays + 'd') ]]
Shipment ETA[[ sortMark('shipment_eta') ]] Profit / Day[[ sortMark('profit_week_pd') ]] Listing Status
Select a marketplace and SKUs to view health status.
[[ row.sku ]] [[ row.asin ]]
On the Amazon listing

Players: [[ row.scrape_num_players || '—' ]]

Age: [[ row.scrape_recommended_age || '—' ]]

Scraped [[ row.delivery_scraped_at ]]

EU [[ row.marketplace ]]
[[ row.current_price ? inRange(row, 'current_price', v => formatPrice(v, row.currency)) : 'N/A' ]] → [[ formatPrice(row.effective_price, row.currency) ]]
List price[[ row.current_price != null ? formatPrice(row.current_price, row.currency) : '–' ]]
Promo ([[ row.promo ]]) [[ row.coupon.amount ]][[ (row.coupon.type || '').toLowerCase().startsWith('percent') ? '%' : '' ]] off until [[ row.coupon.until ]]→ [[ row.effective_price != null ? formatPrice(row.effective_price, row.currency) : '–' ]]
Base ([[ row.currency ]]) · [[ ({product: 'product', family: 'family', usd_reference: 'USD ref × FX'})[row.market_base_source] ]][[ row.market_base != null ? formatPrice(row.market_base, row.currency) : (row.base_price != null ? '≈ from $' + row.base_price.toFixed(2) : '–') ]]
Effective vs base[[ row.price_diff_pct > 0 ? '+' : '' ]][[ row.price_diff_pct ]]% (±[[ row.threshold_pct ?? 5 ]]%)

Below base, no promo found — the alert case.

A promo explains the price; noted, not alarmed.

Off base beyond the threshold.

[[ row.avg_rating ? inRange(row, 'avg_rating', v => v.toFixed(1)) : '-' ]]
10-Day Avg: [[ row.avg_10_day_rating ? row.avg_10_day_rating.toFixed(2) : '-' ]]

Changed: [[ row.rating_changed_date ]]

Improved: [[ row.rating_improved_date ]]

[[ row.review_count ? inRange(row, 'review_count', formatNumber) : '-' ]]
10-Day Avg: [[ row.avg_10_day_reviews ? row.avg_10_day_reviews.toFixed(1) : '-' ]]

Changed: [[ row.review_changed_date ]]

[[ inRange(row, 'buy_box_percentage', v => v.toFixed(1) + '%') ]] -
2-Day Avg: [[ row.buy_box_2d != null ? row.buy_box_2d.toFixed(1) + '%' : '—' ]]
30-Day Avg: [[ row.buy_box_30d !== null ? row.buy_box_30d.toFixed(1) + '%' : '-' ]]

2-day avg below 80%

30-day avg below 30%

[[ row.sales_rank ? inRange(row, 'sales_rank', formatNumber) : '-' ]]
10-Day Avg Rank: [[ row.avg_10_day_sales_rank ? formatNumber(Math.round(row.avg_10_day_sales_rank)) : '-' ]]

Changed: [[ row.rank_changed_date ]]

-
Current Categories:
• [[ cat ]] ([[ formatNumber(rank) ]])
Changes Detected!

Changed: [[ row.category_changed_date ]]

[[ inRange(row, 'delivery_days', v => v + 'd') ]] -
[[ deliveryScrapeHeading(row) ]]

[[ deliveryScrapeDate(row) ]]

[[ deliveryLastAttempt(row) ]]

[[ deliveryNoDateReason(row) ]]

sync_delivery_health has not updated this listing since.

[[ formatNumber(row.stock_available) ]] -
Net Available Calculation:

FBA Available: [[ formatNumber(row.stock_breakdown.fulfillable) ]]

+ FC Transfer: [[ formatNumber(row.stock_breakdown.transfer) ]]

+ FC Processing: [[ formatNumber(row.stock_breakdown.processing) ]]

− Unfulfillable: [[ formatNumber(row.stock_breakdown.unfulfillable) ]]

Inbound (W+S+R): [[ formatNumber(row.stock_breakdown.inbound) ]]

[[ row.stock_days_left <= 0 ? 'now' : row.stock_days_left + 'd' ]] 1y+ - ⛔ ✈
-
Incoming Shipments:
[[ e.shipment_id ]] ([[ e.status ]] → [[ e.dest ]])
Created: [[ e.created ]] · Qty: [[ e.qty ]] · ETA: [[ e.eta_days === 0 ? 'today' : e.eta_days + 'd' ]] ([[ etaSourceLabel(e.source) ]]) · [[ e.late_days ]]d late
-
Week Days Sales Units Profit / day 7-day eq.
This week [[ row.profit_week_label ]] [[ row.profit_week_days ]] [[ money(row.sales_week, row.sales_currency) ]] [[ row.units_week !== null && row.units_week !== undefined ? row.units_week : '-' ]] [[ money(row.profit_week, row.profit_currency) ]] [[ money(row.profit_week_pd, row.profit_currency) ]] [[ money(row.profit_week_full, row.profit_currency) ]]
Prev week [[ row.profit_week_prev_label ]] [[ row.profit_week_prev_days ]] [[ money(row.sales_week_prev, row.sales_currency) ]] [[ row.units_week_prev !== null && row.units_week_prev !== undefined ? row.units_week_prev : '-' ]] [[ money(row.profit_week_prev, row.profit_currency) ]] [[ money(row.profit_week_prev_pd, row.profit_currency) ]] [[ money(row.profit_week_prev_full, row.profit_currency) ]]
1y ago [[ row.profit_week_1y_label ]] [[ row.profit_week_1y_days ]] [[ money(row.sales_week_1y, row.sales_currency) ]] [[ row.units_week_1y !== null && row.units_week_1y !== undefined ? row.units_week_1y : '-' ]] [[ money(row.profit_week_1y, row.profit_currency) ]] [[ money(row.profit_week_1y_pd, row.profit_currency) ]] [[ money(row.profit_week_1y_full, row.profit_currency) ]]
WoW · vs prev week
[[ deltaText(row.profit_wow_pct) ]]
[[ deltaMoney(row.profit_wow_delta_pd, row.profit_currency) ]]/day
YoY · vs 1y ago
[[ deltaText(row.profit_yoy_pct) ]]
[[ deltaMoney(row.profit_yoy_delta_pd, row.profit_currency) ]]/day

Sales are gross, in the marketplace currency; profit is [[ row.profit_currency ]]. W4 runs 22–end (7–10 days); W1–W3 are 7 — hence per day.

OOS · [[ Math.max(0, row.stock_available ?? 0) ]] Active Inactive · [[ row.inactive_in.join(' ') ]]
Total Active Offers: [[ row.offer_count || 0 ]]
✕

Scheduled Jobs

[[ job.label ]]

[[ job.description ]]

[[ job.status || 'pending' ]] [[ job.records_processed ]] records

Last run: [[ formatTimeAgo(job.last_run) ]]

Never run

[[ job.error_message ]]

Loading job statuses...