Shopify Inventory CSV Preflight avatar

Shopify Inventory CSV Preflight

Pricing

$0.25 / completed report

Go to Apify Store
Shopify Inventory CSV Preflight

Shopify Inventory CSV Preflight

Review Shopify All states inventory CSV changes, snapshot differences, bypassed safety checks, read-only states and packed dimensions. JSON, CSV and HTML reports.

Pricing

$0.25 / completed report

Rating

0.0

(0)

Developer

Gilad Ronen

Gilad Ronen

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does Shopify Inventory CSV Preflight do?

Review a Shopify All states inventory CSV before a bulk import. This Actor creates a row-by-row change preview and an evidence queue for malformed quantities, ambiguous identities, skipped safety comparisons, snapshot differences, read-only state edits, and packed dimensions. Supply CSV text directly; no Shopify connection or credentials are needed.

Shopify already validates inventory imports. This report provides an earlier review artifact for merchants, agencies, and automated file-preparation workflows. It never certifies that a file is safe to import, changes a store, or produces a corrected import file. The rules follow Shopify’s inventory CSV documentation.

Why use an inventory CSV preflight?

Use the same check before each inventory update, attach the evidence CSV to an internal review, or call the Actor from an Apify API workflow. A reviewer can see the exact proposed record and original physical CSV lines behind each finding. An optional earlier export adds snapshot comparisons without giving an integration access to the store.

A baseline is a snapshot, not live concurrency protection. Inventory may change after either supplied file was exported. A populated On hand (current) value lets Shopify perform its own comparison at import time. Clearing that value removes the comparison; this Actor explicitly flags it.

How to use it

  1. Export inventory from Shopify using the All states option.
  2. Prepare the proposed changes, keeping the identifying columns intact.
  3. Paste the file into proposedCsv and provide an asOf timestamp with an explicit timezone offset.
  4. Optionally paste a comparable recent export into baselineCsv and supply its baselineAsOf timestamp.
  5. Optionally set a large-change threshold in units, percent, or both. Run the Actor and download the preview, evidence queue, or HTML report.
  6. Review the findings, confirm details in Shopify, and use Shopify’s own import workflow independently.

The included example contains six proposed rows and six baseline rows. It demonstrates a valid negative-to-positive adjustment, a blank new quantity, not stocked, a blank current value, a changed read-only state, and inconsistent dimensions across two locations.

Input and supported CSV format

The required JSON properties are proposedCsv and asOf. CSV is supplied as a string, not a URL or uploaded file reference. baselineCsv and baselineAsOf must be supplied together; the baseline timestamp cannot be later than asOf. Both timestamps use ISO 8601 with Z or a numeric offset, for example 2026-09-29T09:00:00Z.

Both CSVs need Handle, Option1 Value, Location, On hand (current), and On hand (new) headers. Option 2 and 3 values are necessary when the variant uses them. The spaced aliases Option 1 Value, Option 2 Value, Option 3 Value, and corresponding option-name aliases are accepted. The state names Incoming, Unavailable, Committed, and Available are also recognized as aliases for their (not editable) headers. All other names are case sensitive. Unknown columns receive an explicit scope finding.

The downloadable Shopify sample observed during implementation still used the older On hand header. This Actor requires the current/new pair from the current documented format. Available matrix exports, legacy On hand files, and product CSV files are unsupported. Structural problems with readable data rows can produce a paid report marked incomplete, with those rows explicitly invalid. This explains the unsupported file; it does not assess its inventory changes successfully.

Supported inventory rules:

  • Identity is the exact handle, all option values, and location. SKU is optional metadata. String identifiers and leading zeros are preserved; no fuzzy joins or automatic trimming occur.
  • Positive and negative whole quantities and zero are accepted within the safe integer range, ±9,007,199,254,740,991. Decimals, exponents, plus signs, grouping separators, and surrounding whitespace are flagged.
  • not stocked is recognized case insensitively and never treated as zero. Its original text remains in the report.
  • Empty On hand (new) means no inventory change. Empty current is a review finding even if the new cell is also blank.
  • Read-only states are compared only against an exact, unambiguous supplied baseline identity. Differences are evidence of snapshot differences, not proof of a deliberate edit.
  • The four packed-dimension columns must be omitted together, filled together, or blank together. Blank cells in all four columns mean clearing dimensions. Positive decimal lengths use cm or in; no unit conversion occurs. Decimal equality is checked losslessly, including numbers beyond floating-point precision.
  • Packed dimensions belong to a variant. Blank versus populated dimensions, or differing dimensions across supplied locations, are flagged for every affected proposed row.

largeChangeUnits flags an absolute numeric delta strictly greater than your threshold. largeChangePercent uses abs(new − current) / abs(current) × 100. Percentage changes from zero and nonnumeric state transitions are explicitly reported as unevaluated. The defaults do not impose a business threshold.

Limits are 5,000 nonblank data rows per CSV, 4,000,000 UTF-8 bytes for the complete JSON input, 32 columns per CSV, 2,048 characters per cell, and 20,000 physical lines per CSV. CSV supports a UTF-8 BOM, quoted fields, commas inside quotes, and embedded newlines. Entirely blank records are counted and ignored. Malformed quoting, empty data, oversize input, and structurally unusable supplied baselines stop the run before publication or charging.

Output

One dataset item contains the complete report. Its rows array has one preview per nonblank proposed record; findings includes proposed, baseline, and file-level evidence. Error rows have action: "invalid"; their values describe submitted cells, not an approved update. A zero-finding result means only that the implemented checks found no issue in the supplied files.

DownloadContents
OUTPUTComplete compact JSON, including summary, previews, evidence, policy and limitations
change-preview.csvFlat row-level preview with quantities, action, delta, safety-check status and evidence IDs
evidence-queue.csvFlat findings with source file, CSV record, physical line range, column and comparison coordinates
report.htmlStandalone downloadable report that opens without external scripts or services

The dataset can also be downloaded using Apify’s usual export formats. Prefer the dedicated CSV downloads for flattened review data. Spreadsheet formula prefixes are neutralized in CSV, including negative numeric text; original values remain unchanged in JSON. The report CSVs are review artifacts and must not be imported into Shopify.

For example, a row changing current -2 to new 1 has action: "set-quantity" and deltaUnits: 3. A current value of not stocked with new 50 has a nonnumeric state transition, so its deltaUnits is null rather than an invented 50-unit difference.

Pricing and recovery

The price is $0.25 per completed report, including platform usage. The single paid event is report-completed; there is no startup or per-row charge. Reports containing findings are still completed reports. Malformed or empty inputs that cannot produce a usable report, size-limit failures, and insufficient budgets do not publish or charge a report.

Full dataset JSON is the primary deliverable. Every export is generated and checked against its size limit before publication and charging. If a convenience export write is interrupted after the dataset and charge succeed, the dataset remains available. Resuming that same run verifies the input fingerprint, report integrity, deterministic analysis, and persisted charge count, then retries exports without another report event. A saved report interrupted before charging is charged once on recovery. Do not manually edit or remove a saved dataset before resurrection. Starting a new run produces a new billable report.

Limits and support

There is no store access, inventory write, forecasting, automatic correction, customs advice, or verification of actual location and variant existence. The Actor cannot know omitted option values when no supplied record demonstrates them. Bin names, HS codes, and country of origin are recognized but not validated. Extra baseline rows do not mean deletions. Not all Shopify import checks are reproduced.

Use authorized exports and omit personal data. Input and output remain in the run’s Apify storage under your account’s access and retention settings. Customer CSV contents are not logged. For a format problem, use the Actor’s Issues tab and provide a small redacted reproduction with the finding code and original header names.