Shopify CSV Change Review avatar

Shopify CSV Change Review

Pricing

$0.50 / completed comparison

Go to Apify Store
Shopify CSV Change Review

Shopify CSV Change Review

Review a proposed Shopify product CSV against an existing export before importing it. Get a change report and CSVs of detected issues and changes.

Pricing

$0.50 / completed comparison

Rating

0.0

(0)

Developer

Matheus Carvalho

Matheus Carvalho

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Review Shopify CSV changes before importing

Compare a current Shopify product export with a proposed update and see what changed before you import it. Shopify CSV Change Review highlights cleared fields, unexpected edits, large price drops and option changes that may affect variant identities.

The review uses only the CSV text you supply. It does not connect to Shopify, change a store, fetch product URLs or send your product data to a language model. You receive a readable report and structured files you can use in an existing review workflow.

Run a review

  1. Keep a fresh product export from your store. Paste its contents into Current product export.
  2. Paste the proposed import file into Proposed product CSV. Select whether you intend to update existing products or create new ones.
  3. Optionally enter the exact column names you intended to change. Replace the prefilled sample values with your own. To skip that check, use JSON input and omit expectedChangedColumns. Review the run price and set a budget that covers one report.
  4. Run the Actor. Open the Output tab to read the report or download the JSON, changes CSV and issues CSV.

The prefilled example uses fictional products and can be run unchanged. The same input object can also be used through Apify's API or saved in an Apify task.

What you receive

OutputContents
Readable review reportHTML showing the summary, detected issues and before/after changes.
Complete JSON reportStructured issues, changes, summary, rules version and coverage limitations.
Detected changes CSVOne row per reported change, with original and proposed values.
Detected issues CSVOne row per reported issue, with severity and explanation.
Comparison summaryOne dataset item for the completed report.

CSV outputs are review documents, not import files. Cells that might be interpreted as spreadsheet formulas are prefixed with an apostrophe. JSON preserves the original values.

Input settings and limits

FieldPurpose
proposedCsvRequired UTF-8, comma-separated product CSV text, including its header.
currentCsvOptional current product export. Supply it for before/after comparison.
modeupdate for existing products, or create for new products. Default: update.
expectedChangedColumnsOptional exact header names you intended to change. Omit this field to skip the intended-column check. An explicitly empty list means no changes were intended.
priceChangeThresholdPercentWarn about comparable price drops at or above this percentage. Default: 30. Values above 100 suppress these warnings.
maxRowsMaximum data rows accepted in each file, from 1 to 10,000. Default: 10000.

Each file may contain at most 10,000 data rows, 5 MiB of UTF-8 data and 200 columns. Files over these row, byte or column limits are rejected before report generation, without the report fee. Invalid values in supported price, weight and inventory fields, including values longer than 64 non-padding characters, are reported as validation errors in a completed, chargeable report. Supply CSV text, not a URL, local file path, access token or storage identifier.

Current headers such as URL handle, SKU and Price, and common legacy headers such as Handle, Variant SKU and Variant Price, are supported. Product continuation rows and rows containing additional images are treated separately from the first product row.

Copyable example

This fictional update changes an option value, clears a vendor, reduces prices and changes a product to draft. Only price and inventory changes were intended.

{
"currentCsv": "URL handle,Title,Description,Vendor,Option1 name,Option1 value,SKU,Price,Inventory quantity,Status\nlinen-shirt,Linen shirt,Lightweight everyday shirt,North Studio,Size,S,SH-001-S,79.90,12,active\nlinen-shirt,,,,Size,M,SH-001-M,79.90,8,\ncanvas-tote,Canvas tote,Reusable cotton tote,North Studio,Title,Default Title,TB-010,29.90,40,active\n",
"proposedCsv": "URL handle,Title,Description,Vendor,Option1 name,Option1 value,SKU,Price,Inventory quantity,Status\nlinen-shirt,Linen shirt,Lightweight everyday shirt,,Size,Small,SH-001-S,7.99,12,active\nlinen-shirt,,,,Size,M,SH-001-M,79.90,8,\ncanvas-tote,Canvas tote,Reusable cotton tote,North Studio,Title,Default Title,TB-010,0.00,40,draft\n",
"mode": "update",
"priceChangeThresholdPercent": 30,
"expectedChangedColumns": ["Price", "Inventory quantity"],
"maxRows": 10000
}

The current ruleset produces this summary for that input:

[
{
"schemaVersion": "1.0",
"status": "review_required",
"rulesetVersion": "2026-09-10.1",
"proposedRows": 3,
"currentRows": 3,
"products": 2,
"variants": 3,
"errors": 0,
"warnings": 8,
"info": 0,
"comparisonAvailable": true,
"issueCount": 8,
"changeCount": 5
}
]

The five changes are accompanied by eight warnings because one change can trigger more than one check. For example, setting the tote's price to zero triggers both a zero-price warning and a price-drop warning.

API, n8n and Make

Use the example JSON object above directly as the POST body, without an INPUT wrapper. Store authentication in your workflow's credential manager.

POST https://api.apify.com/v2/actors/mathe_carv~shopify-csv-change-review/runs?build=0.1.2&memory=512&timeout=60&maxTotalChargeUsd=0.50&restartOnError=false&waitForFinish=0
Content-Type: application/json
Authorization: Bearer <your protected Apify credential>
GET https://api.apify.com/v2/actor-runs/<runId>?waitForFinish=30
GET https://api.apify.com/v2/key-value-stores/<defaultKeyValueStoreId>/records/<filename>
GET https://api.apify.com/v2/datasets/<defaultDatasetId>/items?format=json&clean=true
  1. Configure an HTTP request in n8n or Make with the POST URL and JSON body. The response describes a run; it is not the report.
  2. Save data.id as runId, plus data.defaultKeyValueStoreId and data.defaultDatasetId. Poll that run until terminal. Do not repeat a POST with an uncertain outcome: reconcile it first to avoid another chargeable run.
  3. After SUCCEEDED, retrieve REPORT.json, REPORT.html, CHANGES.csv and ISSUES.csv using the store ID. The JSON report is an object; the dataset contains one summary. A successful run without report files is not completed delivery.
  4. Map summary and truncated into your review workflow or Google Sheets, updating by runId to avoid duplicate rows. Keep human review before importing. These n8n/Make workflows have not been tested for this Actor.

See the official run API, file retrieval, n8n integration and Make integration.

Pricing and completed reports

US$0.50 per completed comparison, including platform usage. Pay-per-event pricing is active. Check the price shown in Apify before starting a run; the minimum run budget is US$0.50.

One completed comparison produces one report, whether you supply one CSV or a pair, within the limits above. The price is per completed report, with no charge per row, issue or change. All four downloadable report files are included, with no separate platform usage fee.

A completed report is chargeable when it contains validation errors or warnings, finds no issues, or has no current export to compare. A parseable current file that cannot be compared reliably can also produce a chargeable report explaining that limitation. A report with explicitly truncated issue or change details is still a completed, chargeable report. Input rejection before report generation does not trigger the report fee. If the run budget cannot cover one complete report, the Actor stops without producing or charging for that report.

No separate trial allowance is implemented. The documented input and output limits apply equally to users of different plans. Any available Apify account credits are governed by Apify's plan terms.

Interpret the result

review_required means a covered check needs attention. no_detected_issues means this ruleset found no issue; it does not approve an import or guarantee that it is safe. Check comparisonAvailable to confirm that a current-export comparison actually occurred.

Missing columns and empty cells can have different meanings during an update. An absent row alone does not prove that Shopify will delete a product or variant. Matching uses product handles and option values, with unique SKU evidence for potential option changes. Ambiguous matches are reported instead of guessed.

The full JSON report includes the ruleset version, coverage limitations and truncation flags. Reports include at most 5,000 issue details and 5,000 change details. The summary retains the full detected counts. If details were truncated, do not treat the visible list as complete; review smaller files while keeping all rows belonging to each product together. Each additional completed report follows the same pricing rule.

Coverage and data handling

This version checks selected CSV formatting, product and variant dependencies, and before/after differences. It does not simulate Shopify's full importer or validate every metafield, market, sales channel, inventory location, image URL or third-party app dependency. A CSV alone cannot prove every variant identity mapping or external integration consequence.

No automatic correction or import file is produced. Keep a fresh export, inspect flagged differences and follow Shopify's import guidance before making changes to a store.

On Apify, the supplied CSV text and generated reports are stored in the run's default storages under the customer's account settings. Do not include passwords, API tokens or unrelated personal data. For a reproducible support example, replace sensitive catalog values with fictional values while preserving the relevant CSV structure.

The rules were checked against Shopify's product CSV documentation on September 10, 2026. This product is independent and is not endorsed by Shopify.