# RevoStock Help Center > Knowledge base for the RevoStock Shopify inventory planning app. Source for the RevoStock LLM customer-service agent. This file contains all documentation content in a single document following the llmstxt.org standard. ## RevoStock Help Center import DocCardList from '@theme/DocCardList'; import {useDocsSidebar} from '@docusaurus/plugin-content-docs/client'; Guides for the RevoStock inventory planner for Shopify. Pick a section below to get started. item.type === 'category')} /> --- ## Buying Table overview # Buying Table overview The Buying Table is RevoStock's central replenishment workspace. It brings every SKU in your store onto one screen — ranked by urgency — so you can see at a glance what needs ordering, how much to order, and by when. Instead of manually checking stock levels across your Shopify catalogue, you work from a single prioritised list that updates automatically after every sync. ## Getting to the Buying Table Navigate to **Buying Table** in the left sidebar of the RevoStock app. The direct path is `/shopify/buying-table`. You can also arrive here from the Dashboard: each KPI stat card (for example, the **Restock Urgent** or **Zero Stock** card) is a clickable link that opens the Buying Table pre-filtered to that status group. ## Page layout The page is divided into four main areas: 1. **Status tabs** — a strip across the top showing the count of SKUs in each inventory health status. Click any tab to filter the table instantly. 2. **Toolbar** — search, vendor filter, category filter, grouping controls, density toggle, and rows-per-page selector. 3. **Table** — the main grid of SKUs with all columns described below. 4. **Restock Cart drawer** — a slide-out panel (opened via the cart button in the page header) where you stage items before exporting a purchase order. Clicking any table row (except its checkbox or action button) opens the **SKU detail drawer** — a side panel with the full demand chart, replenishment plan, and configuration breakdown for that individual product. --- ## Status tabs The tab strip above the table shows **All products** plus one tab per status. Each tab displays a live count of matching SKUs. Selecting a tab is equivalent to applying a status filter; the URL updates to `?status=` so you can bookmark or share a filtered view. Status sort order within the table (most urgent first): **Restock Urgent → Restock → Zero Stock → Replenishing → Healthy → Excess → Disabled**. For a full definition of each status see [SKU status reference](./sku-status-reference.md). --- ## Table columns | Column | What it shows | |---|---| | **Checkbox** | Select individual rows for bulk actions. The header checkbox selects all rows on the current page. | | **Image** | Product thumbnail pulled from Shopify. | | **Product** | Product name, variant name, SKU code, and vendor name — all four in a single stacked cell. | | **Stock Position** | Pills summarising the current Shopify stock picture: **Available** (units ready to sell), **Committed** (units allocated to existing orders), **Reserved** (units held back and not available to sell), **On-hand** (physical units at the warehouse), **Safety** (Shopify's safety stock quantity), **Incoming** (open purchase order quantity en route). | | **Stockout in** | How many days of stock remain at the current sales rate. Displays as `123d`. Shows `∞` when the SKU has no recent sales movement, meaning the current stock would last indefinitely at the present (zero) velocity. | | **Velocity** | Average daily sales quantity, expressed as units per day (e.g., `2.4 /day`). This is your sales rate — the engine behind all reorder calculations. | | **Stockout date** | The calendar date on which stock is projected to reach zero, calculated from today plus the days-until-stockout figure. | | **Reorder qty** | RevoStock's suggested reorder quantity for this SKU, based on your configured days of supply, lead time, safety stock, and current velocity. | | **Status** | The inventory health label for this SKU (Healthy, Restock, Restock Urgent, etc.). See [SKU status reference](./sku-status-reference.md). | | **Action** | **Add to Restock Cart** button. Once the SKU is already in the cart the button label changes to **In Cart**. | --- ## Toolbar: filtering and searching ### Search The search box in the toolbar matches against product names, variant names, SKU codes, vendor names, and categories simultaneously. Results update as you type — no need to press Enter. ### Status quick filter Click any tab in the status strip to show only SKUs with that status. Click **All products** to clear the status filter. ### Vendor filter Click the **Vendor** button in the toolbar to open a multi-select popover. Check one or more vendor names; the table updates to show only matching SKUs. Multiple vendors are combined with OR logic (a SKU from either selected vendor will appear). ### Category filter The **Category** button works the same way as the Vendor filter but filters by Shopify product category (also called product type). ### Clearing filters When any filter is active a **Clear filters** link appears in the toolbar. Click it to reset all active filters at once. --- ## Grouping, density, and pagination ### Group by The toolbar offers two grouping modes: - **SKU** — each row is one SKU. This is the default view and is best for reviewing individual products. - **Vendor** — SKUs are grouped under collapsible vendor headers. Use this when you want to assess a full vendor order at once. ### Vendor group headers When **Group by Vendor** is active, each vendor appears as a collapsible section with a header row containing: - A **chevron** to expand or collapse all SKUs for that vendor. - The **vendor name** and total **SKU count** within the group. - Status breakdown pills showing how many SKUs in the group are Restock Urgent, Restock, Zero, Healthy, or Excess. - A **Suggested PO** summary: "N units across M SKU(s)" — the total suggested reorder quantity across all SKUs in that group that have a non-zero reorder quantity. - An **Add N to cart** button that adds all eligible SKUs in the group (those with a non-zero reorder quantity that are not already in the cart) to the Restock Cart in one click. ### Density Toggle between **Comfortable** (more spacing, easier to scan) and **Compact** (more rows visible without scrolling) using the density control in the toolbar. ### Rows per page Choose **10**, **25**, **50**, or **100** rows per page from the selector at the bottom right of the table. Use the **Previous** and **Next** buttons to page through results. --- ## Selecting rows and bulk adding to cart Check individual row checkboxes, or use the header checkbox to select all rows on the current page. When one or more rows are selected a selection bar appears at the bottom of the screen showing: - The count of selected rows (e.g., "5 selected"). - A **Clear** link to deselect all. - An **Add N to Restock Cart** button that adds all selected SKUs to the cart at once. --- ## Deep links from the Dashboard Each KPI stat card on the Dashboard links directly to the Buying Table with a pre-applied status filter. For example, clicking the **Restock Urgent** card takes you to `/shopify/buying-table?status=restock_urgent`. If the status value in the URL is not one of the recognised statuses, RevoStock falls back to showing **All products**. --- ## Related - [SKU status reference](./sku-status-reference.md) — definitions for all seven inventory health statuses. - [The SKU detail drawer](./sku-detail-drawer.md) — per-SKU demand chart, replenishment plan, and config breakdown. - [Using the Restock Cart and exporting a purchase order](./using-the-restock-cart.md) — staging items and generating CSV or PDF purchase orders. --- ## The SKU detail drawer # The SKU detail drawer The SKU detail drawer is a side panel that opens when you click any row in the Buying Table. It gives you the complete picture for a single product in one place: current stock health, historical sales, a 90-day demand forecast, the full replenishment plan, and a breakdown of every configuration value governing that SKU. Use it to understand why RevoStock is recommending a particular reorder quantity and to jump directly to the relevant configuration settings if you need to make an adjustment. --- ## Opening the drawer Click anywhere on a Buying Table row except the checkbox or the **Add to Restock Cart** button. The drawer slides in from the right. Click the **X** in the drawer header, or click anywhere outside the drawer, to close it. --- ## Header The top of the drawer shows the key identifiers for the SKU at a glance: - **Thumbnail** — a 56px product image pulled from Shopify. - **Status pill** — the current inventory health status (e.g., Restock Urgent), plus the vendor name alongside it. - **Product name** — the full Shopify product title. - **Variant, SKU code, and category** — displayed in a secondary line beneath the product name. - **Edit SKU config** (gear icon) — opens the replenishment configuration panel directly scoped to this SKU. - **View on Shopify** — an external link to the product page in your Shopify admin. - **Add to Restock Cart / In Cart** — adds this SKU's suggested reorder quantity to your cart, or indicates it is already staged. This button mirrors the action button in the table row. --- ## Three key metric tiles Directly below the header, three tiles give you the most actionable numbers at a glance. | Tile | What it shows | Edge cases | |---|---|---| | **Days until stockout** | The number of days before available stock is projected to reach zero at the current sales velocity. | Displays `∞` with a "no movement" note when the SKU has had zero recent sales — meaning current stock would last indefinitely at the current (zero) rate. | | **Velocity (30d)** | The average number of units sold per day over the past 30 days, shown as a decimal (e.g., `2.4 /day`) with an approximate monthly equivalent in the footer (e.g., `~72 units/month`). | Displays `—` with a "No sales in last 90 days" note when there is no recorded sales history in that window. | | **Available** | The number of units currently available to sell (on-hand minus reserved). The footer breaks this down further: "On-hand X · Incoming Y" so you can see how much is physically present versus en route. | | --- ## Stock Position bar Below the tiles is a horizontal bar chart that visualises stock composition and thresholds together. - **Available (deep purple)** — the portion of on-hand stock that is free to sell. - **Committed (orange)** — on-hand units that are allocated to existing orders awaiting fulfilment. - **Reserved (light purple)** — Shopify's reserved quantity: on-hand units held back and not available to sell. - **Safety (blue)** — Shopify's safety stock quantity held within on-hand. - **Incoming (light green)** — units from open purchase orders that have not yet arrived. - **On-hand (outline)** — the total physical units at the warehouse, equal to available + committed + reserved + safety. Shown in the legend as a reference total. - **Smart Safety line (dashed vertical line)** — your configured safety stock floor (velocity × safety days). If the available quantity falls below this line the bar is highlighted in red as a visual warning. - **Max qty cap line** — a vertical line at the right edge representing your configured maximum stock quantity. Any reorder suggestion will not push projected stock beyond this cap. The legend beneath the bar labels each segment and threshold. --- ## Demand and Inventory Trajectory chart This chart shows 180 days of data split into two halves: - **Left half — 90-day history (blue line):** Actual daily sales quantity recorded from your Shopify orders. - **Right half — 90-day forecast (green line):** RevoStock's machine-learning demand forecast for the next 90 days, based on your sales history and detected seasonality. - **Stock remaining (orange dot/line):** The projected stock level over the forecast window, showing how current inventory depletes against forecasted demand. Use this chart to sense-check the forecast: if your business has a known upcoming promotion or seasonal peak that is not yet reflected in historical data, you may want to override the suggested reorder quantity manually in the Restock Cart. --- ## Replenishment Plan This section shows the calculated plan for this SKU. What you see depends on the SKU's situation. ### When a reorder is recommended If the suggested reorder quantity is greater than zero, four fields appear: | Field | What it shows | |---|---| | **Reorder quantity** | The suggested number of units to order, with a note showing approximately how many days of cover that quantity provides at current velocity (e.g., "120 units, covers ~30d at current velocity"). | | **Order by date** | The latest date you should place the order to avoid a stockout, accounting for your configured lead time. | | **Expected arrival** | The projected date stock will arrive, based on the order-by date plus your lead time in days (e.g., "14d lead time"). | | **Coverage after** | How many days of stock you will have after the incoming order arrives, before the next reorder would be needed. | ### When no reorder is needed — zero stock with no sales history If available stock is zero but the SKU has no velocity (no recent sales), RevoStock cannot calculate a demand-driven reorder. A warning message appears: > "No stock and no sales history. Please review and decide whether to restock manually." In this case, RevoStock does not generate a suggested quantity. You can still add the SKU to the Restock Cart and enter a quantity manually. ### When no reorder is needed — SKU is healthy If the SKU has sufficient cover and no reorder is required: > "This SKU is healthy and doesn't need restocking right now. Check back after the next forecast sync." --- ## Configuration Governing This SKU This table shows the exact values being used to calculate the replenishment plan for this SKU, and — importantly — where each value is coming from. RevoStock applies configuration in a hierarchy: a SKU-level override takes precedence over the override on the SKU's supplier, which takes precedence over the global default. | Setting | What it controls | |---|---| | **Lead time** | The number of days between placing an order and receiving stock. Used to calculate the order-by date and expected arrival. | | **Days of supply** | The number of days of demand you want each order to cover. Drives the suggested reorder quantity. | | **Safety stock** | The minimum buffer quantity you want to keep on hand at all times. Shown as the dashed safety floor line in the Stock Position bar. | | **MOQ** | Minimum Order Quantity — the smallest number of units your supplier will accept per order. The suggested reorder quantity will always be rounded up to meet this threshold. | | **Max qty** | The maximum total stock quantity you want to hold. Reorder suggestions will not push projected inventory above this cap. | | **Static reorder point** | An optional fixed stock level that triggers a reorder, overriding the dynamic forecast-based trigger. Leave blank to use the forecast-driven approach. | | **Trigger mode** | Controls when a reorder is triggered — for example, based on days of cover remaining versus a fixed reorder point. | Each row in this table displays a **Source pill** indicating which level of the configuration hierarchy is providing that value: - **SKU** — a specific override set for this individual SKU. - **Supplier** — inherited from the override on this SKU's supplier. - **Global** — inherited from your store-wide default settings, or RevoStock's built-in default when that global field is blank. A **Manage** link at the bottom of the table takes you directly to the replenishment configuration screen, scoped to this SKU, where you can add or edit overrides. --- ## Related - [Buying Table overview](./buying-table-overview.md) — the full layout of the table, columns, and filtering tools. - [SKU status reference](./sku-status-reference.md) — what each inventory health status means and how they are prioritised. - [Using the Restock Cart and exporting a purchase order](./using-the-restock-cart.md) — once you have reviewed the replenishment plan, here is how to stage and export the order. --- ## SKU status reference # SKU status reference Every SKU in RevoStock carries an inventory health status — a single label that summarises whether that product needs attention right now. Statuses are calculated automatically after each data sync and whenever you save a change to your replenishment configuration. This reference explains what each status means, what action (if any) is appropriate, and how statuses control the order in which SKUs appear in the Buying Table. --- ## The seven statuses | Status | What it means | Suggested action | |---|---|---| | **Restock Urgent** | Stock is projected to run out very soon — within your configured lead time window. If you do not place an order immediately you risk a stockout before new stock arrives. | Add to the Restock Cart and export a purchase order today. | | **Restock** | Stock is adequate for now but is forecast to drop below your safety stock floor before the next natural reorder cycle. Action is needed soon. | Review the suggested reorder quantity, adjust if necessary, and add to the Restock Cart. | | **Zero Stock** | Available stock is currently zero. The SKU may still have incoming stock on the way. | Check whether a purchase order is already in transit (look at the **Incoming** pill). If not, add to the Restock Cart immediately. | | **Healthy** | Stock levels are sufficient against forecasted demand and your configured safety stock floor. No reorder action is required at this time. | No action needed. Check back after the next sync. | | **Excess** | Stock is significantly above your target coverage level. Capital is tied up in inventory that will take a long time to sell through. | Consider running a promotion or pausing reorders for this SKU to free up cash flow. | | **Replenishing** | A purchase order is already placed and incoming stock is on the way. RevoStock is aware of the inbound quantity and factors it into projections. | Monitor the expected arrival date. No new order is needed unless the incoming quantity is insufficient. | | **Disabled** | This SKU has been excluded from replenishment planning, either individually or through its supplier's override in your replenishment configuration. RevoStock will not generate reorder suggestions for it. | If this was unintentional, open the replenishment configuration and re-enable the SKU or its parent rule. | --- ## Sort order in the Buying Table The Buying Table always surfaces the most time-sensitive SKUs first. The default sort priority is: 1. Restock Urgent 2. Restock 3. Zero Stock 4. Replenishing 5. Healthy 6. Excess 7. Disabled Within each status group, SKUs are sorted by days until stockout (ascending), so the most critical items appear at the very top of each group. --- ## How statuses are recomputed RevoStock recalculates every SKU's status in two situations: - **After each sync** — whether that is an automatic hourly sync or a manual sync you trigger from the app. - **When replenishment configuration changes** — saving any change to lead time, days of supply, safety stock, MOQ, or trigger mode causes a recalculation for all affected SKUs. A **stale config banner** appears at the top of the page during recalculation; it disappears once the new statuses are ready. Because statuses reflect a point-in-time snapshot, a SKU may move between statuses between sessions as sales occur and new forecasts are generated. --- ## Deep links from the Dashboard Each KPI stat card on the Dashboard — for example, the **Restock Urgent** count card — is a clickable link that opens the Buying Table pre-filtered to that status. This lets you jump directly from a summary number to the specific SKUs that need attention, without manually setting the filter yourself. --- ## Related - [Buying Table overview](./buying-table-overview.md) — full layout walkthrough, columns, and filtering options. - [The SKU detail drawer](./sku-detail-drawer.md) — inspect the full replenishment plan and configuration for any individual SKU. - [Using the Restock Cart and exporting a purchase order](./using-the-restock-cart.md) — once you know which SKUs need restocking, here is how to stage and export the order. --- ## Using the Restock Cart and exporting a purchase order # Using the Restock Cart and exporting a purchase order The Restock Cart is a staging area where you collect the SKUs you plan to order, review and adjust quantities, and then export a ready-to-send purchase order — either as a CSV file or a print-ready PDF. Think of it as a shopping cart for your next supplier run: nothing is committed until you export, and you can add, adjust, or remove items freely before doing so. :::note RevoStock does not create purchase orders directly in Shopify. The CSV and PDF exports are designed to be imported into your purchase-order system or forwarded to your suppliers. Your Shopify inventory is updated the normal way — through your receiving process. ::: --- ## Adding SKUs to the cart There are four ways to add a SKU to the Restock Cart: 1. **Per-row action button** — in the Buying Table, click the **Add to Restock Cart** button in the **Action** column of any row. The button label changes to **In Cart** once the SKU is staged. 2. **Bulk selection** — check the checkboxes on one or more rows (or use the header checkbox to select all rows on the current page), then click the **Add N to Restock Cart** button that appears in the selection bar at the bottom of the screen. 3. **Vendor group button** — when the Buying Table is grouped by vendor, each vendor section header shows an **Add N to cart** button. Clicking it adds all eligible SKUs in that vendor group (those with a non-zero suggested reorder quantity that are not already in the cart) to the cart in one action. 4. **SKU detail drawer** — open any SKU's detail drawer by clicking its row, then click the **Add to Restock Cart** button in the drawer header. --- ## Opening the Restock Cart The Restock Cart drawer is opened by clicking the **cart icon** in the top-right area of the Buying Table page header. A badge on the icon shows how many SKUs are currently staged. The drawer slides in from the right. --- ## Reviewing cart contents ### Header and summary bar The drawer header shows the total count of staged items across all vendors (e.g., "8 item(s) across 3 vendor(s)"). Directly below the header, a summary bar displays: - **Total units** — the sum of all reorder quantities currently in the cart. - **Estimated cost** — the total estimated order value, calculated from unit costs where they are available in RevoStock. This field is hidden if no unit costs have been configured. - **Last synced timestamp** — the date and time of the most recent data sync, so you know how fresh the underlying recommendations are. A notice below the summary bar reads: "Recommendations from the latest sync. Export to CSV or PDF to create POs in your purchase-order system." ### Vendor groups Cart items are grouped by vendor. Each vendor section is collapsible and shows: - The vendor name. - The number of SKUs staged from that vendor. - The total units for that vendor group. - The total estimated cost for the group (if unit costs are available). ### Per-line item details Each line in a vendor group shows: - **Thumbnail, product name, variant name, and SKU code.** - **Status pill** — the current inventory health status of the SKU (e.g., Restock Urgent). - **Tags** — three at-a-glance tags: **Cover Xd** (days of supply this order will cover), **Lead Xd** (lead time in days), and **MOQ X** (minimum order quantity). - **Quantity stepper** — the suggested reorder quantity is pre-filled but fully editable. Click the minus or plus buttons, or click the number field and type directly, to override the quantity. Adjustments do not affect the underlying RevoStock suggestion — they only change the export value. - **MOQ warning** — if you manually reduce the quantity below the SKU's configured MOQ, a red warning appears on that line to flag the discrepancy. - **Order date** — the latest date by which this order should be placed to avoid a stockout. - **Expected arrival** — the projected delivery date based on the order date plus lead time. - **Line cost** — the estimated cost for this line (quantity × unit cost), if a unit cost is configured. --- ## Empty state If no items have been added yet, the cart shows a shopping cart icon with the message: > "Your restock cart is empty. Add items from the Buying Table to plan your next purchase order." --- ## Exporting a purchase order Once you are happy with the cart contents, use the footer buttons to export. ### Export to CSV Click **Export CSV** to download a file named `restock_cart.csv`. The file contains one row per SKU with the following columns: | Column | Description | |---|---| | **Vendor** | The SKU's vendor name. | | **SKU** | The SKU code. | | **Product** | The product name. | | **Variant** | The variant name. | | **Reorder Qty** | The quantity to order (your adjusted value if you changed it). | | **Reorder Date** | The order-by date. | | **MOQ** | The configured minimum order quantity. | | **Days of Supply** | The number of days this order is intended to cover. | | **Lead Time (Days)** | The configured lead time in days. | | **Cover Start** | The start date of the coverage window this order fills. | | **Cover End** | The end date of the coverage window. | | **Expected Arrival** | The projected date stock will arrive. | | **Unit Cost** | The unit cost if configured, otherwise blank. | | **Line Cost** | Reorder Qty × Unit Cost if unit cost is available, otherwise blank. | This CSV is designed to be imported into your purchase-order software, sent to your procurement team, or emailed directly to suppliers. ### Export to PDF Click **Export PDF** to generate a print-ready document. The PDF uses a vendor-grouped layout — one section per vendor — with columns for SKU, Product, Reorder Qty, Reorder Date, MOQ, Cover, Lead Time, Cover Period, and Expected Arrival. An auto-print dialog opens immediately so you can print or save the file. --- ## Clearing the cart Click the **Clear cart** button in the footer to remove all items from the cart at once. This action is destructive and cannot be undone, so RevoStock will ask you to confirm before proceeding. Any manual quantity adjustments you have made will be lost. To remove a single item, reduce its quantity to zero or use the delete control on that line rather than clearing the entire cart. --- ## Related - [Buying Table overview](./buying-table-overview.md) — how to navigate, filter, and use the full replenishment table. - [The SKU detail drawer](./sku-detail-drawer.md) — review a SKU's full demand chart and replenishment plan before adding it to the cart. - [SKU status reference](./sku-status-reference.md) — understand what the status pills in the cart mean. --- ## Dashboard # Dashboard The Dashboard is your home screen in RevoStock. The moment you open the app at `/shopify` you get a full inventory health snapshot: how many SKUs need restocking right now, a 90-day demand and revenue forecast across your entire catalog, how your revenue is distributed across product tiers (ABC analysis), and a ranked list of your top-performing SKUs — all on a single page, always reflecting your latest Shopify data. --- ## Page layout The Dashboard loads top to bottom in the following order: 1. **Page header** — store name, navigation, and the data-sync indicator (explained below). 2. **Stale config banner** — appears only when replenishment settings have changed since the last sync. 3. **Onboarding tasks card** — a short checklist shown to new users until it is dismissed. 4. **KPI stat cards row** — one card per inventory status. 5. **Demand & Revenue chart** — aggregated forecast across your full catalog. 6. **ABC Distribution donut + Top SKUs table** — side by side. --- ## Data-sync indicator The page header always shows the time your store data was last synced with Shopify, for example "Last synced 4 minutes ago." Alongside it is a **Refresh** button. - Clicking **Refresh** triggers an immediate recent sync (new and updated orders, products, and inventory). This is equivalent to the "Recalculate now" action on the stale config banner. - After the sync completes, all KPI cards, charts, and the Buying Table automatically reflect the updated figures. --- ## Stale config banner When you edit your Replenishment Config settings after a sync has already run, the banner appears at the top of the page with the message: > "Replenishment config has changed since your last sync. Numbers shown may be outdated." Click **Recalculate now** to trigger a fresh sync immediately rather than waiting for the next hourly run. The banner disappears once the recalculation finishes. --- ## Onboarding tasks New accounts see a small checklist card with three tasks and an X/3 progress indicator: | Task | What it unlocks | |---|---| | Configure replenishment | Reorder points, lead times, and safety stock tailored to your store | | Set up alerts | Low stock email notifications before you run out | | Tour the Buying Table | Reviewing and acting on reorder suggestions | Once all three tasks are complete — or if you prefer to explore on your own — click the **X** to dismiss the card permanently. --- ## KPI stat cards The KPI cards row gives you a count of SKUs in each inventory status at a glance. Each card displays: - A **status label** (see table below). - A **primary count** — the number of SKUs in that status. - A **secondary units figure** — the total units on hand across those SKUs. Clicking any card takes you directly to the **Buying Table** filtered to that status, so you can act immediately. ### Status definitions | Status | What it means | |---|---| | **Healthy** | Stock on hand comfortably covers projected demand through the reorder window. No action needed. | | **Restock** | Stock is falling toward the reorder point. Place an order soon. | | **Restock Urgent** | Stock has dropped to or below the reorder point. Order immediately to avoid a stockout. | | **Zero Stock** | No units on hand. The SKU is currently out of stock. | | **Excess** | Stock on hand significantly exceeds projected demand. Capital may be tied up unnecessarily. | | **Replenishing** | A purchase order is already in transit. Stock will be replenished when it arrives. | | **Disabled** | Replenishment tracking is turned off for this SKU. It will not appear in reorder suggestions. | :::tip Drilling down Click the **Restock Urgent** card to see a Buying Table pre-filtered to only the SKUs that need an order today. This is the fastest way to act on the most critical items first. ::: --- ## Demand & Revenue chart This chart shows 90 days of historical data plus a 90-day forward forecast, aggregated across every SKU in your catalog. ### Reading the chart - The **solid line** on the left side of the chart centre represents actual historical data. - The **dashed line** on the right represents the AI-generated forecast. - The shaded band around the forecast line shows the confidence interval — the range within which demand is expected to fall. ### Switching between Demand and GMV Use the toggle above the chart to switch views: - **Demand** — units sold per day (or per week, depending on zoom level). Use this to understand order volume trends and seasonality. - **GMV (Gross Merchandise Value)** — revenue per period in your store's currency. Use this to understand the financial impact of demand shifts. Both views share the same 90-day history + 90-day forecast window and update whenever a sync completes. --- ## ABC Distribution donut ABC analysis (also called Pareto analysis) groups your SKUs into three tiers based on their share of total revenue (GMV) over the last 90 days. | Category | Typical rule of thumb | |---|---| | **A** | ~20% of SKUs that drive ~80% of GMV | | **B** | The middle tier — meaningful revenue contributors | | **C** | The remaining SKUs with low individual GMV impact | The donut chart shows each category as a segment. Hovering over a segment reveals: - **SKU count** — how many SKUs fall in that category. - **Share of catalog** — that category's percentage of total SKU count. - **90-day GMV** — total revenue those SKUs generated in the last 90 days. The footer of the donut restates the Pareto rule as it applies to your specific catalog, for example: "Category A drives 80% of GMV from 20% of SKUs." :::note Why this matters Category A SKUs are the highest-stakes items to keep in stock. A stockout on a Category A product has a disproportionate impact on revenue compared to a Category C stockout. ::: --- ## Top SKUs by GMV table Directly beside the donut chart is the **Top SKUs** table, which ranks your products by 90-day GMV. This helps you quickly identify your most valuable products and their current ABC standing. ### Columns | Column | Description | |---|---| | **Rank** | Revenue rank (1 = highest GMV) | | **Image** | Product thumbnail | | **Product / Variant / SKU** | Full product name, variant title, and SKU code | | **GMV (90d)** | Total revenue generated over the last 90 days | | **GMV Share %** | This SKU's share of catalog-wide GMV | | **ABC** | Category tag (A, B, or C) | ### Filtering and search - **Vendor dropdown** — narrow the table to products from a specific supplier. - **ABC dropdown** — filter to a single category (A, B, or C). - **Search box** — search by product name, variant, or SKU code. All three filters can be combined. The table updates instantly as you type or select. --- ## Common issues **KPI card counts look wrong after I changed my replenishment settings.** Your replenishment config change has not been picked up yet. Look for the stale config banner and click **Recalculate now**, or click **Refresh** in the page header. **The forecast chart shows a flat line.** RevoStock needs at least a few weeks of order history to generate a meaningful forecast. If your store is new or was recently connected, the forecast will improve as more data accumulates. **I dismissed the onboarding tasks card too early.** The individual setup tasks are still accessible: replenishment config under **Settings**, alerts under **Notifications**, and the Buying Table from the main navigation. --- ## Related - [Buying Table overview](./buying-table/buying-table-overview.md) - [Data Sync](./data-sync.md) - [Notifications](./notifications.md) - [Forecasting](./forecasting.md) --- ## Data Sync # Data Sync RevoStock pulls your product catalog, order history, and inventory levels directly from Shopify, then runs its forecasting and replenishment math on top of that data. This guide explains exactly what gets synced, how the two sync types differ, how to trigger a manual refresh, and what to do when the stale config banner appears. --- ## What RevoStock syncs from Shopify Each sync operation reads the following data from your connected Shopify store: | Data type | What is pulled | |---|---| | **Products and variants** | Product titles, variant titles, SKU codes, vendor, and product images | | **Orders and sales history** | Order line items and quantities used to calculate sales velocity and feed the demand forecast | | **Inventory items** | Current stock-on-hand quantities across your locations | | **Store info** | Store timezone (IANA format), currency, and your active Shopify plan | RevoStock uses your store timezone for all schedule calculations — including when Low Stock Alert emails are delivered — and your currency for all GMV figures shown in the Dashboard and Buying Table. :::note Locations RevoStock reads inventory at the store level. If you have multiple Shopify locations, stock quantities are aggregated across all active locations. ::: --- ## Two types of sync ### Initial (full) sync The initial sync runs once, automatically, at Step 2 of the RevoStock onboarding flow. It pulls your complete product catalog, full order history, and current inventory levels from scratch. - **Typical duration:** depends mostly on your order count — usually under a minute for stores with under 1,000 orders, a few minutes up to 10,000 orders, about 10–20 minutes up to 50,000 orders, and up to about 30 minutes beyond that. See [How long does the initial sync take?](./faqs/how-long-initial-sync-takes.md). - **What triggers it:** completing the connection step during onboarding. You can also re-run it manually by selecting **Re-sync all data** in Settings (this is rarely needed). - During the initial sync, the Dashboard will show a "No data has been synced yet" message until the sync completes. ### Recurring (recent) sync Once onboarding is complete, RevoStock automatically syncs your store every hour in the background. You do not need to do anything to keep this running. - Each recurring sync picks up **new and updated** orders, products, and inventory since the previous sync. :::note Forecasts run on a separate weekly schedule The hourly sync keeps your Shopify data — orders, inventory, products — up to date and recomputes planner outputs like reorder quantities and stockout dates. The **demand forecast itself** is re-trained **weekly** on its own cadence. See [Forecasting → When forecasts refresh](./forecasting.md#when-forecasts-refresh). ::: - Syncs are distributed across the minute to spread load, so the exact time within each hour varies slightly. - A per-integration lock prevents two syncs from running against the same store simultaneously, so there is no risk of duplicate or conflicting data even if something retries. --- ## Running a manual sync You do not need to wait for the next hourly run. There are two ways to trigger an immediate recent sync: 1. Click the **Refresh** button next to the data-sync indicator in the page header. The indicator shows "Last synced X minutes ago" so you always know how current your data is. 2. Click **Recalculate now** on the stale config banner (see below). Both actions kick off the same recent sync: new orders, updated products, and current inventory levels. The Dashboard, Buying Table, and Live SKU Config view all refresh once the sync completes. --- ## Shopify webhooks In addition to the hourly sync, RevoStock subscribes to one Shopify webhook: | Webhook | What it does | |---|---| | `ORDERS_DELETE` | Propagates order deletions immediately, rather than waiting for the next hourly sync | All other changes — new orders, inventory adjustments, product edits — are caught by the hourly recurring sync. --- ## The stale config banner If you edit your Replenishment Config (lead times, safety stock, reorder points) after the last sync ran, the Dashboard shows a banner: > "Replenishment config has changed since your last sync. Numbers shown may be outdated." This does not mean your Shopify data is out of date. It means the replenishment calculations — reorder points, days to stockout, KPI card statuses — have not yet been recomputed using your new settings. Click **Recalculate now** on the banner to trigger a sync immediately and bring all figures up to date. ### Banner states at a glance | Banner message | What is happening | |---|---| | "No data has been synced yet" | First install — the initial sync has not run yet | | "Recalculating..." | A sync is currently in progress | | "Replenishment config has changed since your last sync. Numbers shown may be outdated." | Config was edited after the last sync; manual recalc available | The banner disappears automatically once the sync or recalculation finishes. --- ## After a sync completes When any sync finishes, the following parts of RevoStock update automatically to reflect the new data: - **Dashboard** — KPI stat cards, Demand & Revenue chart, ABC Distribution donut, Top SKUs table. - **Buying Table** — reorder suggestions, days-to-stockout figures, sales velocity. - **Live SKU Config view** — current stock levels and replenishment status per SKU. The data-sync indicator in the page header updates its timestamp to "Last synced just now." --- ## Common issues **The Dashboard still shows old data after I clicked Refresh.** The sync may still be running. Wait a few seconds and reload the page. If the "Last synced" timestamp in the header has not updated after a minute, check your Shopify connection under **Settings > Integrations**. **The initial sync seems stuck.** For the largest stores (more than 50,000 orders) the initial sync can take up to about 30 minutes. If the "No data has been synced yet" message persists for more than **45 minutes** — well past that longest estimate — disconnect and reconnect your Shopify store from **Settings > Integrations**, which will restart the sync from the beginning. **My stock levels in RevoStock do not match Shopify.** The most common cause is that your last sync ran before a recent inventory adjustment in Shopify. Click **Refresh** to pull the latest levels. If the mismatch persists after a sync, confirm that the affected location is active in your Shopify store settings. --- ## Related - [Dashboard](./dashboard.md) - [Notifications](./notifications.md) - [Buying Table overview](./buying-table/buying-table-overview.md) - [Forecasting](./forecasting.md) --- ## Does RevoStock write back to Shopify (e.g. inventory updates)? # Does RevoStock write back to Shopify (e.g. inventory updates)? Yes — for inventory only. RevoStock reads your store data to power forecasts and reorder suggestions, and it pushes **inventory adjustments** back to Shopify when stock arrives: - When you record goods received against a purchase order in RevoStock, it adds the received quantities to each item's available inventory in Shopify, at the purchase order's destination location. - If you void a receipt, RevoStock reverses that adjustment in Shopify. Forecasts, reorder suggestions and your replenishment settings stay inside RevoStock — they are never written to Shopify. ## What RevoStock reads from Shopify RevoStock syncs the following data from your store: - **Products and variants** — titles, SKUs, vendor, inventory levels, and tracking settings. - **Orders** — historical order lines used to compute sales velocity and train forecasts. - **Inventory levels** — on-hand quantities kept up to date via hourly syncs. RevoStock also subscribes to one Shopify webhook, `ORDERS_DELETE`, so if an order is deleted in Shopify it doesn't linger in your forecast history. ## What RevoStock doesn't do - It does not change inventory quantities in Shopify except to apply the goods receipts (and receipt voids) you record on purchase orders. - It does not create or send purchase orders through Shopify. - It does not modify, cancel, or fulfil orders. - It does not tag products or change any product fields. ## Where reorder suggestions go When the Buying Table flags a SKU for reorder, the suggested quantity lives only inside RevoStock. To act on it, create a purchase order in RevoStock, or export the restock cart as a **CSV** or **PDF** and import that file into your existing purchasing or ERP system. Suggestions and purchase orders are never sent to Shopify — the only thing RevoStock pushes is the inventory adjustment when you record stock received. ## Related - [Using the restock cart](../buying-table/using-the-restock-cart.md) - [Data sync overview](../data-sync.md) --- ## How long does the initial sync take? # How long does the initial sync take? How long the initial sync takes depends mostly on how many orders your store has. Small stores usually finish in **under a minute**; the largest stores can take **up to about 30 minutes**. The Connect & Sync step shows the estimate for your store before the sync starts. ## Typical timing | Orders in your store | Expected duration | |---|---| | Under 1,000 | Usually under a minute | | 1,000 – 10,000 | A few minutes | | 10,000 – 50,000 | About 10 – 20 minutes | | More than 50,000 | Up to about 30 minutes | If RevoStock can't read your order count, the step shows "a few minutes — longer for larger stores" instead. These are estimates, not guarantees. The sync runs automatically during **Step 2** of the onboarding flow. You don't need to trigger it manually, and you can safely leave the page open in the background while it runs. ## What's happening during sync The initial sync is a single pipeline that runs four stages back to back: 1. **Catalog fetch** — pulls all products, variants, and current inventory levels from Shopify. 2. **Order history fetch** — pulls historical order lines used to compute sales velocity. 3. **Replenishment config generation** — builds a default configuration for every tracked SKU (lead time, safety stock, days of supply, MOQ). 4. **First forecast run** — uses the order history to produce initial demand forecasts and populate the Buying Table. All four stages must complete before your dashboard shows live data. ## When it's slower than expected If the progress indicator has been running for more than **45 minutes** — well past the longest estimate of about 30 minutes — something may have stalled. Common causes are a temporary Shopify API rate-limit or a network timeout between RevoStock and your store. Try refreshing the page — if the sync still hasn't completed, see [Initial sync stuck or failing](../troubleshooting/initial-sync-stuck-or-failing.md) or contact support with your store URL and we'll check the run logs. ## Related - [Data Sync](../data-sync.md) - [Installing RevoStock from the Shopify App Store](../getting-started/installing-nxrevo-from-shopify-app-store.md) - [Initial sync stuck or failing](../troubleshooting/initial-sync-stuck-or-failing.md) --- ## How does RevoStock calculate the suggested restock quantity? # How does RevoStock calculate the suggested restock quantity? The suggested restock quantity depends on two things: the SKU's **trigger mode** (which decides when to flag a reorder) and the **sizing formula** (which decides how much to order). After sizing, RevoStock applies a MOQ floor and an optional max cap. ## What drives the quantity RevoStock supports four trigger modes, each with its own sizing logic: **SmartDays (default)** The SKU is flagged when projected stock is about to fall below the buffer needed to cover lead time plus safety stock. The order quantity is sized to replenish enough stock to last for the configured **Days of supply** window, starting from the expected arrival date. ``` Reorder Qty = Forecasted daily velocity x Days of supply ``` Both the trigger timing and the order size are driven by the AI-forecasted velocity, so they automatically adjust as your sales pace changes. **ManualQty** The SKU is flagged when on-hand stock falls at or below the **Static reorder point** you set manually. The order quantity equals that same static reorder point value — no forecast is used for sizing. **Hybrid** Triggers on whichever condition fires first: the static reorder point or the SmartDays threshold. Quantity is sized using the SmartDays formula (forecasted velocity x days of supply), but it will never be less than the static reorder point. **Disabled** The SKU is never flagged for reorder and does not appear in the Buying Table. ## MOQ and cap adjustments After the raw quantity is calculated, two guardrails are applied in order: 1. **MOQ floor** — if your supplier has a minimum order quantity, the final quantity is raised to meet it: `final = max(calculated qty, MOQ)`. 2. **Max quantity cap** — if you've set a ceiling to avoid over-ordering, the quantity is reduced if needed: `final = min(floored qty, max cap)`. Example: SmartDays sizes a reorder at 80 units, MOQ is 100, max cap is 150. The final suggestion is 100 units. ## Where to see the result The calculated quantity appears in the **Reorder Qty** column of the Buying Table. Click any row to open the SKU detail drawer, which shows the exact inputs — velocity, lead time, days of supply, safety stock, MOQ, and cap — that produced the number. ## Related - [Buying Table overview](../buying-table/buying-table-overview.md) - [Using the restock cart](../buying-table/using-the-restock-cart.md) - [Sales velocity and days to stockout](../buying-table/sales-velocity-and-days-to-stockout.md) --- ## Can I use RevoStock across multiple Shopify stores? # Can I use RevoStock across multiple Shopify stores? Each RevoStock subscription is tied to one Shopify store. There is no cross-store dashboard today. ## Per-store installs To use RevoStock with more than one store, install the app separately on each store through the Shopify App Store. Each install creates its own RevoStock account and subscription. You log in to each store's RevoStock instance independently. ## Per-store configuration Every store maintains its own: - Replenishment configuration (lead times, safety stock, days of supply, MOQ). - Forecast history and sales velocity data. - Restock cart and Buying Table. Changes made in one store's RevoStock instance have no effect on any other store. ## Roadmap and getting help A unified multi-store dashboard is not currently available. If you operate several stores and need consolidated visibility or reporting, reach out to support at support@nxrevo.com — we track these requests to inform the roadmap and can discuss workarounds in the meantime. ## Related - [Install RevoStock from the Shopify App Store](../getting-started/install-nxrevo-from-shopify-app-store.md) - [Starting your 14-day free trial](../getting-started/starting-your-14-day-free-trial.md) --- ## Why is my forecast empty or look off? # Why is my forecast empty or look off? A forecast can appear missing or unusually high or low for a handful of well-defined reasons. Most are resolvable without contacting support. ## Common reasons **Brand-new SKU with little history** When a SKU has very few sales on record, RevoStock routes it to a simpler fallback method — typically the last observed day's velocity or a store-wide mean. The forecast will be conservative until enough history accumulates. This is expected behaviour. **No sales in the lookback window** If the SKU hasn't sold anything recently, velocity shows as "—" and Days until stockout reads "infinity — no movement". This is not a bug; it means the model sees genuine zero demand for that window. **Stockouts in the history** RevoStock detects periods where on-hand was zero and treats them as stockout days rather than true zero-demand days, so they don't drag the forecast down. If your inventory tracking was unreliable during a stockout, the history feeding the model may still be misleading — in that case, accumulated future data will self-correct over time. **Untracked inventory** SKUs with Shopify's **Track quantity** setting disabled show as **Disabled** in RevoStock and receive no forecast. Enable quantity tracking in Shopify Admin, then run a manual sync. **Trigger mode set to Disabled** If the SKU's trigger mode is set to **Disabled** in Replenishment Config, the planner skips it entirely. Open the SKU detail drawer and check the **Configuration Governing This SKU** rows to confirm. **Single large outlier order** One unusually large bulk order can spike the forecast temporarily. RevoStock caps extreme outliers using an IQR-based method (factor 3.0), but the effect may still be visible shortly after the event. It normalises once newer, typical orders enter the window. **Stale figures after a config edit** If you've just updated replenishment config, the Buying Table won't reflect the new numbers until the next sync. Click **Recalculate now** in the stale config banner at the top of the page to force an immediate refresh. ## What to check 1. Open the SKU detail drawer and review the **Configuration Governing This SKU** section — it shows the exact trigger mode, lead time, safety stock, and days of supply in use. 2. Confirm **Track quantity** is enabled for the SKU in your Shopify Admin. 3. If you recently edited config, look for the stale config banner and click **Recalculate now**. 4. Check whether the SKU has at least a few weeks of order history. If it's newly listed, give it time. ## When to contact support If none of the above explains what you're seeing — for example, the forecast is wildly off for a SKU with months of clean history — email support@nxrevo.com with the SKU name or variant ID and a brief description of what the forecast shows versus what you'd expect. ## Related - [How RevoStock forecasts demand](../forecasting/how-nxrevo-forecasts-demand.md) - [Buying Table overview](../buying-table/buying-table-overview.md) - [Running a manual sync](../data-sync/running-a-manual-sync.md) --- ## Forecasting # Forecasting RevoStock turns your Shopify sales history into a 90-day demand forecast for every SKU in your store — so instead of guessing when to reorder, you work from numbers that reflect your actual sales patterns. This guide explains what the forecast covers, how RevoStock picks the right method for each product, and what you can do to get the most accurate results. --- ## What RevoStock forecasts RevoStock produces a **daily demand forecast for each SKU** for the next 90 days. Those per-SKU numbers are the foundation of everything else you see in the app: - The **Dashboard** aggregates them into two store-level metrics: **90-day forecasted demand** (total units expected to sell) and **90-day forecasted GMV** (expected revenue). Both are displayed on the Demand vs. GMV chart alongside your last 90 days of actual sales, so you can see the trend at a glance. - The **Buying Table** uses the per-SKU forecast to calculate how long your current stock will last, when to reorder, and how many units to order. Think of the forecast as a live estimate of your sales rate — one that updates automatically as new orders come in. --- ## The forecast window | | Details | |---|---| | **Forecast horizon** | 90 days forward from today | | **History used for training** | Up to 2 years (730 days) of past sales, when available | | **Validation window** | The most recent 28 days of history are held out to test how well each candidate model performs before one is selected | Using up to two years of history lets RevoStock capture annual seasonal patterns — for example, a spike every December or a dip every July. The 28-day holdout is how RevoStock validates accuracy before committing to a forecast method; the model that performed best on those 28 days is the one used going forward. --- ## How RevoStock picks a forecasting method per SKU RevoStock evaluates each SKU individually and chooses the most suitable forecasting method automatically — you don't need to configure anything. Products behave very differently (a fast-moving consumable is nothing like a specialty accessory), so RevoStock considers each SKU's sales history and demand pattern, tests several candidate methods against your recent actuals, and selects the one that best fits that specific product. Your highest-volume, well-established SKUs get the most sophisticated treatment, while newer or slower-moving items get a conservative method that won't produce wild swings. --- ## Sales velocity **Sales velocity** is the average number of units a SKU sells per day, derived directly from its 90-day forecast. It is displayed in the **Velocity** column of the Buying Table. Velocity drives three key calculations: | Calculation | Formula | |---|---| | **Days until stockout** | Available stock / Velocity | | **Stockout date** | Today + Days until stockout | | **Coverage after reorder** | (Available stock + Incoming + Reorder qty) / Velocity | **Example.** A SKU has 120 units available and a velocity of 4 units/day. Days until stockout = 120 / 4 = **30 days**. If today is June 1, the stockout date is July 1. ### When velocity shows "—" or infinity If a SKU has zero forecasted demand over the entire 90-day window, RevoStock cannot calculate a meaningful days-until-stockout. The **Stockout in** column will show `∞` (your current stock would technically last forever at a zero sales rate) and the Velocity column will reflect no movement. This is expected for discontinued products, seasonal items outside their active window, or brand-new listings with no sales history yet. --- ## What affects forecast accuracy The forecast is only as good as the data behind it. Here is what matters and what you can do about it. ### More history means better forecasts RevoStock uses up to two years of sales data. The more history available, the more patterns — trends, weekly cycles, seasonal peaks — the model can detect. A SKU that launched last month will produce a less precise forecast than one you've been selling for two years. This is expected; the forecast improves automatically as history accumulates. ### Stockout periods are treated differently from zero-demand days If your stock hit zero and you had no units to sell, that looks like zero sales — but it doesn't mean demand was zero. RevoStock detects stockout periods (days when available inventory was zero) and treats them separately from genuine zero-demand days. This prevents a prolonged out-of-stock from artificially lowering your forecasted velocity. ### Extreme one-off orders are smoothed out A single bulk order — for example, a corporate purchase 10 times larger than your typical order — can distort a trend if taken at face value. RevoStock caps outliers so that one unusual day doesn't skew your entire forecast. The underlying data is not deleted; it is capped to a reasonable ceiling before modelling. ### Seasonal patterns require enough history For RevoStock to detect an annual seasonal pattern (e.g., a peak every November), it needs at least enough history to have seen that pattern once. If your store is less than a year old, year-over-year seasonality cannot yet be captured. RevoStock will still produce a forecast using shorter-cycle patterns (weekly rhythms, recent trend), but the annual shape will be incorporated as your history grows. ### Recent changes take a few sync cycles to be reflected If you run a promotion, change a price, or launch a new product variant, the forecast will not update instantly. Hourly syncs pull in the latest orders, but the forecast model itself is re-trained on a weekly cadence (see [When forecasts refresh](#when-forecasts-refresh) below). A short-term promotion may therefore show up as a brief spike in your actuals before the next weekly forecast adjusts. For a major change — such as a product relaunch or a significant channel expansion — expect the forecast to converge toward the new baseline over a few weeks of new sales data. --- ## When forecasts refresh Forecasts are recomputed **weekly** on an automated schedule. This is separate from your hourly data sync, which keeps Shopify orders, products, and inventory current — the forecast model itself only re-trains on its weekly cadence. The weekly cadence is deliberate. Demand patterns evolve over weeks and months, not hours, so re-fitting the model more often would add cost and noise without meaningfully changing predictions. In between forecast runs, your Buying Table still updates throughout the day: on-hand stock, incoming inventory, days-until-stockout, and reorder suggestions all recompute on each hourly sync using the most recent forecast. If you change a replenishment configuration (lead time, safety stock, days of supply), a **stale config** banner will appear at the top of the app. Reorder suggestions and KPI statuses refresh on the next sync — or you can click **Recalculate now** on the banner for an immediate recompute. Note that this re-runs the planner against your current forecast; it does not retrain the forecast model, which is on its own weekly schedule. --- ## Related - [Dashboard](./dashboard.md) — where 90-day demand and GMV forecasts are visualised at the store level. - [Buying Table overview](./buying-table/buying-table-overview.md) — how forecast-driven velocity, stockout dates, and reorder quantities appear in your replenishment workspace. - [How restock quantity is calculated](./faqs/how-restock-quantity-is-calculated.md) — the exact formula behind the suggested order quantity. - [Why my forecast looks empty or off](./faqs/why-forecast-is-empty-or-off.md) — troubleshooting common forecast issues. - [Data Sync](./data-sync.md) — how RevoStock keeps your sales history up to date and when forecasts recalculate. --- ## About the 14-day free trial # About the 14-day free trial Your RevoStock trial gives you 14 days of full, unrestricted access to every feature in the app — completely free, with no credit card required and no automatic charges when the trial ends. --- ## What the trial gives you When you start your trial, you get immediate access to the same tools available on any paid plan. There are no locked features, no watermarks, and no limits on how deeply you can use the app — only the SKU variant cap described below applies. This means you can run real forecasts on your actual store data, generate genuine reorder recommendations, and evaluate whether RevoStock fits your workflow before spending a cent. --- ## What's included Every feature listed below is available from the moment you click **Start my free trial**: - **Inventory Overview Dashboard** — A real-time, high-level view of your stock health, capital allocation, and key inventory metrics across your entire catalog. Spot problems and opportunities at a glance without digging through spreadsheets. - **Advanced AI/ML Forecasting** — Machine learning models that analyze your historical sales data to predict future demand and account for seasonal trends. The more sales history your store has, the more accurate these forecasts become. - **Smart Reorder Suggestions and the Buying Table** — Automated calculations that tell you exactly when to reorder each product and how much to buy. Review, adjust, and export recommendations from the interactive Buying Table to turn AI-driven insights into purchase orders without extra manual work. - **SKU-Level Trend Analysis** — Per-product performance tracking that identifies your fast-movers, slow-movers, and items whose sales velocity is shifting. - **Low Stock Alerts (email)** — Proactive email notifications sent before you run out of stock, calculated using your lead times and sales velocity so you are warned in time to act. - **Live chat support** — Access to the RevoStock support team directly from within the app throughout your trial. --- ## Trial limits ### SKU variant cap During the trial, RevoStock tracks up to **2,500 SKU variants**. A variant is a single purchasable version of a product. A T-shirt sold in three colors and four sizes counts as 12 variants, not 1 product. For most small to mid-sized Shopify stores, 2,500 variants covers the full catalog. If your store is larger, RevoStock will automatically track the top 2,500 variants ranked by GMV (gross merchandise value), and a banner inside the app will notify you that not all variants are being tracked. If you need to track more than 2,500 variants, the **Growth Plan** (up to 5,000 variants) and **Pro Plan** (up to 10,000 variants) are available as paid subscriptions once your trial ends. ### All other limits There are no other usage limits during the trial. Forecasting runs, reorder suggestions, exports, and email alerts are all unlimited. --- ## What it costs **The trial costs $0.** There is no charge for any day of your 14-day trial. **No credit card is required.** RevoStock does not ask for a payment method at install or at any point during the trial. A card only becomes relevant when you actively choose to subscribe through Shopify's billing flow — nothing is collected or charged in the background. --- ## How to start the trial The trial is not started automatically at install. It activates when you click a single button in the onboarding wizard: 1. Install RevoStock from the Shopify App Store. See [Installing RevoStock from the Shopify App Store](./installing-nxrevo-from-shopify-app-store) for a full walkthrough. 2. After install, you land on the **Welcome** step (Step 01 of 04) of the onboarding wizard. 3. Review the trial details shown on screen: $0 for 14 days, all features included, up to 2,500 SKU variants, no credit card required. 4. Click **Start my free trial**. Your 14-day countdown begins at the exact moment you click that button — not at the time of app install. --- ## What happens when the trial ends ### The trial does not auto-convert Because no payment method was collected, the trial cannot convert to a paid subscription automatically. When your 14 days expire, you will not be charged anything. To continue using RevoStock, you need to actively choose a paid plan through Shopify's billing flow. ### 7-day grace period To give you time to decide without losing access instantly, RevoStock includes a **7-day grace period** after the trial expires. During those 7 days, the app remains accessible so you can complete the upgrade at your own pace. If you have not subscribed by the end of the grace period, your access becomes inactive. Your data is preserved — re-subscribing at any time restores full access and picks up where you left off. ### Paid plan options When you are ready to subscribe, three plans are available, all billed monthly through Shopify: | Plan | Price (USD) | Price (SGD) | SKU Variant Limit | |---|---|---|---| | **Starter** | $19 / month | $24 / month | Up to 2,500 variants | | **Growth** | $39 / month | $49 / month | Up to 5,000 variants | | **Pro** | $79 / month | $99 / month | Up to 10,000 variants | All three plans include the same full feature set. The only difference is the number of SKU variants you can track. You can upgrade or downgrade at any time. --- ## Cancelling the trial There is nothing to cancel. Because no payment method was collected, there is no billing relationship to end. To stop using RevoStock, simply uninstall the app from **Apps** in your Shopify admin. If you do nothing, access stops automatically after the trial and grace period expire — and you will never receive an invoice or charge. --- ## Common questions ### Will I be charged automatically when my trial ends? No. RevoStock never collected a payment method, so no automatic charge is possible. When the trial expires you lose access after the 7-day grace period unless you choose to subscribe. The choice is entirely yours. ### What if I need more than 2,500 SKU variants? You can still use the trial to evaluate the app with your top 2,500 variants. When subscribing, choose the **Growth Plan** or **Pro Plan** to cover your full catalog. ### Can I extend my trial? Trial extensions are handled on a case-by-case basis. If a technical issue prevented you from fully evaluating the app, contact [support@nxrevo.com](mailto:support@nxrevo.com) and the team will review your situation. ### Do I lose my data if I let the trial expire? No. Your synced data, forecasts, and settings are retained. Re-subscribing at any time restores your full access and everything picks up where it left off. --- ## Related guides - [Installing RevoStock from the Shopify App Store](./installing-nxrevo-from-shopify-app-store) — The full step-by-step install walkthrough, from the App Store to the **Welcome** screen. - [Preparing your store for RevoStock](./preparing-your-store-for-nxrevo) — Steps to take before you install so your data syncs cleanly and forecasts start on the right foot. --- ## Installing RevoStock from the Shopify App Store # Installing RevoStock from the Shopify App Store This guide walks you through every step from finding RevoStock in the Shopify App Store to landing inside the onboarding wizard, ready to start your 14-day free trial. The whole process takes about two minutes. --- ## Before you start - **Check your store is ready** — Read [Preparing your store for RevoStock](./preparing-your-store-for-nxrevo) to make sure your products, inventory tracking, and order history are in good shape before the first sync. - **Understand the free trial** — Read [About the 14-day free trial](./about-the-14-day-free-trial) to understand what is included and what happens at the end of the trial period. --- ## Step 1 — Find RevoStock on the Shopify App Store 1. Open [apps.shopify.com](https://apps.shopify.com) in your browser, or navigate to the **Apps** section inside your Shopify admin and select **Shopify App Store**. 2. In the search bar, type **RevoStock** and press Enter. 3. Locate the **RevoStock — AI Inventory Planning** listing and click it to open the app listing page. :::tip If the RevoStock team sent you a direct install link, you can skip the search and go straight to Step 2. ::: --- ## Step 2 — Click "Add app" On the RevoStock listing page, click the **Add app** button. - If you are not already signed into your Shopify account, Shopify will prompt you to log in first. - If you manage more than one store, Shopify will ask which store to install RevoStock on. Select the correct store before continuing. --- ## Step 3 — Review and approve permissions Shopify presents a permissions screen before the install completes. RevoStock asks to read your store data, and to adjust inventory. It reads: | Permission | Why RevoStock needs it | |---|---| | **Read products and product variants** | To identify every SKU you carry and track product details. | | **Read inventory levels and locations** | To see current on-hand stock so low-stock alerts and reorder timing are accurate. | | **Read orders** | To analyze historical sales — this is the foundation of the AI forecasting engine. | | **Read fulfillment services and locations** | To understand your warehouse structure so reorder suggestions are location-aware. | **What RevoStock changes in your store.** RevoStock reads your store data for analysis and forecasting. The only thing it writes back is inventory adjustments: when you record goods received against a purchase order in RevoStock, it adds that stock to Shopify (and reverses it if you void the receipt). It does not create, edit, or delete products or orders. See [Does RevoStock write back to Shopify?](../faqs/does-nxrevo-write-back-to-shopify.md) for details. Once you have reviewed the list, click **Install** to confirm. --- ## Step 4 — Land inside RevoStock After you click **Install**, Shopify completes the OAuth handshake and redirects you directly into the RevoStock app embedded inside your Shopify admin. You do not need to create a separate RevoStock account — your Shopify store identity is used automatically. You will land on the **Welcome** step of the onboarding wizard. [Image Request: Screenshot of the RevoStock Welcome screen (Step 01 of 04) showing the four-step sidebar and the free trial card with "$0 / 14 days, ALL FEATURES INCLUDED, no credit card required"] --- ## The onboarding wizard — four steps The wizard guides you through everything needed to start planning inventory. Here is a brief preview of what each step involves: | Step | Name | What happens | |---|---|---| | **01** | **Welcome** | Activate your 14-day free trial by clicking **Start my free trial**. No credit card required. | | **02** | **Connect & Sync** | RevoStock pulls your products, variants, inventory levels, and order history from Shopify. This usually takes under a minute for small stores and up to about 30 minutes for stores with more than 50,000 orders — the step shows the estimate for your store. | | **03** | **Verify Data** | Review a summary of what synced — total variants tracked, locations found, and days of order history available — so you can confirm everything looks right before using the app. | | **04** | **All Set** | Your store is connected and your first forecasts are ready. You land on the **Stock Planning** view with reorder suggestions already populated. | --- ## Common issues ### I cannot find RevoStock in the App Store Make sure you are searching on [apps.shopify.com](https://apps.shopify.com) and the search term is spelled correctly: **RevoStock**. If the listing still does not appear, use the direct install link from the RevoStock website or contact [support@nxrevo.com](mailto:support@nxrevo.com). ### The "Add app" button is greyed out Only the **store owner** or a staff member with the **Apps and channels** permission can install apps. If the button is unavailable, ask your store owner to complete the install, or have them grant you the required permission under **Settings > Users and permissions** in your Shopify admin. ### I clicked "Install" but was redirected back to the App Store This usually means there was a temporary issue with the Shopify authorization handshake. Try the following: 1. Clear your browser cookies and cache, then attempt the install again from the Shopify admin's **Apps** page. 2. Confirm you are installing into the correct store — a store mismatch can cause the redirect to fail. 3. Try a different browser or disable extensions that block redirects. If the problem persists after retrying, contact [support@nxrevo.com](mailto:support@nxrevo.com) with your Shopify store URL and the time you attempted the install. ### RevoStock is not visible in my Shopify admin after install Navigate to **Apps** in your Shopify admin sidebar. RevoStock should appear in your installed apps list. If it is missing, the install may not have completed — try installing again from the App Store. If it appears but will not open, refresh the page or clear your browser cache. --- ## Related guides - [About the 14-day free trial](./about-the-14-day-free-trial) — What is included, the 2,500 variant cap, and what happens when the trial ends. - [Preparing your store for RevoStock](./preparing-your-store-for-nxrevo) — A pre-flight checklist to ensure your Shopify data syncs cleanly and forecasts are accurate from day one. --- ## Preparing your store for RevoStock # Preparing your store for RevoStock Run through this checklist before your first sync and RevoStock will start with the most complete picture of your business possible. None of these items block you from installing — but the ones you address upfront will pay off in more accurate forecasts and more useful reorder suggestions from day one. --- ## Why sales history is the most important input RevoStock uses up to **two years of historical order data** to learn each SKU's demand pattern, seasonality, and sales velocity. The more history a product has, the richer the forecasting model that runs on it. | Sales history per variant | What RevoStock does | |---|---| | No history (brand new product) | Uses a fallback model based on store-wide averages | | Less than 1 week | Uses a simple "repeat yesterday" approach | | 1 week – 30 days | Uses basic smoothing models | | **30 days or more** | **Noticeably better accuracy — statistical models become available** | | **6 months or more** | **Best accuracy — full model set including seasonal and machine learning models** | **If you are a new store:** Install now and let RevoStock start learning. You do not need to do anything — accuracy improves automatically as orders come in. Within 30 days, forecasts improve noticeably; within 6 months, RevoStock is running its richest models on your data. **If you are an established store:** Your historical orders sync automatically on first setup. You are already in the best position. --- ## Check 1 — Assign SKU codes to every variant **Why it matters:** RevoStock identifies each product variant by its SKU code. Variants without SKU codes sync and appear in the Buying Table using option values (for example, "Blue / Large"), but having a SKU makes it easy to match RevoStock's reorder suggestions to your purchase orders, warehouse system, or supplier forms. **How to check:** 1. In your Shopify admin, go to **Products**. 2. Open a product and scroll to the **Variants** section. 3. For each variant, confirm the **SKU** field is filled in. 4. Repeat for your most important products, especially fast-movers. If you use a naming convention in your warehouse or with suppliers (for example, `TSHIRT-BLU-LG`), use the same codes in Shopify. Consistency here pays off every time you export a purchase order from RevoStock. --- ## Check 2 — Enable inventory tracking on every product **Why it matters:** RevoStock reads your on-hand stock quantity from Shopify to calculate reorder timing and trigger low stock alerts. Variants that have **Track quantity** disabled in Shopify appear as **Disabled** in the Buying Table — RevoStock cannot generate reorder suggestions for them because it has no stock level to work from. **How to check:** 1. In your Shopify admin, go to **Products** and open a product. 2. In the **Variants** section, click into a variant. 3. Confirm the **Track quantity** checkbox is enabled. 4. Repeat for each variant, or use the bulk editor (**Products > Edit products**) for large catalogs. --- ## Check 3 — Set the Vendor field on every product **Why it matters:** RevoStock groups buying decisions by the **Vendor** field set in Shopify. The Buying Table's vendor grouping view — which lets you see all reorder needs for a supplier at once and export a single purchase order per vendor — relies entirely on this field being populated. Replenishment rules (lead time, MOQ, days of supply) do not use the Vendor field. They attach to the supplier a SKU is mapped to on the **Suppliers** page. **How to check:** 1. In your Shopify admin, go to **Products**. 2. Open a product and look for the **Vendor** field in the right-hand panel (under **Product organization**). 3. Enter the supplier or brand name that you want to group this product under. 4. Repeat for all active products, or use the bulk editor to update vendor in batch. --- ## Check 4 — Add cost per item to each variant (recommended) **Why it matters:** RevoStock uses cost data to calculate the capital value of inventory on the Dashboard and to estimate purchase order value in the Restock Cart. Without cost, the **Unit Cost** and **Line Cost** columns are skipped in purchase order exports. **How to check:** 1. In your Shopify admin, go to **Products** and open a product. 2. In the **Variants** section, click into a variant. 3. Scroll to the **Cost per item** field and enter the cost. 4. Repeat for your top-selling variants at minimum. You do not need to fill in every product before installing. Even partial cost data is useful. You can add or update costs at any time and RevoStock will pick them up on the next sync. --- ## Check 5 — Verify your timezone and currency in Shopify **Why it matters:** RevoStock reads your timezone and currency directly from your Shopify store settings. Your timezone drives forecast windows and determines when "today" starts and ends for daily sales calculations. Your currency drives purchase order formatting and cost figures throughout the app. **How to check:** 1. In your Shopify admin, go to **Settings > General**. 2. Confirm the **Store timezone** matches the timezone your business operates in. 3. Confirm the **Store currency** is correct. These settings are usually correct by default. It takes about ten seconds to verify. --- ## Check 6 — Review your locations if you operate multi-location inventory **Why it matters:** RevoStock works at the store level and aggregates inventory across all active Shopify locations. If you operate multiple warehouses, retail stores, or third-party logistics providers, each should be a separate location in Shopify so inventory quantities are accurate. If your multi-location setup is complex or you fulfill from more than one site, contact [support@nxrevo.com](mailto:support@nxrevo.com) before your first sync to discuss how aggregation will look. **How to check:** 1. In your Shopify admin, go to **Settings > Locations**. 2. Confirm that each physical or logical location where you hold stock is listed. 3. If a location is missing, add it and assign inventory to it before running your first RevoStock sync. If you only fulfill from one location, this check takes about ten seconds and most single-location stores are already set up correctly. --- ## What you do NOT need to do before installing - **Clean your orders or "freeze" the store.** RevoStock syncs whatever order history is there. You do not need to do anything special before the sync runs. - **Set lead times, MOQs, or days of supply.** RevoStock ships with sensible factory defaults that take effect immediately: a 14-day lead time, 30 days of supply, a 7-day safety stock buffer, and a minimum order quantity of 1. These defaults apply globally the moment setup is complete. You can refine them per supplier or per SKU at any time after install — the first sync does not require them. - **Wait until your catalog is perfectly clean.** If your store has missing data or a catalog that could use a cleanup, install RevoStock today anyway. The app improves as you improve your data. Waiting until everything is perfect delays the forecasts and reorder signals that can start helping you now. --- ## After install Once your store is ready, the next step is to install RevoStock and complete the four-step onboarding wizard. The wizard walks you through connecting your store, running the initial sync, and verifying that your data came through correctly — all in a few minutes. [Installing RevoStock from the Shopify App Store](./installing-nxrevo-from-shopify-app-store) --- ## Related guides - [About the 14-day free trial](./about-the-14-day-free-trial) — What is included, the 2,500 variant cap, and what happens when the trial ends. - [Installing RevoStock from the Shopify App Store](./installing-nxrevo-from-shopify-app-store) — The full step-by-step install walkthrough, from the App Store to the **Welcome** screen. --- ## Notifications # Notifications RevoStock emails you when items in your catalog are getting close to a stockout, on a schedule you choose — so you can act before you run out rather than after. This guide covers the Notifications page at `/shopify/notifications`, how to configure the Low Stock Alert, and what other emails RevoStock may send your store. :::important Emails go to the Shopify store owner All RevoStock emails — Low Stock Alerts and transactional notifications alike — are sent to the **Shopify store owner's email address** as set in your Shopify admin. To change the recipient, update the store owner email in **Shopify admin → Settings → General**, then trigger a manual sync in RevoStock so the change is picked up. ::: --- ## The Notifications page Open **Notifications** from the main navigation. At the top of the page you will see a summary box showing: - **Active notifications** — how many notification rules are currently turned on. - **Default channel** — Email (the only delivery channel currently available). - **Timezone** — the IANA timezone read directly from your Shopify store settings (for example, `Asia/Singapore` or `America/New_York`). All delivery times you configure are evaluated in this timezone. Below the summary box, each notification rule appears as its own card. --- ## Low Stock Alert The Low Stock Alert is the one notification rule currently available. When enabled, RevoStock scans your catalog and emails a digest of SKUs that are approaching a stockout based on your current lead times and sales velocity. ### What the email contains Each alert email lists the SKUs whose projected days-to-stockout have fallen below a safe threshold. For each SKU you will see the product name, variant, current stock on hand, and how many days of stock remain at current sales velocity. :::tip Acting on the alert Clicking through from the email takes you directly to the **Buying Table**, where you can review reorder quantities and add SKUs to a purchase order in one step. ::: ### Configuring the Low Stock Alert All controls are on the **Low Stock Alert** card on the Notifications page. #### 1. Toggle the alert on or off Use the toggle switch on the card to enable or disable the alert. When the toggle is off, no emails are sent regardless of stock levels. #### 2. Choose a frequency Select either **Daily** or **Weekly** using the frequency selector. - **Daily** — RevoStock sends an alert every day at the hour you specify, as long as at least one SKU meets the low-stock threshold. - **Weekly** — RevoStock sends one alert per week, on the day and at the hour you specify. #### 3. Choose the day of week (Weekly only) When **Weekly** is selected, a day-of-week picker appears. Choose any day from **Monday** through **Sunday**. This control is hidden when Daily is selected. #### 4. Choose the delivery hour Use the hour picker to select when the email is sent. Hours are listed from **00:00** to **23:00** in your store's timezone. Choose an hour that fits your team's working day — for example, 08:00 for a morning briefing or 17:00 for end-of-day review. #### 5. Save your settings Click **Save** to apply your changes. A confirmation toast appears briefly at the bottom of the screen to confirm the settings were saved. Your new schedule takes effect from the next scheduled run onward. ### Quick-reference: configuration options | Setting | Options | |---|---| | **Enabled** | On / Off | | **Frequency** | Daily, Weekly | | **Day of week** | Monday – Sunday (Weekly only) | | **Delivery hour** | 00:00 – 23:00 (store timezone) | | **Channel** | Email (store contact email) | --- ## Other emails RevoStock sends Some emails are transactional — they are sent automatically in response to account events and are not configurable from the Notifications page. **Shopify plan change notification:** If your active Shopify plan changes and that change affects which RevoStock tier your store is mapped to, you will receive an email summarising the change and any impact on available features. These transactional emails are sent to the contact email address associated with your Shopify store. --- ## Common issues **I enabled the Low Stock Alert but have not received any emails.** Check two things: first, confirm the toggle is on and you have clicked **Save**. Second, verify that the scheduled hour has actually passed in your store's timezone since you saved — the alert only fires at the configured time, not immediately on save. **The timezone shown on the Notifications page is wrong.** RevoStock reads your timezone directly from Shopify. To update it, change the timezone in your Shopify store settings (**Settings > General** in your Shopify admin), then trigger a manual sync in RevoStock so the updated timezone is pulled in. **I want to send alerts to a different email address.** Alerts are currently sent to your store's contact email as set in Shopify. To change the recipient address, update the contact email in your Shopify admin (**Settings > General**), then sync RevoStock to pick up the change. --- ## Related - [Dashboard](./dashboard.md) - [Data Sync](./data-sync.md) - [Forecasting](./forecasting.md) - [Buying Table overview](./buying-table/buying-table-overview.md) --- ## Cancelling your subscription and uninstalling RevoStock # Cancelling your subscription and uninstalling RevoStock This guide explains how to cancel your paid subscription, what you can still access after cancelling, and how to fully remove RevoStock from your Shopify store. Cancelling and uninstalling are two separate actions — you can do either independently, and understanding the difference will help you choose the right path for your situation. ## Cancelling your subscription Cancelling stops future billing while keeping the app installed and accessible until the end of your current Shopify billing period. ### How to cancel 1. In RevoStock, go to **Settings** > **Plans** (`/console/settings/plans`), or open the Plans page from the Shopify-embedded view at `/shopify/plans`. 2. Locate your active plan card. 3. Click the **Cancel Subscription** button on the active plan card. 4. Confirm the cancellation when prompted. RevoStock immediately calls Shopify to cancel the app subscription. No further action is required on the Shopify side. :::note The **Cancel Subscription** button is not shown during a free Trial (there is nothing to cancel) or if your subscription is already in a Cancelled state. ::: ### What happens immediately after cancellation 1. RevoStock cancels the Shopify app subscription on your behalf. 2. Your plan status is updated to **Cancelled** in RevoStock. 3. Your access continues until the **end of the current Shopify billing period** — no grace period applies beyond that date. 4. The plan card updates to show: **"Cancelled · Access for `N` more days"** (where `N` counts down to your access expiry) so you always know exactly how much time remains. You will not be charged again. RevoStock does not issue partial refunds for unused days in the current billing period — Shopify's standard billing terms govern what is and is not refundable. ### Re-subscribing before your access window ends You can reactivate your subscription at any time before the access window expires. Navigate to **Settings** > **Plans**, select the same (or a different) tier, and complete the Shopify billing approval flow. This restores a full active subscription without any interruption to your data or forecasts. ### What happens to your data after cancellation Your store data, forecasts, and settings remain stored in RevoStock after you cancel. When the billing period ends and your access window closes, you will see a renewal screen inside the app. Subscribing again from that screen restores full access immediately — your prior configuration is preserved. ## Uninstalling RevoStock Uninstalling removes the app from your Shopify admin entirely and stops all background activity immediately. ### How to uninstall 1. In your **Shopify Admin**, go to **Apps**. 2. Find **RevoStock** in your installed apps list. 3. Click **Delete** (or the trash icon) next to RevoStock. 4. Confirm the deletion when Shopify prompts you. ### What happens when you uninstall 1. Shopify immediately revokes RevoStock's access token for your store. RevoStock can no longer read or write any Shopify data on your behalf. 2. All background data syncs (scheduled and on-demand) stop running for your store. 3. Shopify's event webhooks registered by RevoStock for your store are deregistered automatically. 4. Your in-app session ends and the RevoStock embedded app is no longer accessible from your Shopify admin. ### Your data after uninstalling Your store data is preserved in RevoStock for a period after uninstall. This means that if you reinstall, the app can pick up where it left off. RevoStock complies with Shopify's GDPR mandatory data-retention and erasure requirements — data may be purged after the Shopify-defined retention window expires. :::warning If you submitted a data erasure request via Shopify's GDPR flow, your store data will be permanently deleted and cannot be recovered upon reinstall. ::: ### Reinstalling RevoStock Install RevoStock again from the [Shopify App Store](https://apps.shopify.com). The app will recognize your store and restore your prior data and settings. Depending on how much time has passed since uninstall, you may be prompted to re-subscribe to a plan before the app becomes fully functional. ## Cancelling vs uninstalling — which should you do? | | Cancel only | Uninstall | |---|---|---| | Stops future billing | Yes, at end of billing period | Yes, immediately via cancellation (if subscribed) | | App stays in Shopify admin | Yes | No | | Data and forecasts accessible | Yes, until billing period ends | No — UI access ends immediately | | Background syncs continue | Yes, until billing period ends | No — syncs stop immediately | | Data preserved for reinstall | Yes | Yes (subject to GDPR retention window) | **In short:** - Choose **Cancel only** if you want to stop paying but keep using RevoStock until the period ends, or if you might resubscribe soon. - Choose **Uninstall** if you want to remove the app from your Shopify admin right away. - If you uninstall without cancelling first, RevoStock will cancel the subscription automatically when Shopify notifies us of the uninstall — but no refund is issued for the current billing period. ## Related - [Plan tiers and how they map to your Shopify plan](./plan-tiers-and-shopify-mapping) - [Subscribing through Shopify billing](./subscribing-through-shopify-billing) - [Troubleshooting trial or billing not activating](./troubleshooting-trial-or-billing) --- ## Plan tiers and how they map to your Shopify plan # Plan tiers and how they map to your Shopify plan RevoStock has four tiers — Trial, Starter, Growth, and Pro — and automatically selects the right one for your store based on your Shopify plan, so you never have to match them up yourself. Every tier gives you the full RevoStock feature set; the only differences are price and the maximum number of SKU variants RevoStock will track and analyze. ## Plan tiers at a glance | Tier | Price (USD) | Price (SGD) | SKU variant limit | Notes | |------|-------------|-------------|-------------------|-------| | Trial | $0 / mo | S$0 / mo | 2,500 variants | 14-day free trial, no credit card required | | Starter | $19 / mo | S$24 / mo | 2,500 variants | Typically maps to Shopify Basic | | Growth | $39 / mo | S$49 / mo | 5,000 variants | Typically maps to Shopify (Grow / Growth) | | Pro | $79 / mo | S$99 / mo | 10,000 variants | Typically maps to Shopify Advanced or Plus | All charges are billed through Shopify — you will not be charged directly by RevoStock. ## What every tier includes The SKU variant limit (and price) is the only meaningful difference between tiers. Every plan — including the free Trial — gives you access to the same complete feature set: - **Inventory Overview Dashboard** — real-time stock health, capital allocation, and key metrics at a glance. - **AI/ML Demand Forecasting** — machine learning models that analyze your sales history and seasonality to predict future demand. - **Smart Reorder Suggestions and Buying Table** — automated reorder point calculations with an interactive table you can review, adjust, and export. - **SKU-Level Trend Analysis** — per-product velocity tracking that surfaces fast-movers, slow-movers, and changes over time. - **Low Stock Alerts** — proactive email notifications before a stockout, triggered against calculated thresholds. - **Live chat support** — in-app chat available on all paid tiers. ## How RevoStock maps your Shopify plan to a tier When you install RevoStock, the app reads your store's current Shopify plan and automatically assigns you the matching tier. You do not need to select a tier manually. ### Mapping rules | Your Shopify plan | RevoStock tier assigned | |---|---| | Shopify Plus, Partner Development store | Pro | | Shopify Advanced, Retail, or Enterprise | Pro | | Shopify (Grow / Growth), or plain "Shopify" | Growth | | Shopify Basic, Starter, or Lite | Starter | | Any other plan not listed above | Starter (default) | ### What happens when your Shopify plan changes RevoStock runs a daily reconciliation check to detect whether your Shopify plan has changed since your last sync. - If RevoStock detects a mismatch between your current Shopify plan and your active RevoStock tier, you will receive an email notification and an in-app banner will prompt you to review and update your subscription. - If the mismatch is not resolved within **30 days**, RevoStock will automatically deactivate your subscription to keep billing aligned with your actual Shopify plan. - To resolve the mismatch, navigate to **Settings** > **Plans** inside RevoStock and select the subscription that matches the recommended tier. :::warning If your Shopify plan is downgraded (for example, from Advanced to Basic), your RevoStock tier may need to step down as well. Act on the in-app banner promptly to avoid automatic deactivation. ::: ## SKU variant limits per plan Each RevoStock tier supports a maximum number of tracked SKU variants. A "variant" is a unique, purchasable version of a product — for example, a T-shirt in size Medium, color Blue is one variant. | Tier | Max tracked variants | |------|---------------------| | Trial | 2,500 | | Starter | 2,500 | | Growth | 5,000 | | Pro | 10,000 | ### What happens when you exceed the limit If your Shopify catalog contains more variants than your plan allows, RevoStock does not stop working — it prioritizes which variants to track. The platform ranks all your variants by **90-day GMV (Gross Merchandise Value)** and tracks the top N variants up to your plan limit. You will see an in-app warning that reads: > "You're approaching your SKU limit. Only the top `{maxSkus}` SKUs by GMV will be tracked and analyzed." (where `{maxSkus}` is your plan's variant limit, e.g. 5,000 on Growth.) This means forecasts, reorder suggestions, and low-stock alerts will only apply to those top-ranked variants. Variants outside the limit are excluded from analysis until you upgrade. ### Tracking your variant usage The **Plans** page displays a live usage indicator showing your current tracked variant count against your plan limit, for example "1,840 / 2,500 variants used", along with a progress bar. Monitor this regularly if your catalog is growing. ### Raising your limit To increase your variant limit, upgrade to the next tier. Navigate to **Settings** > **Plans** and select the higher tier. You will be taken through Shopify's billing approval flow to confirm the new charge. ## Where to view and manage your plan - Inside RevoStock: **Settings** > **Plans** (`/console/settings/plans`) - Shopify-embedded view: `/shopify/plans` Subscribing or changing your tier always redirects you through Shopify's native billing approval screen. All charges appear on your Shopify invoice — RevoStock does not collect payment directly. ## Related - [Cancelling your subscription and uninstalling RevoStock](./cancelling-your-subscription) - [Subscribing through Shopify billing](./subscribing-through-shopify-billing) - [About the 14-day free trial](./free-trial) --- ## Configuring Global Defaults # Configuring Global Defaults The **Global Defaults** tab is the catalog-wide baseline for every replenishment field in RevoStock. Any value you set here applies automatically to every SKU that does not have a more-specific Supplier or SKU override. This is usually the first place you configure after connecting your store, and a single change here cascades to hundreds or thousands of products instantly. ## Opening Global Defaults 1. In the left-hand navigation, click **Replenishment Config**. 2. Select the **Global Defaults** tab. The form is divided into three sections: **Reorder Strategy**, **Order Sizing**, and **Logistics**. ## Reorder Strategy ### Trigger mode **Trigger mode** controls when RevoStock flags a SKU for reorder and how it calculates the suggested quantity. There are four options: | Mode | How it triggers | How it sizes the order | |---|---|---| | **SmartDays** | Forecast-driven; fires when projected days to stockout minus lead time minus safety days reaches zero | Covers the configured Days of supply from arrival | | **ManualQty** | Fires when current stock falls to or below Static reorder point | Uses Static reorder point as the order quantity floor | | **Hybrid** | Fires on whichever threshold is hit first: Static reorder point or SmartDays | Sized like SmartDays but never less than Static reorder point | | **Disabled** | Never triggers | Always 0 | **Factory default: SmartDays.** This is the recommended starting point for most stores. See [Trigger modes: SmartDays, ManualQty, Hybrid, Disabled](./trigger-modes-smartdays-manualqty-hybrid-disabled.md) for a full explanation of each option. ## Order Sizing ### Days of supply (days) **Days of supply** is how many days of stock you want on hand after a replenishment delivery arrives. RevoStock uses your forecasted daily sales rate to convert this figure into units. **Factory default: 30 days.** Example: if a SKU sells 10 units per day on average and your Days of supply is 30, RevoStock will suggest ordering 300 units. ### Safety stock (days) **Safety stock** is a buffer — expressed in days of demand — that protects you against forecast errors, late deliveries, or unexpected demand spikes. It is added to the reorder trigger calculation, not to the order quantity. **Factory default: 7 days.** In SmartDays mode, the reorder is triggered when: ``` Days to stockout - Lead time - Safety stock days <= 0 ``` A safety stock of 7 days means RevoStock will flag a reorder 7 days earlier than the bare minimum, giving you a cushion even if the supplier delivers slightly late or sales run hotter than predicted. ### Minimum order quantity (MOQ) **MOQ** — the supplier's minimum order quantity — is the smallest number of units you are allowed to order in a single purchase order line. RevoStock applies this as a floor: if the calculated reorder quantity is below the MOQ, the suggestion is raised to the MOQ automatically. **Factory default: 1.** :::caution If you set an MOQ that is greater than the **Maximum quantity cap**, RevoStock will show a warning because the cap can never be respected without going below the MOQ. Resolve the conflict by lowering the MOQ or raising (or clearing) the cap. ::: ### Maximum quantity cap (units) **Maximum quantity cap** is an upper ceiling on any single suggested order. After MOQ has been applied, RevoStock takes the minimum of the calculated quantity and this cap: ``` Final order quantity = min(calculated quantity, max cap) ``` Leave this field blank to impose no ceiling. This field is useful if you have warehouse space limits, cash-flow constraints, or supplier allocation limits. **Factory default: blank (no cap).** See [Static reorder point and max-quantity cap](./static-reorder-point-and-max-cap.md) for worked examples. ## Logistics ### Lead time (days) **Lead time** is the number of calendar days between placing a purchase order and receiving the goods in your warehouse. RevoStock uses lead time to determine how far in advance it must flag a reorder — if a product will run out in 10 days and your lead time is 14 days, the reorder is already overdue. **Factory default: 14 days.** Set this to your typical supplier turnaround. If lead times differ a lot between suppliers, use **Supplier Overrides** to set a value per supplier instead of one global figure. ### Static reorder point (units) **Static reorder point** is a fixed unit threshold used by ManualQty and Hybrid trigger modes. It has no effect when Trigger mode is set to SmartDays or Disabled. **Factory default: blank (unused).** Leave this blank at the global level unless you intend to switch all SKUs to ManualQty or Hybrid mode. It is more commonly set at the Supplier or SKU layer. ## Saving your changes 1. After editing any field, click **Save changes**. 2. Your new values are written to the database immediately and will appear in the **Live SKU Config** tab right away. 3. The **Buying Table** and **Dashboard** figures are powered by the most recent data sync. After saving, you will see a banner on the Dashboard: "Replenishment config has changed since your last sync. Numbers shown may be outdated." Click **Recalculate now** to reprocess everything immediately, or wait for the next hourly auto-sync. :::note Only SKUs with no Supplier or SKU override for a field are affected by a Global Defaults change. If a SKU's Lead time is set on its supplier, your global edit will not change what that SKU uses. Check the **Live SKU Config** tab to confirm which layer is governing any given SKU. ::: ## Reference: all fields and their factory defaults | Field | Section | Factory default | Notes | |---|---|---|---| | Lead time (days) | Logistics | 14 | Days from PO placement to stock arrival | | Days of supply (days) | Order Sizing | 30 | Target cover after delivery | | Safety stock (days) | Order Sizing | 7 | Buffer days added to trigger threshold | | MOQ | Order Sizing | 1 | Minimum units per order line | | Trigger mode | Reorder Strategy | SmartDays | Controls when and how much to reorder | | Maximum quantity cap | Order Sizing | blank | Ceiling on each order; blank = no cap | | Static reorder point | Order Sizing | blank | Unit floor for ManualQty / Hybrid; blank = unused | ## Related - [Precedence: Global → Supplier → SKU](./precedence-global-supplier-sku.md) - [Trigger modes: SmartDays, ManualQty, Hybrid, Disabled](./trigger-modes-smartdays-manualqty-hybrid-disabled.md) - [Static reorder point and max-quantity cap](./static-reorder-point-and-max-cap.md) - [The Live SKU Config view](./live-sku-config-view.md) - [Re-syncing after configuration changes](./re-syncing-after-changes.md) --- ## The Live SKU Config view # The Live SKU Config view The **Live SKU Config** tab is a read-only table that shows every SKU's replenishment settings exactly as RevoStock will apply them — after the full [precedence resolution](./precedence-global-supplier-sku.md) across the SKU, Supplier, and Global layers. It is the fastest way to answer the question "what settings is RevoStock actually using for this product right now?" Unlike the Buying Table and Dashboard, the Live SKU Config view reads directly from the saved configuration and does not depend on a data sync. Any change you save on the Global Defaults, Supplier Overrides, or SKU Overrides tab appears here immediately. ## Opening Live SKU Config 1. In the left-hand navigation, click **Replenishment Config**. 2. Select the **Live SKU Config** tab. The table loads all tracked SKUs in your catalog. ## Reading the table Each row represents one product variant. The columns are: | Column | What it shows | |---|---| | **Product / Variant** | Product title and variant name (e.g., color, size) | | **SKU** | The SKU code as it appears in Shopify | | **Supplier** | The supplier this SKU is mapped to, or "unmapped" if it has none | | **Lead time** | Resolved lead time in days, with a Source pill | | **Days of supply** | Resolved days of supply, with a Source pill | | **Safety stock** | Resolved safety stock in days, with a Source pill | | **MOQ** | Resolved minimum order quantity, with a Source pill | | **Trigger mode** | Resolved trigger mode, with a Source pill | | **Max quantity cap** | Resolved ceiling on order quantity, with a Source pill | | **Static reorder point** | Resolved unit floor for ManualQty / Hybrid modes, with a Source pill | ### The Source pill Next to every resolved value you will see a small **Source pill** — a label that tells you which configuration layer provided that value: - **SKU** — a SKU-level override is active for this field. - **Supplier** — the override on this SKU's supplier is supplying this value. - **Global** — your Global Defaults are being used, or RevoStock's built-in default when that Global field is blank. The Source pill gives you immediate transparency. If a product is behaving unexpectedly in the Buying Table, the Source pills in this view tell you exactly where to look to change the relevant setting. :::tip A row with all "Global" pills has no Supplier or SKU override. To change it, edit [Global Defaults](./global-defaults.md) — the change reaches every Global-sourced SKU at once. ::: ## Searching and filtering You do not need to scroll through the entire catalog to find a SKU. Use the controls above the table: - **Search box** — type a product name, SKU code, or supplier name to filter rows in real time. - **Supplier filter** — pick a supplier to show only its SKUs, or **Unmapped** to find SKUs with no supplier yet. Useful when checking a supplier override you just saved. - **Pagination** — use the page controls at the bottom of the table to navigate large catalogs. ## Conflict warnings If any SKU has an MOQ that is greater than its Maximum quantity cap, the row is highlighted with a warning indicator. This is the same conflict described in [Static reorder point and max-quantity cap](./static-reorder-point-and-max-cap.md). Click through to the appropriate override tab to resolve the conflict. ## This view is read-only You cannot edit values directly in the Live SKU Config table. To change a field: 1. Identify the Source pill for the field you want to change. 2. Switch to the corresponding tab: - **SKU** source → **SKU Overrides** tab - **Supplier** source → **Supplier Overrides** tab - **Global** source → **Global Defaults** tab 3. Make your edit and save. 4. Return to **Live SKU Config** to confirm the new resolved value and Source pill. ## Same data shown in the Buying Table The Source pills and resolved values shown here are identical to those shown in the SKU detail drawer inside the Buying Table, under the section labeled "Configuration Governing This SKU." Both views draw from the same resolved configuration — so confirming values in Live SKU Config is equivalent to checking them in the drawer. ## Related - [Precedence: Global → Supplier → SKU](./precedence-global-supplier-sku.md) - [Configuring Global Defaults](./global-defaults.md) - [Re-syncing after configuration changes](./re-syncing-after-changes.md) --- ## Precedence: Global → Supplier → SKU # Precedence: Global → Supplier → SKU You can set replenishment rules at three levels: for your whole store, per supplier, and per SKU. This article shows how the layers stack, so you can predict which value RevoStock uses for any product. ## The three layers From least specific to most specific: | Layer | Where you edit it | Who it affects | |---|---|---| | **Global** | **Global Defaults** tab | Every SKU in your catalog | | **Supplier** | **Supplier Overrides** tab, or the supplier's own page | Every SKU mapped to that supplier | | **SKU** | **SKU Overrides** tab | A single product variant | A SKU belongs to a supplier through its **item code mapping** on the Suppliers page. A SKU with no supplier mapped skips the Supplier layer and uses Global. **Leave a Global field blank?** RevoStock fills it with a built-in default — 14 days lead time, 30 days of supply, 7 days safety stock, MOQ 1, SmartDays trigger mode. Your buying table works on day one, before you set anything. ## Resolution order: SKU wins For each field on each SKU, RevoStock uses the first value that is not blank: ``` Resolved value = first non-blank value in: SKU → Supplier → Global ``` If the SKU override has a value, RevoStock uses it. If it is blank, RevoStock checks the SKU's supplier, then Global. ## Fields are resolved one by one RevoStock resolves **each field on its own**, not the whole rule at once. A SKU can override only its Lead time and take every other field from its supplier or Global. **Example:** Global sets Lead time to 14 days and MOQ to 1. Your supplier "Hydrogen Supply Co." ships by sea, so its Supplier override sets Lead time to 45 days and MOQ to 50. One fragile product from that supplier needs MOQ 10, so you give it a SKU override for MOQ only. RevoStock resolves that SKU as: | Field | SKU override | Supplier override | Global default | Resolved | |---|---|---|---|---| | Lead time (days) | — | **45** | 14 | **45** (from Supplier) | | MOQ | **10** | 50 | 1 | **10** (from SKU) | | Days of supply (days) | — | — | 30 | **30** (from Global) | | Safety stock (days) | — | — | 7 | **7** (from Global) | You set one field on the SKU. The rest come through on their own. ## When to use each layer - **Global** — set your store-wide baseline once. A change here reaches every SKU that has no override for that field. - **Supplier** — set one supplier's lead time or MOQ once, for every SKU you buy from them. Use it when a supplier ships by sea or needs a big minimum order. - **SKU** — pin the settings for one variant. Keep it for best-sellers, clearance lines, or products with unusual needs. Most of your tuning happens at Global and Supplier. You rarely need to touch single SKUs. ## The Source pill Next to each resolved value, RevoStock shows a small label — the **Source pill**. It tells you which layer the value came from: - **SKU** — from a SKU override you set. - **Supplier** — from the override on that SKU's supplier. - **Global** — from your Global Defaults, or the built-in default when that Global field is blank. You will find the Source pill in two places: 1. The **Live SKU Config** tab, next to each field. 2. The **SKU detail drawer** in the Buying Table, under "Configuration Governing This SKU". ## Where to find each tab Open **Replenishment Config** from the left-hand menu. The page has four tabs: 1. **Live SKU Config** — read-only view of every SKU's resolved settings, with Source pills. 2. **Global Defaults** — edit your store-wide baseline. 3. **Supplier Overrides** — edit the settings for each supplier's SKUs. 4. **SKU Overrides** — edit the settings for a single variant. :::tip Reorder quantity or date looks wrong? Open **Live SKU Config** and find the SKU. The Source pills show which layer sets each value. ::: ## Related - [Configuring Global Defaults](./global-defaults.md) - [The Live SKU Config view](./live-sku-config-view.md) - [Trigger modes: SmartDays, ManualQty, Hybrid, Disabled](./trigger-modes-smartdays-manualqty-hybrid-disabled.md) - [Static reorder point and max-quantity cap](./static-reorder-point-and-max-cap.md) --- ## Re-syncing after configuration changes # Re-syncing after configuration changes Saving a change to your replenishment configuration takes effect in RevoStock's database immediately — but the Buying Table and Dashboard numbers you see are generated by a data sync, and the most recent sync has not yet seen your new settings. This article explains why that separation exists, how to trigger an immediate recalculation, and exactly what gets recomputed when the sync runs. ## Why there is a delay RevoStock's Buying Table and Dashboard are powered by a planning simulator that runs during each data sync. The simulator reads your current inventory levels, sales history, demand forecasts, and replenishment configuration together in one pass to produce reorder suggestions, stockout projections, and GMV forecasts. Saving a config change writes to the database instantly. The **Live SKU Config** tab reflects your new settings right away because it reads directly from the saved configuration — no sync required. However, the Buying Table and Dashboard numbers are still based on the last completed sync run and will remain unchanged until a new sync processes the updated config. ## The stale config banner After you save any replenishment configuration change, the Dashboard will display a yellow banner: > "Replenishment config has changed since your last sync. Numbers shown may be outdated." This banner is your signal that the figures on screen no longer reflect your current configuration. ## Triggering an immediate recalculation You do not need to wait for the next scheduled sync. To recalculate immediately: 1. Look for the stale config banner at the top of the **Dashboard**. 2. Click the **Recalculate now** button in the banner. 3. RevoStock queues a sync run. The banner updates to show progress. 4. When the run completes, the banner clears and the Dashboard and Buying Table refresh with the updated figures. The recalculation typically takes less than a minute for most catalogs, though larger stores with extensive history may take slightly longer. :::tip The **Recalculate now** button triggers exactly the same process as a manual sync initiated from the Data Sync page. Either path will pick up your latest configuration changes and recompute the full simulator output. ::: ## What the sync recomputes When a sync runs after a configuration change, the simulator recalculates everything that depends on replenishment settings: - **Trigger thresholds** — the stock level or forecasted date at which each SKU's reorder is flagged. - **Reorder quantities** — the suggested number of units to order, after applying Days of supply, MOQ, and Maximum quantity cap. - **Suggested reorder dates** — when each SKU should be ordered based on the new Lead time and Safety stock values. - **Stockout projections** — the forecasted date on which each SKU would reach zero if not reordered. - **Buying Table rows** — added, removed, or updated to reflect the new trigger and quantity calculations. Any SKU whose resolved configuration changed — even if only one field changed at one layer — is fully reprocessed. :::note A sync re-runs the **planner** against your current forecast — it does not retrain the forecast itself. The forecast model is on its own weekly schedule (see [Forecasting](../forecasting.md#when-forecasts-refresh)). That's why reorder quantities can update minute-to-minute as inventory changes, while underlying demand predictions update once a week. ::: ## Hourly auto-sync If you do not click **Recalculate now**, the changes will still take effect automatically. RevoStock runs an hourly auto-sync in the background. The next scheduled run will pick up your saved configuration and recompute the simulator output without any manual action on your part. For time-sensitive buying decisions — such as a product that is already near a stockout threshold — it is worth clicking **Recalculate now** rather than waiting up to an hour for the auto-sync. ## What updates immediately (no sync needed) | What changed | Requires sync? | |---|---| | Replenishment config saved | No — Live SKU Config tab updates instantly | | Buying Table reorder quantities | Yes | | Buying Table suggested reorder dates | Yes | | Buying Table stockout projections | Yes | | Dashboard KPI cards and forecast charts | Yes | | Stale config banner appears | No — shows immediately after saving | | Stale config banner clears | Yes — clears when sync completes | ## Related - [Running a manual sync](../data-sync/running-a-manual-sync.md) - [The Live SKU Config view](./live-sku-config-view.md) - [Understanding the stale config banner](../data-sync/understanding-stale-config-banner.md) --- ## Static reorder point and max-quantity cap # Static reorder point and max-quantity cap Two optional unit-level fields give you direct, manual control over the floor and ceiling of RevoStock's reorder suggestions: **Static reorder point** and **Maximum quantity cap**. Neither field is required — they exist to accommodate specific buying constraints that the automatic forecast cannot account for on its own. Both fields can be set at the Global, Supplier, or SKU layer and follow the same [precedence rules](./precedence-global-supplier-sku.md) as every other replenishment field. --- ## Static reorder point **Static reorder point** (SRP) is a fixed unit threshold. Its role depends on which [trigger mode](./trigger-modes-smartdays-manualqty-hybrid-disabled.md) is active for that SKU: | Trigger mode | What Static reorder point does | |---|---| | **SmartDays** | Ignored entirely | | **ManualQty** | Acts as the exact trigger threshold — a reorder fires when stock falls to or below this value | | **Hybrid** | Acts as a minimum trigger threshold — a reorder fires when stock falls to or below this value, OR when the SmartDays condition is met, whichever comes first | | **Disabled** | Ignored entirely | ### Setting a Static reorder point 1. Decide which layer is appropriate (Global, Supplier, or SKU). 2. Open the corresponding tab on the **Replenishment Config** page. 3. Enter a positive integer in the **Static reorder point** field. 4. Click **Save changes**. Leave the field blank if you are using SmartDays mode exclusively — a blank SRP on a SmartDays SKU has no effect and is not a problem. :::caution If a SKU is set to ManualQty mode and its Static reorder point is blank at every layer, no reorder will ever trigger for that SKU. Check the **Live SKU Config** tab to confirm the resolved value. ::: --- ## Maximum quantity cap **Maximum quantity cap** is a hard ceiling on the suggested order quantity. After RevoStock calculates how much to order, it applies this cap: ``` Final order quantity = min(calculated quantity, maximum quantity cap) ``` Leave this field blank to impose no ceiling. A blank cap means RevoStock can suggest any quantity the forecast demands. ### When to use a maximum quantity cap - **Warehouse space constraints** — you cannot physically receive more than a certain number of units per order. - **Cash flow limits** — you want to cap the dollar exposure on any single purchase order. - **Supplier allocation limits** — your supplier restricts how many units you can order per period. - **Slow-moving SKUs** — you want to avoid over-buying on products that move unpredictably. --- ## How MOQ and the cap interact MOQ (minimum order quantity) and Maximum quantity cap are applied in sequence: 1. RevoStock calculates a raw suggested quantity from the forecast and trigger logic. 2. MOQ is applied as a floor: if the raw quantity is below the MOQ, it is raised to the MOQ. 3. The cap is applied as a ceiling: if the MOQ-adjusted quantity exceeds the cap, it is reduced to the cap. ``` Step 1: raw_quantity = (forecasted daily sales) x (days of supply) Step 2: moq_adjusted = max(raw_quantity, MOQ) Step 3: final_quantity = min(moq_adjusted, max cap) ← only if cap is set ``` ### Worked examples **Example A — cap limits a large order** | Setting | Value | |---|---| | MOQ | 5 units | | Maximum quantity cap | 50 units | | Forecast-calculated quantity | 80 units | Calculation: - After MOQ: max(80, 5) = 80 units - After cap: min(80, 50) = **50 units** (final suggestion) The cap reduces the order from 80 to 50 units. **Example B — MOQ raises a small order** | Setting | Value | |---|---| | MOQ | 5 units | | Maximum quantity cap | 50 units | | Forecast-calculated quantity | 3 units | Calculation: - After MOQ: max(3, 5) = 5 units - After cap: min(5, 50) = **5 units** (final suggestion) The MOQ floor raises the order from 3 to 5 units, and the cap is not reached. --- ## MOQ vs. cap conflict If MOQ is greater than the Maximum quantity cap, the cap can never be respected without violating the MOQ — an impossible situation. RevoStock surfaces a warning in the **Live SKU Config** tab and on the Global Defaults and override forms when this condition is detected. To resolve the conflict, either: - Lower the MOQ to be at or below the cap, or - Raise the Maximum quantity cap to be at or above the MOQ, or - Clear the Maximum quantity cap (set it to blank) to remove the ceiling entirely. :::tip The warning is informational — RevoStock will still generate a suggestion. In a conflict, the MOQ takes precedence and the cap is effectively ignored for that SKU, which is why it is important to resolve the conflict deliberately rather than leave it. ::: --- ## Related - [Trigger modes: SmartDays, ManualQty, Hybrid, Disabled](./trigger-modes-smartdays-manualqty-hybrid-disabled.md) - [Configuring Global Defaults](./global-defaults.md) - [Precedence: Global → Supplier → SKU](./precedence-global-supplier-sku.md) --- ## Trigger modes: SmartDays, ManualQty, Hybrid, Disabled # Trigger modes: SmartDays, ManualQty, Hybrid, Disabled **Trigger mode** is the single most important replenishment setting in RevoStock. It controls two things simultaneously: the condition that fires a reorder suggestion, and the logic used to calculate how much to order. Choosing the right mode for each part of your catalog determines how much of the buying process RevoStock handles automatically versus how much stays under manual buyer control. Trigger mode is just another replenishment field, so the same [precedence rules](./precedence-global-supplier-sku.md) apply. You can set SmartDays globally and switch individual suppliers or SKUs to a different mode without touching anything else. ## SmartDays (default) ### How it triggers SmartDays is fully forecast-driven. RevoStock continuously monitors each SKU's projected days to stockout using your sales history and demand forecast. A reorder is suggested the moment the following condition is met: ``` Days to stockout - Lead time - Safety stock days <= 0 ``` In plain terms: RevoStock fires a reorder when the stock on hand is just barely enough to last through the supplier's lead time plus your safety buffer. Once that margin is gone, a new purchase order line appears in the Buying Table. ### How it sizes the order The suggested quantity covers exactly **Days of supply** worth of demand from the expected arrival date, converted to units using the forecasted daily sales rate: ``` Suggested quantity = Forecasted daily sales x Days of supply ``` MOQ and Maximum quantity cap are then applied to the result. ### When to use SmartDays SmartDays is the right default for most stores. Choose it when: - You trust RevoStock's demand forecasts and want the system to manage timing automatically. - Your buying is relatively high-frequency and your lead times are predictable. - You want to minimize the manual effort of tracking reorder dates. --- ## ManualQty ### How it triggers ManualQty ignores the forecast entirely. The reorder fires when current stock on hand falls to or below the **Static reorder point** (SRP) — a fixed unit threshold you define: ``` Reorder fires when: current stock <= Static reorder point ``` ### How it sizes the order The suggested quantity is derived from the Static reorder point value. The system uses this as a fixed order floor rather than a forecast-based calculation. MOQ and Maximum quantity cap are still applied on top. :::note ManualQty requires a Static reorder point to be set — either on the SKU override, Supplier override, or Global Defaults. If the field is blank and a SKU is in ManualQty mode, no reorder will trigger. ::: ### When to use ManualQty Choose ManualQty when: - Your buying team prefers to set and review fixed reorder levels rather than relying on AI-generated quantities. - A product has highly irregular demand that makes forecasting unreliable. - You want to replicate a traditional min/max or two-bin replenishment system within RevoStock. --- ## Hybrid ### How it triggers Hybrid is a safety net layered on top of automatic planning. It monitors both the SmartDays threshold and the Static reorder point simultaneously and fires a reorder on whichever condition is hit first: ``` Reorder fires when: (Days to stockout - Lead time - Safety stock days <= 0) OR (current stock <= Static reorder point) ``` This means Hybrid will never let you fall through the cracks. If the forecast model misses a demand spike and stock falls unexpectedly fast, the Static reorder point acts as an emergency trigger even before SmartDays would normally fire. ### How it sizes the order The quantity is calculated the same way SmartDays does — covering Days of supply from the arrival date — but the Static reorder point acts as a minimum floor on the suggested quantity: ``` Suggested quantity = max(SmartDays quantity, Static reorder point) ``` MOQ and Maximum quantity cap are then applied. ### When to use Hybrid Choose Hybrid when: - You want AI-driven planning but also need a hard safety net for high-value or business-critical SKUs. - Your store has seasonal products where demand can surge faster than the model adjusts. - You are transitioning from a manual buying process and want a fallback while you build confidence in the forecasts. --- ## Disabled ### How it triggers Disabled never triggers a reorder. Regardless of stock levels, forecasts, or any other factor, RevoStock will not generate a reorder suggestion for a SKU in Disabled mode. ### How it sizes the order The suggested quantity is always 0. ### When to use Disabled Use Disabled for: - SKUs being phased out or discontinued — you want to sell through existing stock without ordering more. - Drop-shipped products that your supplier fulfills directly and you never hold inventory for. - Products managed by a separate procurement process outside RevoStock. - Promotional or one-time items that will never be reordered. :::caution Setting Disabled at the Global layer will suppress all reorder suggestions across your entire catalog. This is rarely the right choice — use it at the Supplier or SKU layer to target specific products. ::: --- ## Choosing the right mode: quick reference | Mode | Trigger condition | Order sizing | Best for | |---|---|---|---| | **SmartDays** | Forecast-driven margin hits zero | Days of supply from arrival | Fully automated planning; most SKUs | | **ManualQty** | Stock hits Static reorder point | Based on Static reorder point | Fixed min/max buying; unreliable demand | | **Hybrid** | Either condition hits first | SmartDays quantity or SRP, whichever is larger | High-value SKUs needing a safety net | | **Disabled** | Never | Always 0 | Phase-outs, drop-ship, external procurement | ## Related - [Static reorder point and max-quantity cap](./static-reorder-point-and-max-cap.md) - [Precedence: Global → Supplier → SKU](./precedence-global-supplier-sku.md) - [Configuring Global Defaults](./global-defaults.md) --- ## Contacting RevoStock support # Contacting RevoStock support If you have worked through the relevant troubleshooting guide and the issue is still not resolved, the RevoStock support team is here to help. Reaching out with the right information upfront means faster resolution — this page explains the available channels and exactly what to include in your message. ## Support channels ### In-app live chat (fastest) A chat icon is available inside the RevoStock app, typically in the bottom-right corner of the screen. This is the fastest way to get a response. The team can see your account context directly, which speeds up diagnosis. ### Email Send a message to **support@nxrevo.com**. Use the primary contact email associated with your Shopify store so the team can locate your account without any extra back-and-forth. ## What to include in your message Providing the right details upfront prevents one or more rounds of follow-up questions: - **Your Shopify store URL** — the full `*.myshopify.com` address, not your custom domain. - **A short description of what you tried** — list the steps you took and exactly what happened at each one. "I clicked Retry, the log showed a rate-limit message, I waited five minutes, and it never progressed past 12%" is far more useful than "sync is broken." - **When the issue started** — an approximate date and time helps the team correlate your report with sync logs and server events on the backend. - **Screenshots** — if you can capture the error state, browser console messages, or an unexpected screen, attach them. A picture removes ambiguity. - **Shopify charge ID** (billing issues only) — found in **Shopify Admin** → **Settings** → **Billing**. Include this if your subscription is not activating. ## Response times - **Live chat**: responses are typically within a few minutes during business hours. - **Email**: replies are typically within one business day. :::tip Before reaching out, check the relevant troubleshooting guide below — most common issues have a quick self-serve fix that gets you back on track faster than waiting for a reply. ::: ## Related - [Initial sync stuck or failing](./initial-sync-stuck-or-failing.md) - [Dashboard shows no data after sync completes](./dashboard-shows-no-data-after-sync.md) - [Onboarding wizard re-appears after I finished setup](./onboarding-wizard-reappears.md) - [Trial or billing not activating](./trial-or-billing-not-activating.md) - [Data sync overview](../data-sync.md) - [Plan tiers and Shopify mapping](../plans-and-billing/plan-tiers-and-shopify-mapping.md) --- ## Dashboard shows no data after sync completes # Dashboard shows no data after sync completes It can be disorienting when the sync finishes successfully but the Dashboard KPI cards show zeros, the Demand or GMV charts are blank, or the Top SKUs table appears empty. This is almost always caused by one of a handful of easy-to-fix conditions — work through the steps below in order. ## Try this 1. **Refresh the page.** The Dashboard may have loaded its frame before the data files finished publishing. A hard refresh (Ctrl + Shift + R on Windows, Cmd + Shift + R on Mac) is enough to rule this out. 2. **Check the data-sync indicator.** At the top of the Dashboard page, look for the sync status indicator. It should read **"Synced \[date\] \[time\]"** with a recent timestamp. If it says **"No data has been synced yet"**, click **Run sync** and wait for it to complete before checking the Dashboard again. 3. **Check whether your store has order history.** RevoStock's Demand and GMV charts are driven by actual sales orders. A brand-new store with no completed orders will show empty charts — that is expected behavior, not an error. KPI cards may also show zeros until at least a few orders exist for the AI to learn from. 4. **Check inventory tracking in Shopify.** SKUs that do not have **"Track quantity"** enabled in Shopify are marked as **Disabled** in RevoStock and are excluded from Dashboard metrics. To include them, enable quantity tracking on the product variant in Shopify Admin, then trigger a new sync. 5. **Dismiss or act on the stale config banner.** If a yellow banner at the top of the Dashboard reads **"Replenishment config has changed since your last sync"**, your current settings have not yet been applied to the data. Click **Recalculate now** to run an updated sync with your latest configuration. 6. **Check for a Shopify plan mismatch banner.** If your Shopify subscription tier recently changed, a banner may appear asking you to update your RevoStock plan mapping. Completing that flow can unblock data display. :::caution If the sync indicator shows a recent timestamp but all tiles remain empty after a page refresh, do not run repeated syncs back-to-back. One sync at a time is enough — running multiples simultaneously can cause them to compete and slow each other down. ::: ## Still stuck? If the Dashboard is still empty after working through all the steps above, contact RevoStock support — see [Contacting RevoStock support](./contacting-nxrevo-support.md). Include your store's `.myshopify.com` URL and the timestamp shown in the sync indicator so the team can investigate the right sync run. ## Related - [Dashboard overview](../dashboard.md) - [Data sync overview](../data-sync.md) - [Preparing your store for RevoStock](../getting-started/preparing-your-store-for-nxrevo.md) - [Why is my forecast empty or off?](../faqs/why-forecast-is-empty-or-off.md) - [Contacting RevoStock support](./contacting-nxrevo-support.md) --- ## Initial sync stuck or failing # Initial sync stuck or failing The initial sync is the step where RevoStock pulls your products, variants, and order history from Shopify for the first time. It starts automatically when you start your free trial, and shows its progress on the **Connect & Sync** step. It takes from **under a minute** for small stores to **up to about 30 minutes** for stores with more than 50,000 orders — the Connect & Sync step shows the estimate for your store. If the sync card appears frozen, has clearly exceeded those windows, or is showing an error, the steps below will get you moving again. ## Try this 1. **Wait a few minutes and watch the progress log.** The sync card refreshes automatically every couple of seconds and streams a terminal-style log directly on the screen. Lines that say "retrying" are normal — they mean RevoStock is waiting out a Shopify rate limit and will resume automatically. Only act if the log stops updating entirely or shows a hard error message. 2. **Read the error message in the log.** Common messages and what they mean: - **"Rate limited — retrying in X seconds"** — Shopify is throttling the request. Wait; RevoStock handles this automatically. - **"Access scope mismatch"** or **"Unauthorized"** — the app's Shopify permissions may be outdated. See step 3. - **"Network error"** or **"Connection refused"** — a transient issue; retry the sync (see below). 3. **Confirm the app still has access in Shopify.** Open **Shopify Admin**, go to **Apps**, and verify RevoStock is still listed as an installed app. If it was removed or has a permissions warning, reinstall it from the Shopify App Store — reinstalling automatically restarts a fresh sync. 4. **Retry the sync.** If the sync failed, the Connect & Sync card shows an error message and a **Retry** button — click **Retry**. If the card shows **Initialize Sync** instead (the sync has not started), click that to start it. Running the sync again will not create duplicate data — it safely overwrites whatever was fetched before. 5. **Trigger a manual sync from the Dashboard.** If your onboarding card already shows Step 4 ("All set"), the sync may have completed partially. Use the data-sync indicator in the Dashboard page header to kick off a fresh refresh, then return to check whether the data appears. :::tip Stores with 10,000 – 50,000 orders usually take about 10–20 minutes on the first sync, and stores with more than 50,000 orders up to about 30 minutes. Keep the browser tab open so the progress log can stream fully. ::: ## Still stuck? If none of the steps above resolve the issue, contact RevoStock support — see [Contacting RevoStock support](./contacting-nxrevo-support.md). Include the error message from the sync log and the approximate time the sync started so the team can correlate it with server-side logs. ## Related - [How long does the initial sync take?](../faqs/how-long-initial-sync-takes.md) - [Data sync overview](../data-sync.md) - [Preparing your store for RevoStock](../getting-started/preparing-your-store-for-nxrevo.md) - [Contacting RevoStock support](./contacting-nxrevo-support.md) --- ## Onboarding wizard re-appears after I finished setup # Onboarding wizard re-appears after I finished setup Once you complete RevoStock setup, the onboarding wizard should not appear again — so seeing it a second time is a signal that something interrupted the final step, or that a change to your account reset the wizard's state. The steps below cover every common cause, starting with the simplest. ## Try this 1. **Check that Step 4 ("All set") completed fully.** The wizard exits only after Step 4 is marked complete. If a network hiccup or browser tab closure interrupted that final step, the wizard will reappear. Navigate back to Step 4 and let it finish — you will see a confirmation before it closes. 2. **Reload the app from Shopify Admin.** Go to **Shopify Admin** → **Apps** → **RevoStock** and open the app fresh. This forces a clean re-fetch of your account state and rules out a stale cached session showing an old wizard state. 3. **Check whether you reinstalled the app.** Reinstalling RevoStock from the Shopify App Store resets the onboarding flow — that is expected behavior. If you reinstalled for any reason, walk through the wizard once from the beginning to re-establish the connection and run a fresh sync. 4. **Check for a plan-renewal or trial-expired screen.** If your 14-day trial has ended or your subscription was cancelled, you will see a plan-renewal prompt rather than the main Dashboard. This is a separate screen from the wizard. To regain access, subscribe to a plan (or restart your trial if you are still eligible) from the prompt shown. 5. **Re-run the stock planner if Step 4 shows an error.** Step 4 generates your first forecasts and cannot be skipped — the wizard closes only after that run finishes and you click **Open Dashboard**. On rare occasions the run hits an error. If that happens, click **Start Stock Planner** on the Step 4 card to run it again. If it fails again, contact RevoStock support (see below). :::tip If the wizard appears but you can see your products and data are intact, your underlying account is fine — this is a display-state issue that resolves quickly once Step 4 registers as complete. ::: ## Still stuck? If the wizard keeps reappearing after completing Step 4 multiple times, contact RevoStock support — see [Contacting RevoStock support](./contacting-nxrevo-support.md). Note the step number where the wizard seems to loop and include a screenshot if possible. ## Related - [Installing RevoStock from the Shopify App Store](../getting-started/installing-nxrevo-from-shopify-app-store.md) - [About the 14-day free trial](../getting-started/about-the-14-day-free-trial.md) - [Cancelling your subscription](../plans-and-billing/cancelling-your-subscription.md) - [Contacting RevoStock support](./contacting-nxrevo-support.md) --- ## Trial or billing not activating # Trial or billing not activating Starting a trial or subscribing to a paid plan should take only a few seconds, but the process involves a handoff between RevoStock and Shopify's billing system — and any interruption along the way can leave your plan in a pending state. The steps below address both the trial flow and the paid-subscription flow. ## Try this 1. **For the trial — refresh the page after clicking Start.** The Trial plan is created instantly without a payment method, but the UI may briefly show a pending state while the account record is updated. Refresh the page; if your trial is active, you will land in the onboarding wizard. If nothing changes, click **Start my free trial** once more — it is safe to retry. 2. **For paid plans — complete the Shopify billing approval step.** After clicking Subscribe, RevoStock redirects you to a Shopify-hosted billing confirmation page. Your subscription does not activate until you click **Approve** on that page. If you did not see the Shopify approval screen, your browser may have blocked the redirect — disable any popup blockers or browser extensions that intercept redirects, then click Subscribe again. 3. **Check for a stale Pending plan row.** If a previous attempt was interrupted, you may see a **Pending** row on the Plans page. RevoStock automatically cleans up stale pending plans, and clicking **Subscribe** again also triggers a cleanup. After retrying, the Pending row should be replaced by your new Active plan. 4. **Look for a Shopify plan mismatch banner.** If your Shopify subscription tier changed after your last RevoStock plan was created, a banner will appear inside the app explaining the mismatch. You will need to go through the subscription flow again to create a plan that matches your current Shopify tier — your previous plan cannot be reactivated as-is. 5. **Confirm the charge in Shopify Admin.** Go to **Shopify Admin** → **Settings** → **Billing** and look for an RevoStock charge. If the charge is listed as approved on Shopify's side but RevoStock still shows your plan as Pending, the activation callback may not have reached RevoStock. In this case, contact support with the Shopify charge ID so the team can manually verify and activate the plan. :::caution Do not attempt to approve the subscription charge from within a browser's private/incognito mode. Shopify's billing flow requires a persistent session cookie, and private browsing can cause the approval callback to fail silently. ::: ## Still stuck? If your plan remains inactive after working through the steps above, contact RevoStock support — see [Contacting RevoStock support](./contacting-nxrevo-support.md). Include your `.myshopify.com` store URL, the Shopify charge ID if you have it, and a brief description of what happened at each step. ## Related - [Plan tiers and Shopify mapping](../plans-and-billing/plan-tiers-and-shopify-mapping.md) - [About the 14-day free trial](../getting-started/about-the-14-day-free-trial.md) - [Cancelling your subscription](../plans-and-billing/cancelling-your-subscription.md) - [Contacting RevoStock support](./contacting-nxrevo-support.md)