Getting started

Everything you need to get Replenishly generating purchase orders for your Shopify store.

Installation

  1. 1

    Install from the Shopify App Store

    Click "Install free" and follow the Shopify OAuth flow. Replenishly will request the minimum necessary scopes: read_products, read_inventory, write_inventory, read_locations.

    Important: Always open Replenishly from your Shopify admin (Apps → Replenishly). Do not bookmark or navigate directly to the dashboard URL — the app needs to authenticate through Shopify each time to keep your session active.
  2. 2

    Start your free trial

    On first login, you'll see the subscription screen. Approve the Replenishly Pro subscription in Shopify — your 7-day free trial begins immediately. No charge until the trial ends.

  3. 3

    The webhook registers automatically

    Replenishly self-registers an inventory_levels/update webhook on install. No manual setup required in your Shopify Partners dashboard.

Your first purchase order

Before Replenishly can generate POs, you need at least one factory configured. Go to the Factories section of the dashboard and click Add factory.

Tip: If you only have one supplier, add it as "Default Factory". You can add more factories later and assign products individually.

Once you have a factory, go to Inventory Watch — select items and click Generate PO to create drafts on demand. This is the default workflow.

Optionally, enable Auto-trigger POs in Settings. When on, Shopify fires a webhook whenever stock drops below your threshold and Replenishly creates a PO draft automatically — no manual action needed. The inventory list also auto-refreshes every 60 seconds in this mode. Auto-trigger is off by default; turn it on once you're happy with your threshold and factory assignments.

Overview dashboard

The Overview is the default landing section of your dashboard. It gives you a snapshot of your entire replenishment operation without needing to open individual sections.

Reorder pipeline

A horizontal strip showing how many items or orders are at each stage of the pipeline. Click any stage to jump directly to the relevant section.

Stage What it means
Needs POLow-stock items not yet in any open draft
In reviewPO drafts awaiting your approval
OrderedApproved or sent POs (factory has been notified)
In transitShipments marked as shipped, en route to your warehouse
CompletedReceived POs with inventory committed to Shopify

Stock urgency bars

Shows your most urgent low-stock items as horizontal progress bars, sorted by severity. The bar represents available stock as a percentage of your reorder threshold. Red = out of stock, orange = critical (≤25%), yellow = approaching. Click any row to go to Inventory Watch.

Expected arrivals

Lists all active orders (approved, sent, and in transit) with an estimated arrival date. The estimate is calculated from the order date (or ship date if marked as shipped) plus your lead time setting. Overdue items are shown in red.

Tip: Set your lead time accurately in Settings → Lead time — it's the number of days from when you place an order to when stock typically arrives. This is what drives the estimated arrival dates on the Overview.

Adding a factory

In the dashboard, expand the Factories accordion and click + Add factory.

  1. 1.Enter the factory's name (used as a label in your dashboard) and email (where POs are dispatched).
  2. 2.Choose an ordering method — Email or Portal (see below).
  3. 3.Optionally set MOQ settings — case size and minimum order quantity.
  4. 4.Click Save factory. You can then open the factory card to configure the column mapper and SKU overrides.

Ordering methods: Email vs Portal

📧 Email

Replenishly emails the factory directly when you approve a PO. The email includes a print-ready HTML purchase order and a .xlsx attachment in your configured format.

Best for: factories that accept orders by email

🌐 Portal

Replenishly generates a Portal Shopping List — a reference sheet with Factory SKUs, barcodes, and quantities — for you to enter manually on the supplier's ordering website.

Best for: wholesalers with their own online ordering portals

MOQ settings (Minimum Order Quantity)

Configure per-factory MOQ to ensure your POs always contain valid quantities:

  • Case size Rounds quantities up to the nearest multiple. Example: case size 12, calculated qty 27 → rounds up to 36.
  • Min order Applies a minimum floor after rounding. Example: min order 100, rounded qty 36 → set to 100.

Both settings default to 0 (disabled). The original calculated quantity is saved alongside the rounded quantity — the "↑ from N (MOQ)" label appears on PO cards when rounding has occurred.

Column mapper — uploading a template

Each factory can have its own column layout for the generated .xlsx file. Open a factory card and click Column mapper.

  1. 1.Click Upload template and select your factory's .csv, .tsv, .xls, or .xlsx file.
  2. 2.A prompt will remind you that row 1 must contain column headers only — no title rows, no data rows.
  3. 3.All column headers are imported. Each column shows a letter (A–AZ), the factory label, and a Shopify field dropdown.
  4. 4.Map each column to the appropriate Shopify field. Click Save.
Re-uploading a template preserves your existing field mappings by column position — only new columns are added unmapped.

Available Shopify fields

Field Output
SKUVariant SKU
Factory SKUFactory item code from SKU override table; falls back to Shopify SKU
Variant Titlee.g. "Large / Red"
Product Titlee.g. "Classic T-Shirt"
Barcode / EANVariant barcode
Reorder QuantityUnits to reorder (after MOQ rounding)
Vendor / BrandProduct vendor
Unit PriceVariant price
Fixed textA constant you type — identical on every row (e.g. PO-2026-001)
Date (4 formats)Today's date as DD/MM/YYYY, YYYY-MM-DD, MM/DD/YYYY, or DD MMM YYYY
Shop fieldsBusiness name, email, phone, address (lines 1&2, city, county, postcode, country)
Supplier fieldsFactory name, email, phone, address fields
(leave blank)Empty cell on every row

SKU overrides

Many factories use their own item codes that differ from your Shopify SKUs. The SKU override table maps Shopify SKUs to factory item codes — one mapping table per factory, so the same product can have different codes at different suppliers.

How to set up overrides

  1. 1.Dashboard → Factories → click a factory card to expand it.
  2. 2.Scroll down to the SKU Overrides section and click the header bar to expand it.
  3. 3.Add mappings using either method below.
  4. 4.Click Save changes — overrides are saved together with the factory in one click.

Adding mappings

Row by row

Type a Shopify SKU in the left field and the factory item code in the right field, then press Enter or click Add. Repeat for each product.

Paste CSV (bulk import)

Click Paste CSV / import, paste your mappings — comma or tab-separated, one per line. Headers are automatically skipped. Click Apply.

shopify_sku, factory_code
TEE-BLK-M, FAC-542-MED
TEE-BLK-L, FAC-542-LRG
HOODIE-RED-XL, HC-900-XL

Rows are merged — existing overrides for the same Shopify SKU are updated; others are kept.

Using overrides in purchase orders

In the column mapper, set any column source to "Factory SKU (uses overrides)". That column in the .xlsx will contain the factory item code. If a product has no override, the Shopify SKU is used automatically — overrides are never a blocker.

For Portal orders, the Portal Shopping List copy button outputs: Factory SKU · Barcode · Qty as a tab-separated line — paste directly into the supplier's ordering website.

Threshold & reorder buffer

Go to Reorder Settings in the dashboard. These two numbers work together to control when a PO fires and how much you order.

Threshold — when to reorder

When available stock hits this number or lower, Replenishly creates a PO draft. Think of it as your "danger zone" — the point at which you need to act.

Example

Threshold = 20. You have 25 units today — no PO. A sale brings you to 20 — PO created. Another sale brings you to 19 — already covered, no duplicate.

A good starting point: set threshold to roughly your average daily sales × your supplier's lead time. If you sell 5 units/day and your supplier takes 7 days, set threshold to 35 — you'll always have at least a week's cover when the PO fires.

Reorder buffer — how much to order

The buffer controls how many units to reorder. It represents how far above the threshold you want to land after the delivery arrives. The formula is:

order qty = ceil(threshold × (1 + buffer ÷ 100)) − current stock
Buffer 100% target 2× threshold after delivery

Threshold = 20, current stock = 3

ceil(20 × (1 + 1.0)) − 3 = 40 − 3 = 37 units ordered

After delivery you'll have 40 — comfortably above the threshold with one full reorder cycle of safety stock.

Buffer 150% (default) target 2.5× threshold — recommended starting point

Threshold = 20, current stock = 3

ceil(20 × (1 + 1.5)) − 3 = 50 − 3 = 47 units ordered

After delivery you'll have 50 — 30 units above threshold. Good for most suppliers.

Buffer 200% target 3× threshold — for slow or unreliable suppliers

Threshold = 20, current stock = 5

ceil(20 × (1 + 2.0)) − 5 = 60 − 5 = 55 units ordered

After delivery you'll have 60 — three times the threshold. Good for long lead times or seasonal products.

Quick guide: Start with threshold = 2–3 weeks of sales, buffer = 150% (the default). Raise the buffer if your supplier is slow or stock outs are costly; lower it if storage space is limited.

A live preview in the settings panel shows exactly how many units will be ordered for a product currently at 3 in stock — update the numbers and the preview recalculates instantly.

PO cooldown

Prevents duplicate POs from rapid-fire webhooks. Set the minimum number of hours that must elapse before a new PO is triggered for the same SKU via webhook.

Cooldown is reset after a PO is created, and again after inventory is received — preventing the post-adjustment webhook from immediately triggering a new order for the restocked item.

The cooldown only applies to webhook-triggered POs. Manually generated POs from Inventory Watch are never subject to cooldown.

Lead time

Enter the typical number of days from placing an order to stock arriving in your warehouse. When you mark a PO as shipped, Replenishly calculates and displays an estimated arrival date on the PO card.

Lead time is a per-merchant setting — it's not configurable per factory. If you have factories with very different lead times, use the mid-point or set it for your most critical supplier.

Inventory receiving

When stock arrives, close the PO loop by committing received quantities to Shopify:

  1. 1.On the PO card (in Approved & in transit tab), click Mark as Shipped when you know the order has left the factory.
  2. 2.When stock arrives, click Receive Inventory on the shipped card.
  3. 3.In the Receiving Audit Sheet, enter the actual received quantity for each line item. Discrepancies (shortages or overages) are highlighted automatically.
  4. 4.If you have multiple Shopify locations, each line is pre-set to the location that was detected as low on stock — you can change any line individually if needed.
  5. 5.Click Commit to Shopify Inventory. A confirmation dialog shows any discrepancies and a per-line location summary before you confirm.

Inventory is adjusted atomically. An audit log is written for every receive event, recording expected and received quantities at line-item level.

Multi-location: Replenishly tracks which Shopify location triggered the low-stock alert and pre-selects that location in the receiving sheet — so stock is always committed to the right warehouse automatically.

Viewing the audit log

Once a PO is completed, it moves to the Completed tab. Click View Audit Log on any completed card to see:

  • Summary strip — total lines, expected qty, received qty, and discrepancy count at a glance.
  • Clean receipt banner (green) or discrepancy banner (amber) showing the net unit delta committed to Shopify.
  • Line-item table — product name, SKU, expected qty, received qty, and a Match / Shortage / Overage badge per line.
  • Permanent reference — log UUID and exact timestamp of the Shopify inventory adjustment. This record cannot be modified.

Sales velocity & smart thresholds

Replenishly analyses your last 60 days of paid Shopify orders to calculate how fast each product sells, then suggests a data-driven reorder point for every item. This replaces manual threshold guessing with a number grounded in your actual sales history.

How suggestions are calculated

For each inventory item that has had 5 or more units sold in the last 60 days:

  • Velocity = total units sold ÷ 60 days (e.g. 120 units sold = 2.0/day)
  • Suggested threshold = ceil(velocity × lead_time_days × 1.2) — the 20% buffer is safety stock
  • Example: 2.0/day × 14-day lead time × 1.2 = 34 units suggested threshold

Items with fewer than 5 units sold are excluded — the data isn't reliable enough to act on.

Applying suggestions in Inventory Watch

When a suggestion exists for a low-stock item, a violet → N chip appears next to the threshold value in the Inventory Watch grid. Clicking it applies that threshold to the item immediately and refreshes the grid. Hover the chip to see the underlying velocity figure.

Velocity-based Thresholds panel (Settings)

Go to Settings and scroll below the main reorder settings form to find the Velocity-based Thresholds card. It shows:

  • How many items have velocity data and how many have active suggestions
  • A table showing each item's velocity, current threshold, and suggested threshold with a ↑/↓ delta
  • Whether the current threshold is a Custom (per-item) override or the store-wide Global setting
  • Apply all N suggestions — sets per-item thresholds for every item in one click
Note: Per-item thresholds are independent of your global threshold. Applying a suggestion for one product does not affect any other product. To revert an item to the global threshold, the per-item override can be removed from the panel.

Permissions

Sales velocity requires the read_orders permission. If you installed Replenishly before this feature was added, you will see a Reconnect screen when forecasting is first triggered — click through to re-authorise with the additional permission. Your data is not affected.

Keeping your store connected

Replenishly connects to your Shopify store using an access token issued during installation. Shopify periodically rotates these tokens as part of their platform security. Replenishly handles this automatically — when your token is about to expire, it is renewed in the background without any action required from you.

Reconnect screen

In rare cases — typically after uninstalling and reinstalling the app, or if your Shopify store permissions change — the dashboard will show a Reconnect screen instead of your data. This means the connection needs to be re-established with a fresh login.

  1. 1.Click the Open Shopify Admin button on the reconnect screen.
  2. 2.In your Shopify Admin, go to Apps and click on Replenishly.
  3. 3.The app re-authenticates and your dashboard loads normally. No data is lost.
Always open Replenishly from your Shopify Admin — launching from apps.shopify.com or a bookmarked URL will show the reconnect screen if your session has lapsed. Opening from the Admin app list restores the session automatically.