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.

  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, any Shopify variant whose available stock drops below your threshold will trigger an automatic PO draft. You can also go to Inventory Watch, select items manually, and click Generate PO.

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's a percentage of the threshold. The formula is:

order qty = ceil(threshold × buffer ÷ 100) − current stock
Buffer 100% restock exactly back to threshold

Threshold = 20, current stock = 3

ceil(20 × 100 ÷ 100) − 3 = 20 − 3 = 17 units ordered

After delivery you'll have exactly 20. No safety stock — choose this if you have reliable, fast suppliers.

Buffer 150% adds 50% safety stock above threshold

Threshold = 20, current stock = 3

ceil(20 × 150 ÷ 100) − 3 = 30 − 3 = 27 units ordered

After delivery you'll have 30 — 10 units of breathing room above threshold in case the next delivery is late.

Buffer 200% doubles — for slow or unreliable suppliers

Threshold = 20, current stock = 5

ceil(20 × 200 ÷ 100) − 5 = 40 − 5 = 35 units ordered

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

Quick guide: Start with threshold = 2–3 weeks of sales, buffer = 150%. Adjust the buffer up if your supplier is slow or you want more safety stock; down if storage 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, select the receiving warehouse from the dropdown.
  5. 5.Click Commit to Shopify Inventory. A confirmation dialog shows any discrepancies 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.

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.