Dashboard
π Orders by Status
π Daily Sales Trend
π Top Selling Products
| Product | Orders | Revenue |
|---|---|---|
| Loading... | ||
π Top Selling Brands
| Brand | Orders | Revenue |
|---|---|---|
| Loading... | ||
π¦ Product Stats
β οΈ Low Stock Alert
| Product | Brand | Stock |
|---|---|---|
| Loading... | ||
Quick Actions
| Product | SKU | Brand | Cost | Price | Stock | Status | Actions |
|---|---|---|---|---|---|---|---|
| No products. Import from Aerial Vision first. | |||||||
Global Markup
Default markup applied to all products without brand-specific settings. Brand overrides below take priority.
Brand Markups
One custom markup per brand. Brand rules override the global default for all products in that brand.
Example: 150% markup on a $100 cost β $250 selling price ($100 Γ 2.5).
| Brand | Markup | $100 cost β | Actions |
|---|---|---|---|
| No brand markups set | |||
π Price Change History
| Date | Product | Brand | Previous AV Cost | New AV Cost | Change | New Shopify Price |
|---|---|---|---|---|---|---|
| No price changes recorded | ||||||
| Shopify Order | AV Order | Customer | Items | AV Total | Total | Status | Tracking | Date | Actions |
|---|---|---|---|---|---|---|---|---|---|
| No orders found | |||||||||
Search a Shopify order: if it is on the local fulfillment path and AV has stock, move fulfillment to AV and zero local availability.
Orders still OOS after processing β partial (refund OOS lines only) or full (cancel + refund whole AV-only order). Shown here regardless of the auto-refund toggle.
Switch to this tab to loadβ¦
Disputes, chargebacks, and financial holds are never sent to AV or auto-refunded. Use Try AV only when staff intentionally overrides the hold.
| Order | Hold reason | Financial | Fulfillment | Disputes | Staff status | Updated | Actions |
|---|---|---|---|---|---|---|---|
| Switch to this tab to load⦠| |||||||
Step 1: Import from Aerial Vision
Fetch products from Aerial Vision API and save to local database.
Step 2: Sync to Shopify
Create/update products in Shopify from local database.
Sync History
| Type | Status | Created | Updated | Failed | Date |
|---|---|---|---|---|---|
| No sync history | |||||
Shopify Inventory Location
Set the Shopify location ID where product inventory will be synced.
AV Out-of-Stock Refund Window
Days to wait from order placed date before sync-missing may refund or cancel (see Sync Missing Orders cron for the auto-refund toggle).
Product Status
Set the default status for products when syncing to Shopify.
Note: Applies to new products created in Shopify from AV. Stock sync does not change product status.
Connection Status
β° Cron Jobs
Enable or disable automated background tasks.
Checks AV for order updates, syncs tracking to Shopify (every 30 min; queued if stock sync is running)
Updates stock
from AV to database and Shopify (cron: every 60 minutes on production; see repo scripts/crontab.production.example. Other cron jobs wait in queue while stock sync runs.)
Loadingβ¦
Creates pending AV products in Shopify in batches (cron: once daily, e.g. 5:00 β set in server crontab)
Manual triggers:
Catalog Reconcile
For synced AV products: detect divergence on Shopify for price,
compare-at price (AV Italy price), vendor (brand),
and required tags (aerial-vision_feed, OUTLET,
aerial-v_confirmed). Full catalog uses Shopify Bulk Operations
(one job at a time; queued if another is running).
Console: reconcileCatalog({ dryRun: true, limit: 5 }),
reconcileCatalog({ dryRun: false, limit: 5, startFrom: 11 }),
reconcileCatalogStatus()