One-time downloads · $2.99–$9.99 USD. No subscription.

Perunlight

Step-by-step guide

SnotraSheets

Turn counted stock into a reviewed Square or Shopify inventory import file.

For independent merchants counting stock with scanner files or manual counts. SnotraSheets 1.0.3 runs offline in desktop Chrome; tested in Chrome 152 on Linux.

Get SnotraSheets · $9.99

See it in use

Stop an unsafe Shopify stock import

A screenshot walkthrough with fictional practice data. Select a step to explore.

1. Start with

Stop an unsafe Shopify stock import

The fictional shop has a baseline export, count files and a later fresh export.

Sample files and contents

The fictional Shopify shop in examples/shopify-harbor-thread/ (in the paid download and the free guide ZIP): a baseline inventory export, a products export with barcodes, two count files and a later inventory export.

Practice files and guides are free. The complete app is included only where the product page says so.

2. In the app

SnotraSheets 1.0.2 source step showing a recognised Shopify All states CSV, Harbor Street Shop location, and barcodes added to 24 of 24 rows.
Start with a Shopify All states inventory export. SnotraSheets 1.0.2 recognises 24 fictional rows at Harbor Street Shop, and the optional products export adds barcodes to all 24. Enlarge image ↗

Try it in three steps

  1. Load the baseline inventory and both count files.
  2. Review twelve counted rows and three variances.
  3. Load the fresh export and inspect changed rows before any import.
Show every click and setting
  1. Extract the entire SnotraSheets-1.0.3.zip download. Open SnotraSheets.html in desktop Chrome. This release was tested in Chrome on Linux. The app runs locally in the browser; the example files are fictional.
  2. In Load your POS export, choose examples/shopify-harbor-thread/1-inventory_export_before_count.csv. Leave Location to count on Harbor Street Shop. Expect “Shopify inventory (All states)” and 24 rows. In Shopify barcodes, choose 1b-products_export.csv; expect barcodes added to 24 of 24 rows. See image 1.
  3. In Count, import both 2-counts/shop-floor-scans.txt and 2-counts/stockroom-counts.csv. In Codes to resolve, ignore the example’s stitch-marker-tin code, which has quantity 0. In Review, select All rows. Expect 12 rows counted, 116 units counted, three variance rows, six units under, and zero codes to resolve. Driftwood yarn has 18 expected and 16 counted; Alpaca Lace Yarn — Ink has 8 expected and 6 counted. See image 2.
  4. In Fresh export, choose 4-inventory_export_after_count.csv. Expect the message that two counted rows changed since the first export and are blocked. The Shopify import file (.csv) button is disabled while the warning appears. See image 3. The Variance report (.csv) and Exceptions (.csv) controls remain available for review.
  5. For real stock, pause movement, take a new baseline export and recount affected rows before preparing an import. Do not remove the fresh export merely to bypass the example’s safety block. A missing selected location in a fresh export also blocks the import; load a fresh export containing that location. Check the store’s import preview before applying any stock change.

3. The result

Inspect the result

Two counted rows changed after the count, so the app blocks the Shopify import CSV. A new baseline and recount are required.

SnotraSheets fictional fresh-export review showing two changed rows and a blocked Shopify import button.
Correct blocked result: the fresh inventory export changed two counted rows, so SnotraSheets disables Shopify import until those rows are recounted. Enlarge image ↗
What to check in the practice result

12 rows counted, 116 units counted and three variance rows totaling six units under. The later export shows that two counted rows changed, so the Shopify import file (.csv) button stays disabled. That block is the intended end of this lesson, not a fault: the app cannot tell whether those sales happened before or after the count. The variance report and exceptions remain available. No import into a real Shopify store was verified.

The guide’s intended result is a safety block, not a downloadable import CSV.

See the workflow at a glance

Choose a short explanation, then follow the worked example below. Check the requirements and compatibility before using your own files.

The blocked import is the useful result.

A stock count can become stale while you are still working. In SnotraSheets' fictional Harbor Street Shop example, 12 counted rows total 116 units, but a fresh export shows changes to two counted rows. The import button stays disabled while variance and exception reports remain available. For your own count, pause stock movement, take a new baseline and recount rather than bypassing the block. Tested in Chrome on Linux with fictional files; no real merchant import was performed. Follow the example to understand the stop condition.

View the illustrated card
The blocked import is the useful result. — the same explanation written above, with a labelled illustrative panel.
Download the full-size PNG card

Import blocked: choose the next safe handoff

A disabled import button is a review stop. You can still use the available review files without treating them as an import-ready inventory update.

  1. Two counted rows changed in the fresh export

    In the HarborThread example, keep the variance and exceptions files for investigation. Pause inventory movement, obtain a new baseline and recount the affected stock; do not remove the fresh export to bypass the check.

    Inspect the blocked-import example

  2. The selected location is missing

    Resolve the location/export mismatch before building an import. Do not substitute another location just to make the file exportable.

    Review location troubleshooting

  3. The review is complete

    Confirm the location and baseline match the count before continuing the documented workflow. The example has 12 count rows and 116 units, but no live Shopify import was verified. An exported review file is not evidence of an applied stock change.

    Read the import boundary

Before you start

  • Extract the complete SnotraSheets-1.0.3.zip. Chrome 152 on Linux was checked; other browsers and operating systems remain unverified.
  • Desktop Google Chrome 152 tested on Linux; local files remain on your device.
  • Square item library CSV/XLSX or Shopify All states inventory CSV; optional Shopify products CSV for barcodes.
  • Pause inventory movement for the count and verify the store import preview.

Your first result

  1. Open the app

    Extract the entire SnotraSheets-1.0.3.zip download and open SnotraSheets.html in desktop Chrome. Nothing is installed and no account is needed.

  2. Start with a baseline

    Pause stock movement, export the supported store file and load it in SnotraSheets.html.

  3. Count and review

    Scan or import count files, review unmatched codes, variances and changed rows, then load a fresh export.

  4. Export or stop

    Download only when exceptions are resolved. If the fresh export shows counted rows that changed, or lacks the selected location, the import stays blocked: take a new baseline and recount, or load a fresh export for that location. Close the tab and delete the extracted folder to remove the app.

  5. While a file is being read

    Editing and downloads pause while files are being read. Review the import result before continuing. If reading fails, correct the file and retry. A second dropped file during reading is ignored; choose it again afterwards. Count files selected together commit separately in order.

A worked example

See how SnotraSheets stops an unsafe import

Input: The fictional Shopify shop in examples/shopify-harbor-thread/ (in the paid download and the free guide ZIP): a baseline inventory export, a products export with barcodes, two count files and a later inventory export.

  1. Extract the entire SnotraSheets-1.0.3.zip download. Open SnotraSheets.html in desktop Chrome. This release was tested in Chrome on Linux. The app runs locally in the browser; the example files are fictional.
  2. In Load your POS export, choose examples/shopify-harbor-thread/1-inventory_export_before_count.csv. Leave Location to count on Harbor Street Shop. Expect “Shopify inventory (All states)” and 24 rows. In Shopify barcodes, choose 1b-products_export.csv; expect barcodes added to 24 of 24 rows. See image 1.
  3. In Count, import both 2-counts/shop-floor-scans.txt and 2-counts/stockroom-counts.csv. In Codes to resolve, ignore the example’s stitch-marker-tin code, which has quantity 0. In Review, select All rows. Expect 12 rows counted, 116 units counted, three variance rows, six units under, and zero codes to resolve. Driftwood yarn has 18 expected and 16 counted; Alpaca Lace Yarn — Ink has 8 expected and 6 counted. See image 2.
  4. In Fresh export, choose 4-inventory_export_after_count.csv. Expect the message that two counted rows changed since the first export and are blocked. The Shopify import file (.csv) button is disabled while the warning appears. See image 3. The Variance report (.csv) and Exceptions (.csv) controls remain available for review.
  5. For real stock, pause movement, take a new baseline export and recount affected rows before preparing an import. Do not remove the fresh export merely to bypass the example’s safety block. A missing selected location in a fresh export also blocks the import; load a fresh export containing that location. Check the store’s import preview before applying any stock change.

Expected result: 12 rows counted, 116 units counted and three variance rows totaling six units under. The later export shows that two counted rows changed, so the Shopify import file (.csv) button stays disabled. That block is the intended end of this lesson, not a fault: the app cannot tell whether those sales happened before or after the count. The variance report and exceptions remain available. No import into a real Shopify store was verified.

Troubleshooting

While a file is being read

Editing and downloads pause while files are being read. Review the import result before continuing. If reading fails, correct the file and retry. A second dropped file during reading is ignored; choose it again afterwards. Count files selected together commit separately in order.

Installation or export fails

Check the supported version and package contents, then contact support with the version, OS and exact error; use fictional data for a sample.

The import button stays disabled after loading a fresh export

Counted rows whose stock changed between the two exports are blocked, because the timing of the sale or delivery is unknown. Pause stock movement, take a new baseline export, recount those rows and load a new fresh export. Do not remove the fresh export just to enable the import.

The fresh export has no location you are counting

SnotraSheets 1.0.3 blocks the import when the loaded fresh export lacks the selected location. Export again from the same store for that location, in the same supported format (Shopify All states CSV or Square item library), and load it with Choose fresh export…. The import becomes available only when that compatible export shows no changed counted rows.

A replacement file was refused

A refused replacement POS export keeps the loaded export, count lists and current review. A successfully loaded export replaces the baseline and recalculates the results for review. Existing stock movement and other import gates remain in force.

Compatibility & limits

  • No store API connection or upload. Files are processed locally; exported reports may include business data.
  • A snapshot pair cannot tell whether a sale happened before or after a physical count. Changed rows are blocked and require recount; actual store imports were not tested.
  • The bundled examples deliberately end in a blocked import to show the stock-movement safety check; they do not produce a ready-to-import file.

Need a hand?

Tell us the product, host application and version, what you tried, and the exact error. Contact support with a fictional example; keep private customer files and passwords out of your message.