Dashboard

Admin
πŸ“… Date Range:
to
All Time
🏒 Company:
πŸ’°
$0
Total Revenue
πŸ“Š
$0
Total Profit
πŸ›’
0
Total Orders
πŸ“ˆ
0%
Profit Margin
πŸ“…
0
Orders Today
$0 revenue
πŸ“†
0
This Week
$0 revenue
πŸ—“οΈ
0
This Month
$0 revenue
πŸ’΅
$0
Avg Order Value
AV Cost: $0

πŸ“‹ Orders by Status

0
Pending Sync
0
Received
0
In Progress
0
Shipped
0
Released
0
Cancelled
0
Solstice Waiting
Held β€” local stock claimed
0
AV OOS
Out of stock β€” pending action

πŸ“ˆ Daily Sales Trend

πŸ† Top Selling Products

Product Orders Revenue
Loading...

πŸ… Top Selling Brands

Brand Orders Revenue
Loading...

πŸ“¦ Product Stats

0
Total Products
0
Synced
0
Total Stock
0
Price Changes (7d)

⚠️ Low Stock Alert

Product Brand Stock
Loading...

Quick Actions

Product SKU Brand Company 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.

%
$100 cost β†’ $175.00

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

0
Total Changes
0
This Week
0
This Month
0
↑ Increases
0
↓ Decreases
Date Product Brand Previous AV Cost New AV Cost Change New Shopify Price
No price changes recorded
πŸ“… Date Range:
to
All Time
Shopify Order AV Order Company Customer Items AV Total Total Status Tracking Date Actions
No orders found

Search a Shopify order and manually add it to AV. If AV has stock, fulfillment is moved to AV and local availability is zeroed.

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).

AV Null / Unknown Recreate Window

Days from order placed date before an AV order with null or unknown status is cancelled and re-submitted to AV (status sync cron).

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.

⏰ Cron Jobs

Enable or disable automated background tasks.

Order Status Sync

Checks AV for order updates, syncs tracking to Shopify (every 30 min; queued if stock sync is running)

Stock Sync

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.)

Sync Missing Orders

Loading…

Cron
Auto refund
Create New Products

Creates pending AV products in Shopify in batches (cron: once daily, e.g. 5:00 β€” set in server crontab)

Solstice Stock Evaluation

When ON: checks Solstice All-In stock before routing to AV β€” qty Solstice can handle is held in queue, remainder goes to AV. When OFF: orders are routed directly to AV without Solstice evaluation, and the waiting orders cron is skipped.

Process Waiting Orders

Re-checks order_line_queue rows in 'waiting' status by calling Solstice All In App endpoint (every hour). Creates AV orders for qty approved since last check.

Solstice All-In PO Batch (C1)

Sends C1 AV orders to Solstice All-In as purchase orders, grouped by order date. Also re-syncs cancelled batches. (cron: daily at 3 AM)

C1 Shopify Fulfillment Sync

Checks Shopify fulfillment status for C1 AV orders and marks shipped + tracking in DB. Solstice fulfills C1 orders directly in Shopify, so this keeps our DB in sync without hitting the AV status API. (cron: 5 AM & 9 PM EST)

Manual triggers:

Catalog Reconcile

For synced AV products: detect divergence on Shopify for price, compare-at price (AV Italy price), vendor (brand), required tags (aerial-vision_feed, OUTLET, aerial-v_confirmed), and company tag (aerial-vision-company-1 / aerial-vision-company-2). 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()

Aerial Vision Companies

Company IDs to query from Aerial Vision. Company 2 is always primary β€” if two companies carry the same SKU, Company 2 wins. Additional companies fill in SKUs not carried by Company 2.

Database Backup

Connection Status

Aerial Vision API Checking...
Shopify Checking...