Shopify CSV ChangeGuard — Price & Overwrite Risks avatar

Shopify CSV ChangeGuard — Price & Overwrite Risks

Pricing

$1,500.00 / 1,000 csv change-risk reports

Go to Apify Store
Shopify CSV ChangeGuard — Price & Overwrite Risks

Shopify CSV ChangeGuard — Price & Overwrite Risks

Compare AI-edited Shopify product CSVs before import: price drops, blank overwrites and variant identity risks. Structured BLOCK/REVIEW results. $1.50/report, usage included. No store login.

Pricing

$1,500.00 / 1,000 csv change-risk reports

Rating

0.0

(0)

Developer

black cow

black cow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

Before importing an edited product CSV, compare it with your original export. Find accidental price jumps, blank overwrites, and variant identity changes without connecting your store.

$1.50 per completed report. Platform usage included. No per-row fee. The synthetic demo has no report event charge. A completed report with warnings or errors is still a report; malformed or unsupported input is rejected without a custom report charge. Your own build/run/storage use is subject to your Apify plan.

For AI agents: review CSV edits before a Shopify import

Use this tool after an agent edits a Shopify product CSV and before the operator decides whether to import it. It compares the original export with the proposed file, without changing either file or the store. For a single-file format check, use the separate Preflight product linked below.

Find Shopify CSV ChangeGuard through Apify MCP, or connect the specific Actor tool. Search/details can be anonymous; execution needs the customer's authorized Apify authentication or a supported agentic payment flow. Use the customer's budget, never a developer's shared token. Being discoverable does not mean a payment has occurred.

  1. Read the input schema and price. Use {"mode":"demo"} only to inspect synthetic output; do not attach real CSVs to demo mode.
  2. For actual files, explicitly set mode="compare" and supply both CSV texts. Confirm same_currency=true only when the operator knows the currency matches. Keep partial_update for a subset of the catalog.
  3. Before running, authorize the $1.50 report price in the customer's workflow. A report with risks is billable. A new run is a new report: do not retry successful runs to retrieve output; read the existing run's result. This product does not deduplicate billing across separate runs.
  4. Check complete, report_kind and workflow.decision before reading the findings. A synthetic report is not a validation of customer files. On REJECTED, inspect the fixed error message; no custom report event was charged.
  5. Use issue_counts_by_code for complete counts even if issues_truncated=true. Individual findings locate the physical CSV line and known field without echoing raw values. Consult coverage for price comparison and unverified areas.
DecisionMeaning for the calling workflow
BLOCKErrors were found. Hold the proposed import and correct the flagged problems.
REVIEWWarnings need review, including unconfirmed currency or identity changes.
NO_FLAGGED_RISKSImplemented checks found no warning/error. Review unverified scope; this is not permission or a guarantee to import.
REJECTEDNo completed comparison. Correct the input before requesting a new report.

workflow.import_authorized is always false. Shopify permissions, live store state and the final import decision remain in the customer's workflow. Existing report fields and schema_version=1 remain compatible; workflow version 1, coverage and code counts are additive.

Synthetic compare request ($1.50 report event)

{
"mode": "compare",
"baseline_csv": "Handle,Title,Option1 Name,Option1 Value,Variant Price,Vendor,Variant SKU\nlinen-shirt,Linen shirt,Size,S,30,Studio,SHIRT-S\n",
"candidate_csv": "Handle,Title,Option1 Name,Option1 Value,Variant Price,Vendor,Variant SKU\nlinen-shirt,Linen shirt,Size,S,3,,SHIRT-S\n",
"comparison_mode": "partial_update",
"same_currency": true,
"price_change_percent": 20,
"delete_input_after_read": true
}

Expected summary: report_kind="customer_comparison", complete=true, status="FAIL", workflow.decision="BLOCK", and counts BLANK_OVERWRITE: 1, PRICE_JUMP: 1. Here “customer_comparison” identifies compare mode, not proof of an external customer or revenue. The files above are synthetic. Try the saved CSV price-drop example or use the free synthetic demo first.

Example: catch a 90% price drop before import

The included demo changes a shirt price from 30 to 3 and clears its vendor. The report flags PRICE_JUMP at -90% and BLANK_OVERWRITE, with file and row references. It does not return the original cell values.

Run it

  1. Choose Try synthetic example to see the output first.
  2. Choose Compare my two CSV files, and paste the original and proposed product CSV texts.
  3. Keep Partial update when the proposed CSV intentionally includes only some products. Use Full snapshot to report unmatched baseline rows.
  4. Confirm Both files use the same store currency to enable price percentage comparisons. The default warning threshold is 20% in either direction; adjust it to your workflow.
  5. Open Risks by row in the output dataset. Use file/row/field references to inspect your original files. Download the full report from the run output.

Import assumption: You intend to select Shopify's overwrite-matching-handles option. If that option is off, matching existing products are ignored by Shopify. An omitted column differs from a blank cell. Missing CSV rows are never labeled as product deletions.

What it checks

  • Price increases/decreases at or above your threshold, prices changed to zero, and undefined changes from zero.
  • Previously populated known fields changed to blank, with separate product-level and variant-level handling.
  • Option/handle changes suggested by a unique SKU; SKU is supporting evidence, not Shopify's update key.
  • Duplicate variant keys and duplicate SKUs; ambiguous matches are not guessed.
  • Missing variant dependencies, malformed monetary values, formula-like cells, and omitted columns.
  • Full-snapshot rows that are unmatched, with a warning that CSV omission does not delete products.

Continuation rows and image-only rows are handled separately. Reordered variants do not turn structural blank product cells into overwrite warnings.

Limits and privacy

  • UTF-8 CSV, at most 8 MiB per file, 12 MiB combined, 50,000 rows per file, 128 columns, and 128 KiB characters per field.
  • Reports contain at most 500 findings; counts still include additional findings. Decimal price comparisons accept up to 18 integer and 8 fractional digits.
  • No Shopify login, API key, external AI, URL fetching, or automatic modification of products/files.
  • Apify receives the supplied input. Remove this run’s input record after reading defaults to enabled. Disable it only if you need the original input retained for reruns. Removal covers this run's INPUT record, not backups or other copies.
  • Reports omit raw product names, SKUs, prices, URLs, and unknown column names. Findings can contain percentage changes and row counts. Protect report access links.
  • Do not submit customer, payment, credential, or confidential personal data. Recognized private-data columns are rejected, but this is not a universal personal-data detector.
  • Unknown/metafield/market-specific columns, remote image availability, live store state, third-party app behavior, and actual Shopify import acceptance are not verified. A PASS means no flagged issue in the implemented checks, not guaranteed import safety.

For checking the format of a single file, use Shopify Product CSV Preflight. ChangeGuard compares the impact of edits between two files.

Offline use

The source package's local CLI needs Python 3.12 or newer and no third-party packages. It makes no network requests and does not read environment credentials.

python -m catalog_changeguard examples/baseline.csv examples/candidate.csv --same-currency
python -m catalog_changeguard before.csv after.csv --same-currency --threshold 20 --report report.json

The report path must be new; output files are created with user-only permissions. Exit codes: 0 for PASS/WARN, 1 for a completed FAIL report, 2 for rejected input or file errors. No CSV rewrite is produced.

Rules are grounded in Shopify's product CSV documentation. This product is independently developed and is not affiliated with Shopify.