Shopify CSV Change Review
Pricing
$0.50 / completed comparison
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
Maintained by CommunityActor 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
- Keep a fresh product export from your store. Paste its contents into Current product export.
- Paste the proposed import file into Proposed product CSV. Select whether you intend to update existing products or create new ones.
- 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. - 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
| Output | Contents |
|---|---|
| Readable review report | HTML showing the summary, detected issues and before/after changes. |
| Complete JSON report | Structured issues, changes, summary, rules version and coverage limitations. |
| Detected changes CSV | One row per reported change, with original and proposed values. |
| Detected issues CSV | One row per reported issue, with severity and explanation. |
| Comparison summary | One 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
| Field | Purpose |
|---|---|
proposedCsv | Required UTF-8, comma-separated product CSV text, including its header. |
currentCsv | Optional current product export. Supply it for before/after comparison. |
mode | update for existing products, or create for new products. Default: update. |
expectedChangedColumns | Optional 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. |
priceChangeThresholdPercent | Warn about comparable price drops at or above this percentage. Default: 30. Values above 100 suppress these warnings. |
maxRows | Maximum 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=0Content-Type: application/jsonAuthorization: Bearer <your protected Apify credential>GET https://api.apify.com/v2/actor-runs/<runId>?waitForFinish=30GET https://api.apify.com/v2/key-value-stores/<defaultKeyValueStoreId>/records/<filename>GET https://api.apify.com/v2/datasets/<defaultDatasetId>/items?format=json&clean=true
- 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.
- Save
data.idasrunId, plusdata.defaultKeyValueStoreIdanddata.defaultDatasetId. Poll that run until terminal. Do not repeat a POST with an uncertain outcome: reconcile it first to avoid another chargeable run. - After
SUCCEEDED, retrieveREPORT.json,REPORT.html,CHANGES.csvandISSUES.csvusing the store ID. The JSON report is an object; the dataset contains one summary. A successful run without report files is not completed delivery. - Map
summaryandtruncatedinto your review workflow or Google Sheets, updating byrunIdto 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.