YOUR DATA, WITH A SECOND PAIR OF EYES

From spreadsheet
to store-ready.

Map the columns. Check the actual values. Resolve the exceptions.
Export a file built for your Shopify or WooCommerce importer.

Your file stays in this browser. No spreadsheet uploads to a server.English · CSV & Excel · No store writes
01 / SET UP

What are we preparing?

Google fields, source currency & comparison settings

Google attributes stay in the same product file. Unavailable or unsupported fields are reported; the app never invents barcodes, gender, age group, or a taxonomy assignment. A price comparison needs a sufficiently similar, explicitly identified group.

Bring your spreadsheet.

Drop a file here, or choose one below.

Up to 10 MB · 5,000 data rows · 200 columns · .xlsx, .csv, .tsv
Just exploring?

Choose a file to begin. Your original file will not be changed.

Compare with a trusted reference sheet optional

Use a store export or supplier master to check identity and values. Matches require a unique SKU, store ID, email, or category identity. A reference is evidence you provide, not a live store connection.

No reference loaded. External values are not verified.

BUILT-IN SAFEGUARDS

Four layers of checking.

Each result explains the concern, the affected rows, and what to do next.

01

File & mapping

File integrity, broken CSV quotes, duplicate headers, merged cells, formulas, hidden rows, missing mappings, and identifier precision.

02

Values & logic

Missing or invalid fields, money and quantities, barcode checks, consent, date order, price calculations, and unsafe cell content.

03

Relationships

Duplicate identities, supplier and category conflicts, variants, unusual sibling prices, category hierarchies, and overlapping offers.

04

Destination & evidence

Required importer fields, supported structures, same-sheet Google attributes, omitted data, and checks that need a trusted reference.

Read the complete rule guide and limits ↓ · Warnings are review prompts, not automatic corrections.

EDIT MAPPED VALUES

Review source row

START WITH AN EXAMPLE

Sample sheets

Load these fictional sources in the workspace to try the real mapping, checks, editing, and export flow. Replace all sample data before any live import.

Keep identifiers as text. Source files are examples, not finished destination imports. Read the sample guide.

HOW IT WORKS

User manual

A practical guide to every step, the actual values being checked, and the limits of those checks. Download the manual · Download the rule catalog.

1. Start with the right sheet

Use Back to Musa's Portfolio in the top menu to return to the main or Work portfolio you came from. The choice is remembered for this tab when browser storage is available. Direct visits default to the main portfolio.

  1. Choose Products, Categories, Customers, or Deals. Changing the sheet type clears the current workspace so unrelated records cannot be mixed accidentally.
  2. Choose the destination importer and whether you are creating records or updating existing ones. Read the destination note and its official guide. Guided mapping destinations still require you to map the generated columns inside that plugin.
  3. Choose the actual store currency for product exports. If source cells lack a currency, set a confirmed source currency in the advanced settings; otherwise those amounts remain unverified. A mapped source currency takes precedence over that source default. Choose the number convention used in text cells: 1,234.56 or 1.234,56. The app never converts currencies.
  4. Choose a CSV, TSV, or XLSX file, drop it on the upload area, or load a fictional sample. The original file is never modified.
  5. For Excel workbooks, confirm the selected sheet and header row. The app suggests a sheet and header based on recognized column names. A suggestion is not proof that it chose the correct table.
  6. Review automatic column matches, apply mapping, resolve issues, inspect the exact export columns, and download your prepared file.

Limits are 10 MB per file, 5,000 nonempty data rows, 200 columns, and 30 workbook sheets. Header rows can be selected from rows 1–50. Workbooks that expand beyond 80 MB, inconsistent archive sizes, ZIP64, streamed archive entries, macros, embedded files, password protection, and malformed CSV are rejected. Unsupported streamed or ZIP64 files can be saved again as a standard data-only XLSX or CSV; rejection does not prove malicious content. Old XLS files must first be saved as XLSX or UTF-8 CSV. Large or unusually structured files should be split into simple tables.

2. Understand automatic mapping and value filling

Automatic mapping compares column labels with known field names and aliases. An exact match and an alias suggestion are labeled separately. Ambiguous or duplicate names require a choice. Always distinguish regular price, sale price, cost, pack price, and a deal’s complete offer price.

Choose a source column for each destination field. The sample value under the selector helps distinguish similarly named columns. Use Show every available field to review less common fields, including IDs, variants, addresses, and Google attributes. Apply mapping rebuilds the records from the original sheet and clears earlier edits and review decisions. Unassigned source columns are preserved in the edited-source workbook and reported as omissions before an importer export.

Blank means unknown, not zero or false. The app does not invent names, prices, product families, barcodes, consent, or approvals. Fill evidence-backed blanks uses exact complete category paths found in the official bundled taxonomy and explicit Color, Size, Material, or Pattern variant options. It does not classify products from marketing language or guess gender and age. Existing nonblank values are never overwritten by this action.

Shopify product taxonomy is separate from a supplier’s category, a WooCommerce category, and a Shopify collection. The Shopify product category field has its own official category choices. A custom source label does not automatically become a valid Shopify taxonomy assignment. In the row editor, type part of a category path and choose the correct full path. Taxonomy membership confirms a recognized category, not that it is the correct classification for the product.

3. Compare with a trusted reference

The optional reference upload accepts a store export or supplier master. Confirm its sheet, header row, and mappings before relying on it. Products match using compatible SKU, product ID, variant ID, and valid barcode evidence; customers by compatible store ID, address ID, or email; categories by an unambiguous ID, slug, or exact name-and-parent identity. Product names alone do not establish identity.

Conflicting reference matches block use of an ambiguous identity. Differences in names, brands, suppliers, categories, prices, costs, currencies, packs, addresses, or consent are shown for review. The app does not decide which document is newer or more authoritative.

Fill verified blanks copies only blank fields from a unique, compatible reference match. It preserves existing values and does not fill system IDs, customer consent, approval assertions, or approval references. Every copied value is recorded with its reference sheet and row. Review the reference’s accuracy and recency yourself; a local match is not independent verification against a live system.

For deals, a reference workbook can also provide Products, Stores, Channels, Agreements, CategoryPolicies, Approvals, ChannelSnapshots, and ComplianceRules. Use the downloadable reference example and keep its sheet names and field headers. Missing reference tables leave the corresponding controls explicitly Not checked. A claimed approval without supporting evidence is not treated as verified approval.

Apply and review the reference mapping before using its values. A product ID can represent several variants; it must be narrowed by compatible SKU/variant/barcode evidence to one row. Conflicting identifiers do not authorize choosing the first match. Product names alone never establish an update identity.

Fill verified blanks requires a unique compatible match. It preserves existing values and does not copy system IDs, customer marketing consent, or approval references. Supplied contradictory names, brand/supplier facts, currency, pack/unit context, tax/price basis, option structure, and customer addresses prevent automatic filling and need a human decision.

Money filling needs an explicit reference currency and, for products, an explicit reference pack quantity. Any pack, tax basis, price basis, or condition already supplied in the source must also have supporting reference context. Missing monetary context produces a REFERENCE_CONTEXT_INCOMPLETE finding and leaves money cells unfilled. The source-currency fallback does not become the reference's currency.

A local exact match does not establish recency, authority, live-store existence, or authenticity. Review every recorded copied value and its source row. Other blank fields can be filled only from compatible unique matches; a missing field is never a reason to invent an identifier or approval.

4. Read the results and resolve issues

Blocker means the current output is unsafe or structurally invalid. Correct the value, correct the mapping, supply the required evidence, change the destination, or exclude the affected record. Blockers cannot be accepted away.

Warning means a value or assumption requires a human decision. Open the affected source row, investigate the concern, and either correct it or record a specific reason for keeping it. Review reasons must contain at least 12 characters and should state what was checked. The optional bulk review action records one reason for the remaining warnings; it does not bypass blockers.

Information explains a transformation or a limitation. Not checked is a coverage state: the app lacked the inputs needed to perform that control. It is not a passing result. Open Checks & coverage to see these limits and the reference-dependent promotion checks.

Every issue has a code and an explanation. Record-specific issues also identify affected fields and source rows. Mapped records can be searched, filtered, edited, restored to source values, or excluded from export. Exclusion is reversible and is listed in the review report. Select records to apply a confirmed category to several rows. Category choices come from the source, a trusted reference, or the official taxonomy appropriate to the target field.

Changing values, exclusions, mappings, references, destination, or comparison settings clears previous review decisions. Changing currency or number convention remaps source values and resets edits. Download the edited-source workbook before rebuilding the mapping if you need to keep those edits.

5. Product values and relationships

Product checks cover missing identity and sellable price, invalid or negative values, zero price, sale price above regular price, cost and margin concerns, stock and pack quantities, weight and units, supported conditions, currency codes, image URL syntax, and malformed or unsafe cell content. Create and update workflows have different requirements; omission during an update is not automatically interpreted as an instruction to clear a stored value.

Identity checks cover duplicate SKUs and IDs, inconsistent names or product facts under the same identity, shared barcodes, same names with different suppliers, brands or categories, and exact duplicate source rows. A matching name is a review candidate, never an automatic merge instruction. Different legitimate products can share a name, and different suppliers can offer the same product.

GTIN checks examine supported length and check digit. Leading zeros are preserved when supplied as text. A valid check digit does not establish barcode ownership or prove that the code belongs to that item. A spreadsheet that already lost zeros or long numeric digits must be corrected from its original source.

Variants are checked for missing or ambiguous parents, self-parenting and cycles, incompatible parent structure, repeated option combinations, duplicate option names, missing option values, and inconsistent family information. Unsupported variant structures block the chosen adapter rather than silently flattening products into incorrect rows.

Descriptions and source URLs are treated as data, not executed in the app. URL syntax does not establish that an image is reachable, publicly accessible, correct, or licensed. Inspect the destination’s image preview and rich-text handling before a production import.

6. Unusual sibling prices

An unusual price can be a valid number and still be a mistake. Comparisons require an explicit product family or parent relationship and compatible brand, currency, pack quantity, tax basis, condition, and price basis. Unknown context does not become an assumed match. Rows with conflicting identities are not reliable comparison evidence.

A candidate does not influence its own reference value. With fewer than two other suitable peers, the row is Not evaluated. With two to four peers, extreme prices outside half the lowest or twice the highest peer are flagged when the minimum absolute difference is also met. With at least five peers, robust median and median absolute deviation checks combine with the selected relative threshold and minimum difference. If all peer prices are the same, the relative threshold and minimum difference still provide a check.

Balanced sensitivity is 50% and the initial minimum difference is 5 currency units. These are visible review settings, not universal business limits. Change them to fit your catalog. The app never compares USD with EUR, converts a single item to a multipack without evidence, or changes an outlier price automatically. Premium variants, clearance items, and supplier differences may be intentional; explain that in the review reason.

7. Category and customer sheets

Category checks cover missing names, invalid or conflicting slugs, duplicate identities, near-duplicate names, ambiguous or missing parents, self-parent links, and circular hierarchies. A missing parent may already exist in the store, so external existence remains unverified without an appropriate snapshot. Shopify collections and taxonomy categories are different concepts. Native product CSV importers are not general-purpose category-definition importers.

Customer checks cover missing identity, email syntax, duplicate or conflicting emails and IDs, suspicious phone values, country and postal context, incomplete addresses, and ambiguous marketing consent. A syntactically valid email or phone number is not confirmed reachable. Similar names do not justify merging customers.

Consent is never inferred from a purchase, a nonempty email address, or an empty cell. Unknown consent stays unknown and requires the destination’s appropriate handling. A Yes value is a source assertion, not legal evidence of permission. Do not use this app as a legal consent audit.

Customer exports can affect personal data. Keep files and reports private. Native Shopify customer overwrite behavior can replace existing customer data; sparse updates are blocked where the adapter cannot safely preserve omitted fields. Use the selective update option described in the destination note and take a backup first.

8. Deals: the complete offer, not one isolated price

A deal row separates regular price per unit, units in the complete offer, any submitted regular offer total, and the submitted promotional offer total. Enter percentages as 20 for 20%, not 0.20 or 20%. Supported calculations include percent off, amount off the complete offer, fixed price, fixed bundle price, BOGO, and buy-X-get-Y discounts. Buy and get quantities must be explicit.

Money calculations use exact decimal fractions and half-up rounding to the currency’s minor unit, including currencies with zero or three decimal places. The app recalculates the complete regular offer, expected promotional total, discount amount, effective discount, cost, gross margin, entered fees, contribution, and contribution margin. It compares calculated totals with submitted totals instead of trusting a typed promotional price.

Missing costs and fees do not become zero. To assert that a particular fee is zero, enter 0. Gross margin and contribution margin are separate. Contribution includes the costs you supplied; it is not net profit and does not invent tax, returns, overhead, shipping, or vendor reimbursement. Negative contribution and a supplied margin-floor breach are flagged. No vendor subsidy is added to profit merely because a deal is marked vendor funded.

The House of Dank control families have been adapted without carrying over fictional business thresholds: required values; catalog identity; product/brand/category match; reference regular price; promotional math; category discount cap; margin; vendor agreement scope; vendor cap; dates and lead time; overlapping offers; exact stores and channels; inventory; channel parity; asset/approval evidence; and configured policies, limits, and stacking. Reference-dependent controls stay Not checked until their evidence is supplied.

Date checks use explicit time zones and validate ordering, offsets, daylight-saving transitions, and supplied lead-time or duration policies. Store and channel codes are matched as exact comma-separated tokens, not partial words. Inventory projections need confirmed scope, stock, baseline velocity, demand multiplier, and dates. Overlaps are checked within the supplied promotion data; existing live promotions outside that data are not known.

A deal output is a planning and QA sheet. Creating a promotion in Shopify or WooCommerce still requires the relevant native discount interface or promotion plugin. A BOGO rule cannot be activated by changing a product price column. Verify stacking, eligible cart lines, customer limits, schedules, taxes, and final checkout behavior in that system before launch.

Every choice below exports the same kind of reviewed planning sheet. None imports or activates a discount configuration. One calculated row describes an offer involving quantities of the same SKU; mixed-SKU baskets and the interactions between multiple discount tiers are not modeled.

ChoiceHow to use the reviewed planWhat still needs checking
Shopify — Promotion planning sheetUse the calculations to choose a native discount or an installed promotion app, then enter the reviewed rule there.Select the exact products, customer eligibility, channels, schedule, and combination policy. This generic sheet is not a Shopify discount CSV.
WooCommerce — Promotion planning sheetDecide whether the offer is a normal coupon or needs a discount extension, then transfer its reviewed inputs.Coupon amount semantics, affected items, limits, and automatic-application behavior differ by system.
Shopify — Native discountsIn Discounts, create the relevant amount-off or Buy X Get Y rule, choose code/automatic method, and set the qualifying and discounted items, quantities, combinations, and dates.Native Buy X Get Y does not automatically add the get item to the cart. Check store time zone and POS eligibility; test a qualifying and a nonqualifying cart.
Shopify — BundlerCreate the intended bundle or volume discount, choose real products and required quantities, and select percentage, amount off, or final bundle price.Those three values mean different things. Confirm the installed plan, bundle conditions, priority, and the complete cart total. Do not use this single-SKU calculator as a mixed-product cost model.
Shopify — Discount NinjaConfigure the offer, then its trigger: audience, schedule, usage conditions, and combinations.Verify Online Store checkout behavior and interactions with other promotions. A planning file does not change catalog prices or establish other-channel coverage. Vendor channel limits
WooCommerce — Native couponsIn Marketing → Coupons, set percentage, fixed-product, or fixed-cart type; then restrictions, limits, and schedule.Fixed-product discounts apply per eligible item; fixed-cart discounts apply to the cart total. Native coupons do not automatically apply. BOGO/quantity-bundle rules need an extension. The selected expiry date is the first invalid day, so translate an inclusive plan end date deliberately.
WooCommerce — Flycart Discount RulesAdd a rule; choose product adjustment, bulk, bundle/set, or Buy X Get X/Y; configure filters, quantity counting, value, conditions, and repeat behavior.For the same-SKU BOGO modeled here, review Buy X Get X. Confirm the Pro features needed by your selected rule and test threshold quantities and exclusions.
WooCommerce — Advanced CouponsCreate the BOGO coupon; define Customer Buys and Customer Gets, quantities, discount, and once/repeat limits.Match the intended product/variation and review BOGO combination limits. Auto-apply needs corresponding Cart Conditions and the appropriate enabled feature; it is not caused by uploading this planning sheet.

The app's date-only deal end includes the stated local day; timestamp ends use an exclusive boundary and need an explicit valid offset. Transfer these meanings into the selected promotion system instead of copying a date without checking its cutoff.

For a fixed discount, distinguish the complete offer amount from a per-item discount. The app's amount_off calculation subtracts from the complete offer. Compare the system's actual eligible cart total with the sheet's expected promotional total before launch.

Missing cost or fees remain unknown. Contribution includes only supplied costs and fees; it is not net profit. Vendor funding, tax, refunds, shipping, and overhead are not invented. Readiness flags and approved-looking reference rows remain assertions whose authenticity you must establish.

9. Google values stay in the product sheet

There is no separate Google feed destination. Choose the Google integration that is actually installed, then review the additional columns within the same product export. Unsupported populated values are reported rather than dropped silently.

Native Shopify CSV supports documented legacy Google Shopping fields, but the Google & YouTube channel does not use those legacy columns as its authoritative settings. Matrixify supports specific Google-shopping metafield conventions. WooCommerce integrations differ: Google for WooCommerce can use configured product attributes for supported fields, while other extensions have their own documented columns or metadata keys. Selecting an integration does not install it or configure its mapping rules.

The bundled Google category list is the official English list retrieved for this release. The bundled Shopify list is stable release v2026-08, not the repository’s unstable branch. Both have source and version metadata in the app’s data files. A category can be recognized by a list and still be unsuitable for the product. Choose its actual category using source evidence.

10. Export and import carefully
  1. Resolve every blocker and record a decision for each remaining warning.
  2. Inspect the output preview: file names, exact headers, row counts, values, and any notes about omitted or transformed fields.
  3. Download the supported file format. A CSV-only importer does not become XLSX-compatible because Excel can open a file. Some destinations require separate parent and variation files; download each file in the stated order.
  4. Download Checks & decisions for the source-row issues, review reasons, exclusions, mappings, coverage, and edit history. The JSON report can contain personal data and should be stored securely.
  5. Download Edited source if you need a text-safe Excel workbook containing your edits, preserved source columns, and exclusion markers. It is not an importer-ready file.
  6. Back up the destination and test a small import. Confirm the importer’s matching, blank-cell behavior, category mapping, variant relationships, images, consent, and status preview before importing the full file.

Create adapters use draft or unpublished status where the destination supports it. An importer preview and a successful file download do not prove a live store import succeeded. Guided mapping profiles need configuration in their plugin; they are not certified integrations with every version or add-on. Updates require a reliable destination identity; product names are not a safe overwrite key.

There are twelve product choices. “Documented format” means the app emits the supported native header structure. “Guided mapping” means it prepares meaningful source columns that you must map inside the selected plugin; it is not an invented plugin template or a certified store integration.

PlatformDestinationPreparation and setup
ShopifyNative CSVDocumented product CSV. New products use draft/unpublished settings. Updates need an explicit existing handle and the actual option identities; preserve the intended product family.
ShopifyMatrixifyDocumented Products sheet with explicit NEW/UPDATE commands and supported variant identities. Review product-versus-variant field scope and any separate files.
ShopifyHextom Bulk Product EditGuided mapping. Choose the correct edit, add-product, or add-variant job and configure matching.
ShopifyAblestar Bulk Product EditorGuided mapping. Confirm its identifier column and whether changes belong to products or variants; use the appropriate creation/editing workflow.
ShopifyStock SyncGuided mapping. Add and Update jobs have different behavior; configure the actual match key and mapped fields.
ShopifyStoreRoboGuided Custom CSV mapping. Confirm ID/Handle matching and publishing settings.
WooCommerceCore CSVDocumented native product CSV. Explicit parents precede variations. A flat family of option rows must not silently become unrelated simple products.
WooCommerceWebToffeeGuided Advanced import mapping. Confirm the installed edition; variations, metadata, and Excel features can require Pro.
WooCommerceWP All ImportGuided mapping. Choose the import type, stable record identifier, existing-record match, and permitted updates.
WooCommerceProduct CSV Import SuiteIts own documented lowercase schema. Product and variation imports are separate; use the appropriate merge action for updates.
WooCommerceUltimate CSV ImporterGuided mapping to its WooCommerce module and product-type conventions. Confirm required Pro/module features.
WooCommerceWP Sheet EditorGuided Products spreadsheet mapping based on the actual store's available columns and matching settings.

Read the official guide linked next to the selected destination. Download only a format that profile supports. A CSV-only importer does not gain Excel support because Excel opens its CSV.

Keep separate output files separate and import in the listed order. Different column sets deliberately preserve omitted update values; joining the files can introduce blank cells that clear data.

Standalone category choices are Matrixify Custom Collections and the mapped WP All Import taxonomy workflow. Shopify Custom Collections are flat collections, not editable Shopify taxonomy entries. Standalone customer choices are native Shopify creation, Matrixify, WP All Import with the required user/customer setup, and WooCommerce Customer CSV Import Suite mapping. Native WooCommerce product CSV is not a standalone customer or category importer.

11. Privacy, safety, and recovery

Spreadsheet parsing, mapping, checks, and file generation happen in your browser. The app does not send source rows, customer data, or reference data to an AI service or a store. It uses locally hosted spreadsheet code and taxonomy lists. Normal page and static-asset requests still go to the website host.

Data and review decisions are held only in the current page session. They are not automatically saved to an account, database, or browser storage. Download your edited source and report before reloading or closing. Clear workspace removes the in-memory data; it cannot remove copies you downloaded or data retained elsewhere by your browser or operating system.

CSV cell values that could become spreadsheet formulas are checked. Excel formulas are not executed; only saved cached results can be read, and they require review. Error cells, missing cached results, uncertain numeric identifiers, and merged or hidden content receive explicit findings. Text-safe XLSX downloads retain strings as text. Do not open an unreviewed external CSV in a spreadsheet program that evaluates formulas.

If a file fails, read its error message and fix the source rather than forcing the import. Common fixes are saving as UTF-8 CSV, removing password protection, choosing the correct header row, unmerging cells, reducing unused formatted ranges, and restoring lost identifiers from the supplier’s original data.

The app does not execute source formulas. Cached formula results need review; absent/error results cannot supply trusted values. Formula-like output text is blocked, including provenance values such as a worksheet name. Accepting a warning is not a way to permit executable CSV content. Correct the intended plain text or source metadata deliberately; do not silently strip characters from an identifier.

An explicit source-value correction can resolve a current blocker while retaining the original parser finding as provenance information. Restoring the original value brings its applicable blocker back. Correction does not mean the original file was safe or verified.

CSV has no cell types. Import identifiers as Text when opening it in a spreadsheet application. Text-safe XLSX preserves strings as text, but cannot recover digits or leading zeros already lost in the original source.

Edited source is a recovery workbook, not an importer file. If several mapped fields share one source column and their edited values differ, the original shared column is retained and separate Prepared fields preserve the differing edits. Review those fields when mapping the recovery workbook again.

Some XLSX archive formats, including ZIP64 and streamed entries with data descriptors, are intentionally unsupported. If the app reports this format limitation, save a new standard data-only XLSX or UTF-8 CSV and retry. Rejection does not by itself prove that a workbook is malicious.

12. Samples, scope, and quality evidence

Sample sheets are fictional, designed to demonstrate both useful inputs and deliberate mistakes. Sample identifiers and check-digit-valid barcodes are not proof of assigned real-world identifiers. Never import sample customers, products, or promotions into a live store without replacing them with approved data.

Start with a clean sample, then load a mistakes sample to see the warnings. Categories, customers, products, and deals each have examples. The reference workbook demonstrates how optional evidence unlocks additional checks. A clean sample can still show review warnings about unknown business context, unmapped teaching columns, or importer setup; “clean” means its main demonstration values are intentional, not that every real-world fact is verified.

The release QA report records the actual test runs. Automated checks test the implemented logic, parsing and generated values; browser checks test the working user flow. They do not certify every plugin version, every possible spreadsheet, legal compliance, or a live store that has not been connected. The per-rule catalog below documents implemented findings and their practical limits.

The release QA record identifies the exact source version, completed test runs, failures, and remaining checks. Ten varied module rounds and exporter test groups cover specified cases; they are not ten live store imports and not a percentage guarantee that every possible error will be detected.

Module results, actual-file parsing/export checks, browser workflow checks, public deployment checks, and test-store import/re-export are separate evidence. Do not claim one from another. A code change needs the relevant tests rerun. An unfinished or unrun test must remain identified as such; missing external evidence remains Not checked.

13. Product, category & customer rule catalog (86 findings)

These are implemented rule definitions, not a claim that every rule applies to every row. A control is useful only when the relevant fields or context exist.

CodeLevelWhat to check and how to resolve it
RECORD_ID_DUPLICATEblockerSource row identifiers overlap
Two records have the same review ID, making approvals and exclusion ambiguous.
STORE_ID_DUPLICATEblockerOne store ID is used by multiple records
A target entity must not receive ambiguous repeated rows.
IDENTIFIER_FORMATwarningIdentifier formatting needs review
Scientific notation or numeric coercion may have changed an identifier; lost digits are never reconstructed.
FORMULA_LIKE_TEXTwarningA cell could be interpreted as a spreadsheet formula
Preserve source text and use safe destination-aware handling; this module does not execute or silently prefix it.
DUPLICATE_ROWwarningA complete record is repeated
Identical data may produce repeated creates; continuation records are excluded.
UPDATE_REFERENCE_UNCHECKEDinfoExisting-store matching was not checked
No store snapshot was supplied, so existing identity and before-values are unverified.
UPDATE_BLANK_SEMANTICSwarningReview how blank update cells are handled
Omitted source values are not automatic instructions to clear existing data; the exporter must preserve update intent.
NAME_MISSINGblockerProduct name is missing
A new product needs a sourced name, directly or from an explicit parent.
SKU_MISSINGwarningSKU is missing
A SKU is useful for reliable matching; an importer may impose a stricter requirement.
MATCH_KEY_MISSINGblockerAn update has no stable target key
Map an existing store ID, variant ID, SKU, handle, or kind-specific identity.
SKU_CONFLICTblockerThe same mapped SKU appears in multiple records
Supplier SKUs are scoped to suppliers; review collisions instead of using row order or silently merging.
HANDLE_CONFLICTblockerOne product handle has conflicting titles
A handle groups one product in applicable importers; do not silently select the first conflicting title.
NAME_SUPPLIERwarningSame product name, different suppliers
This may be legitimate multiple sourcing or different items; names alone do not prove identity.
NAME_CATEGORYwarningSame product name, different categories
Different category membership may be valid; review the full category sets and identifiers.
NAME_BRANDwarningSame product name, different brands
A shared name is weak evidence; verify brand and product identity.
NAME_PACKwarningSame product name, different pack quantities
Different packs can be distinct products and must not be compared or merged automatically.
NAME_MATCH_UNRESOLVEDwarningSame name without a confirmed variant relationship
Review duplicate retail items, separate products, or supplier offers; no automatic merge.
GTIN_INVALIDwarningGTIN format or checksum is invalid
Only syntax and check digit are tested; this does not verify GS1 assignment.
GTIN_REUSEDwarningA barcode is reused by different records
Multiple offers may share a genuine barcode; resolve identity before counting them as independent price peers.
GTIN_CONFLICTblockerA barcode has conflicting brand or pack data
Conflicting supplied identity facts need a reviewed decision; packaging-level exceptions require evidence.
MODEL_GTIN_CONFLICTwarningA manufacturer model has different barcodes
Matching brand/model/options/pack may have valid regional identifiers or a source error.
CATEGORY_MISSINGwarningProduct category is missing
Offer sourced category choices; do not invent a taxonomy value.
SHOPIFY_CATEGORY_MISSINGwarningShopify standard product category is missing
Source or Woo categories are not automatically Shopify taxonomy values; choose a supported target category.
PRICE_MISSINGblockerSelling price is missing
A new sellable product needs an explicit regular price under this app safety policy.
PRICE_INVALIDblockerPrice is invalid
Use a finite nonnegative amount in the selected decimal style and safe monetary range.
PRICE_ZEROwarningThe product price is zero
Confirm that free pricing is intentional; blank and zero are different.
PRICE_PRECISIONwarningMoney has more than two decimal places
Review the destination currency precision and rounding before export.
SALE_PRICE_INVALIDblockerSale price is invalid
A supplied sale price must be finite, nonnegative, and safely representable.
SALE_NOT_LOWERwarningSale price is not lower than regular price
Review swapped columns or an intentional no-discount state.
SALE_PRICE_ZEROwarningSale price makes the item free
A supplied zero sale price is different from no sale price.
COST_INVALIDblockerCost is invalid
A supplied cost must be finite and nonnegative.
BELOW_COSTwarningSelling price is below the entered cost
Compare the same unit, currency, and tax basis; this is not a complete profit calculation.
CURRENCY_FORMATblockerCurrency format is invalid
Use a three-letter currency code; assignment and exchange rates are not verified.
CURRENCY_UNRECOGNIZEDwarningCurrency code is not recognized by this runtime
A three-letter shape alone does not establish a supported currency; verify the code and importer currency settings.
CURRENCY_MISSINGwarningPrice currency is unknown
Choose an explicit file currency or source column before interpreting cross-record prices.
PACK_INVALIDblockerPack quantity is invalid
A supplied pack count must be a positive whole number; missing is not automatically one.
TAX_BASIS_UNKNOWNwarningTax basis is not recognized
Use an explicit inclusive/exclusive value; unknown context is excluded from price comparisons.
PRICE_BASIS_UNKNOWNwarningPrice context is not recognized
Distinguish regular, sale, retail, and wholesale price contexts.
PRICE_OUTLIERwarningPrice differs sharply from comparable siblings
Leave the candidate out, use compatible explicit family peers, and require statistical/range and monetary thresholds.
PRICE_NOT_EVALUATEDinfoSome prices lack comparable peer evidence
Unknown context, unresolved identity, or too few peers is not a passed price check.
OPTION_INCOMPLETEblockerAn option name or value is missing
A partial option pair cannot reliably define a sellable variant.
OPTION_NAME_DUPLICATEblockerAn option name appears twice
One variant must not assign the same option twice.
VARIANT_DUPLICATEblockerDuplicate options under an explicit product group
Two sellable records claim the same complete option combination.
VARIANT_OPTIONS_MISSINGblockerA variation has no option values
An explicitly declared variation needs a sourced combination.
VARIANT_OPTION_SCHEMAblockerVariants disagree about their option names
An explicit parent group needs a consistent option structure.
PARENT_MISSINGblockerReferenced parent is absent from this file
Include the parent or use a reviewed existing-parent update workflow; no store lookup is claimed.
PARENT_UNCHECKEDwarningExisting parent was not checked
An update references an external parent without a supplied store snapshot.
PARENT_AMBIGUOUSblockerParent reference matches multiple records
Resolve the parent identity before exporting its children.
PARENT_SELFblockerA product references itself as parent
Self-parent relationships cannot form a valid variant graph.
PARENT_CYCLEblockerProduct parent relationships contain a cycle
Break the cycle and keep dependent records together for review.
PARENT_TYPE_CONFLICTblockerThe referenced parent has an incompatible structure
A simple/variation record cannot be used as an explicit variable parent.
STOCK_INVALIDblockerStock quantity is invalid
A supplied quantity must be a finite safe whole number for these import profiles.
STOCK_NEGATIVEwarningStock quantity is negative
This may represent backorders; confirm the inventory policy instead of forcing zero.
WEIGHT_INVALIDblockerWeight is invalid
A supplied weight must be finite and nonnegative.
WEIGHT_UNIT_MISSINGwarningWeight unit is unknown
Map the unit explicitly; this module does not guess kilograms or grams.
WEIGHT_UNIT_UNKNOWNwarningWeight unit needs destination review
Only g, kg, lb/lbs, and oz are recognized here; no conversion is performed.
IMAGE_URL_INVALIDwarningAn image URL is malformed or not public HTTP(S)
This checks URL structure only, not accessibility, file type, or licensing.
IMAGE_DUPLICATEwarningAn image URL is repeated
Review repeated images within one product; no automatic removal.
GOOGLE_GENDER_INVALIDwarningGoogle gender value is not recognized
Use male, female, or unisex only when supplied by reliable product data.
GOOGLE_AGE_INVALIDwarningGoogle age group is not recognized
Use a supported supplied value; never derive age from a product name alone.
CONDITION_INVALIDwarningCondition is not recognized
Use new, used, or refurbished when supported; unknown condition is excluded from peer groups.
GOOGLE_OPTION_CONFLICTwarningGoogle attribute conflicts with a supplied option
Review color/size differences in the same product sheet.
GOOGLE_CATEGORY_MULTIPLEwarningGoogle category appears to contain multiple values
Google category is a single taxonomy value, separate from Woo category membership.
TAXONOMY_UNCHECKEDinfoOfficial taxonomy membership was not checked
Supplied category text is preserved; no category registry was loaded.
CATEGORY_NAME_MISSINGblockerCategory name is missing
A new category needs a supplied name.
CATEGORY_SLUG_FORMATwarningCategory slug may be rewritten by the destination
Whitespace or URL delimiters need review; do not silently slugify.
CATEGORY_SLUG_DUPLICATEblockerCategory slug is reused
A slug collision makes category identity ambiguous.
CATEGORY_DUPLICATEwarningCategory name is repeated under the same parent
Review duplicate branches while preserving legitimate same-name leaves under different parents.
CATEGORY_NEAR_DUPLICATEwarningCategory labels look similar
Punctuation, spacing, case, or a one-character typo can create duplicate categories; no automatic merge.
CATEGORY_PARENT_MISSINGwarningCategory parent is not present in this file
It may already exist in the store; that external reference was not verified.
CATEGORY_PARENT_AMBIGUOUSblockerCategory parent reference is ambiguous
Use an unambiguous slug, ID, or full path to distinguish same-name branches.
CATEGORY_CYCLEblockerCategory hierarchy contains a cycle
Self-links and cyclic parent paths must be corrected.
CUSTOMER_CONTACT_MISSINGblockerCustomer has no contact identity
Supply a valid email, phone, or known store ID; never invent an address.
CUSTOMER_NAME_MISSINGwarningCustomer name is missing
A contact may be legitimate, but its name has not been established.
CUSTOMER_EMAIL_INVALIDblockerEmail format is invalid
Only practical syntax is checked; mailbox existence and ownership are not verified.
CUSTOMER_EMAIL_DUPLICATEblockerAn email address appears in multiple customer records
Review repeated customers before choosing a create/update target.
CUSTOMER_EMAIL_CONFLICTblockerOne email has conflicting customer details
Names or supplied addresses conflict under the same contact key.
CUSTOMER_NAME_MATCHwarningSame full name, different contact identities
People can legitimately share a name; never merge from name alone.
CUSTOMER_PHONE_INVALIDwarningPhone format needs review
Accept recognizable local or international numbers without inventing a country prefix.
CUSTOMER_PHONE_CONTEXTwarningLocal phone number has no country context
A local number may be valid, but international interpretation is unknown.
CUSTOMER_PHONE_REUSEDwarningA phone number is shared by different contacts
Shared household/business phones can be legitimate; no automatic merge.
CUSTOMER_ADDRESS_INCOMPLETEwarningAddress is incomplete
A supplied street address lacks city or country; postal deliverability was not verified.
CUSTOMER_COUNTRY_FORMATwarningCountry value needs destination review
A full country name may be accepted by some importers; code-based exporters need an explicit mapping.
CONSENT_UNRECOGNIZEDblockerMarketing consent is ambiguous
An unrecognized value must not become opt-in automatically.
CONSENT_REVIEWwarningPositive marketing consent needs evidence
A source flag alone does not prove permission; no marketing action is performed.
CONSENT_UNCHECKEDinfoBlank marketing consent remains unknown
Missing consent is not false or true and is never defaulted to opt-in.
14. Deal controls and finding catalog

All sixteen original control families are represented; external facts remain Not checked without supplied evidence. Each run shows its actual coverage.

C1 · Required fields and valid values

C2 · Catalog identity

C3 · Product, brand, supplier and category match

C4 · Reference regular price

C5 · Promotion arithmetic

C6 · Category discount cap

C7 · Margin and cost coverage

C8 · Vendor agreement coverage

C9 · Vendor discount cap

C10 · Dates, time zone and lead time

C11 · Overlapping promotions and stacking

C12 · Exact store and channel scope

C13 · Inventory and allocations

C14 · Channel readiness and parity

C15 · Copy, assets and approval evidence

C16 · Supplied policy rules

CodeFindingExplanation
DEAL_AGREEMENT_COVERAGEVendor agreement does not cover this dealIncorrect vendor terms can leave a promotion unfunded or outside the agreed scope. Resolve: the source value. Funding is excluded from profitability until verified.
DEAL_AGREEMENT_DUPLICATEAgreement ID is ambiguousIncorrect vendor terms can leave a promotion unfunded or outside the agreed scope. The agreement snapshot has multiple entries for this ID. Resolve the duplicate.
DEAL_AGREEMENT_NOT_FOUNDAgreement ID was not foundIncorrect vendor terms can leave a promotion unfunded or outside the agreed scope. The agreement does not exist in the supplied agreement snapshot.
DEAL_AGREEMENT_REQUIREDVendor-funded deal has no agreement IDIncorrect vendor terms can leave a promotion unfunded or outside the agreed scope. Supply the actual agreement ID; a supplier name or funding assumption is not an agreement.
DEAL_ALLOCATION_EXCEEDS_STOCKReserved units exceed on-hand stockA promotion can promise quantities that its entered inventory and forecast cannot support. Reduce the reservation or supply verified additional inventory for this exact scope.
DEAL_ALLOCATION_REUSEDOverlapping reservations may reuse the same inventoryA promotion can promise quantities that its entered inventory and forecast cannot support. Determine whether simultaneous deals reserve independent units or share the stock pool; reconcile reservations and availability.
DEAL_ALL_CASEALL must be explicitSubstring matches, duplicate tokens or inactive destinations can apply an offer to the wrong store or channel. Use uppercase ALL for all stores or channels. Other tokens remain case-sensitive.
DEAL_ALL_EMPTYALL has no active reference locationsSubstring matches, duplicate tokens or inactive destinations can apply an offer to the wrong store or channel. The supplied the source value master has no unambiguous active entries.
DEAL_ALL_MIXEDALL cannot be mixed with individual codesSubstring matches, duplicate tokens or inactive destinations can apply an offer to the wrong store or channel. Choose ALL alone or list the exact intended codes.
DEAL_APPROVAL_DUPLICATEApproval reference is ambiguousCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. Multiple supplied approval records share this reference. Resolve the duplicate instead of accepting an arbitrary row.
DEAL_APPROVAL_NOT_GRANTEDReferenced approval is not grantedCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. The supplied approval record is not explicitly approved.
DEAL_APPROVAL_REFERENCE_MISSINGReadiness assertion has no evidence referenceCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. A Yes flag is not approval proof. Link or identify the actual review evidence without exposing private credentials.
DEAL_APPROVAL_SCOPEApproval belongs to another dealCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. Use evidence whose deal ID matches this source record.
DEAL_ASSET_NOT_READYPromotion assets are unfinishedCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. Confirm that the correct product image and price/date copy are ready in the destination.
DEAL_BELOW_COSTOffer sells below product costA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. The promotional revenue is below the cost of all received units before fees. Review funding and the actual business decision.
DEAL_BOGO_PERCENTBOGO conflicts with the get-item discountA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. BOGO means the get items are 100% discounted in this planner. Choose buy_x_get_y for a partial discount.
DEAL_BOOLEANVendor funded flag is invalidMissing or malformed source data cannot be safely interpreted by a destination importer. Use Yes/No, True/False or1/0 for readiness/funding flags. Blank stays unknown.
DEAL_BUNDLE_QUANTITYBundle needs multiple itemsA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. A bundle contains at least two received units. Use fixed_price for a single item.
DEAL_BUY_GET_QUANTITYBuy/get quantities do not match the offerA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Enter positive Buy quantity and Get quantity; Units in the complete offer must equal their sum. All items in this planner have the same unit price and cost.
DEAL_C10_NOT_CHECKEDC10: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C11_NOT_CHECKEDC11: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C12_NOT_CHECKEDC12: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C13_NOT_CHECKEDC13: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C14_NOT_CHECKEDC14: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C15_NOT_CHECKEDC15: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C16_NOT_CHECKEDC16: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C2_NOT_CHECKEDC2: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C3_NOT_CHECKEDC3: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C4_NOT_CHECKEDC4: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C5_NOT_CHECKEDC5: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C6_NOT_CHECKEDC6: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C7_NOT_CHECKEDC7: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C8_NOT_CHECKEDC8: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_C9_NOT_CHECKEDC9: required evidence is unavailableAbsent evidence cannot prove that a promotion is correct or safe to launch. Supply the reference or input evidence named in the row-specific warning, then rerun validation. Missing evidence is never a passed check.
DEAL_CATALOG_COSTEntered cost differs from the catalog snapshotA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Reconcile the source and catalog cost before relying on the margin calculation. Neither value is silently substituted.
DEAL_CATALOG_CURRENCYCatalog and deal currencies differA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Convert using an explicitly approved rate outside this planner, or supply the matching currency snapshot. No exchange rate is guessed.
DEAL_CATALOG_DUPLICATECatalog SKU is ambiguousDuplicate or contradictory identities can target the wrong product or attach the wrong facts. The supplied catalog contains duplicate SKU records. Resolve the duplicates; the first row is not treated as authority.
DEAL_CATALOG_IDENTITYProduct facts conflict with the catalogDuplicate or contradictory identities can target the wrong product or attach the wrong facts. The same SKU has different the source value in the supplied catalog. Correct or explicitly reconcile the source.
DEAL_CATALOG_PRICERegular price differs from the catalogA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. The reference catalog gives a full-offer regular total of the source value the source value. Check stale prices, packs and units before advertising a discount.
DEAL_CATALOG_PROMOSubmitted promotion differs from catalog-based mathA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Recalculating the same rule from the independent catalog unit price gives the source value the source value. Correct the regular source price and submitted promotion together.
DEAL_CATALOG_PROMO_INVALIDDeal becomes invalid at the catalog priceA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. The entered rule makes the independently supplied catalog price negative or exceeds the supported range. Reconcile stale prices before calculating a discount.
DEAL_CATALOG_STOCKStock differs from the catalog snapshotA promotion can promise quantities that its entered inventory and forecast cannot support. Reconcile inventory for the same store scope and snapshot time. A typed stock value does not overwrite independent inventory evidence.
DEAL_CATALOG_VELOCITYSales velocity differs from the referenceA promotion can promise quantities that its entered inventory and forecast cannot support. Confirm the baseline period, units and store scope before relying on the demand forecast.
DEAL_CATEGORY_CAPDiscount exceeds the supplied category capDuplicate or contradictory identities can target the wrong product or attach the wrong facts. The effective whole-offer discount exceeds the category policy maximum of the source value%.
DEAL_CATEGORY_POLICY_DUPLICATECategory policy is ambiguousAn invalid, unsupported or conflicting rule must not be treated as permission. Multiple supplied category policies have the same normalized category. Resolve the policy instead of accepting the first match.
DEAL_CATEGORY_POLICY_INVALIDCategory policy contains an invalid percentageAn invalid, unsupported or conflicting rule must not be treated as permission. Supplied discount caps and gross-margin floors must be decimals from 0 to 100; invalid policy values are not treated as permissions.
DEAL_CELL_TOO_LONGA deal cell is too longMissing or malformed source data cannot be safely interpreted by a destination importer. the source value exceeds 10,000 characters. Shorten it before exporting.
DEAL_CHANNEL_PARITYChannel snapshot does not match the planCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. Channel the source value has a different promotional price or activation window. Compare the exact entered snapshot before launch.
DEAL_CONTRIBUTION_RANGEContribution exceeds the supported rangeA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. The combined entered costs create an unsupported contribution amount.
DEAL_CONTROL_CHARACTERHidden control characterMissing or malformed source data cannot be safely interpreted by a destination importer. the source value contains an unsupported control character. Re-enter the value from the source.
DEAL_COPY_BUNDLEDeal name and bundle calculation disagreeCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. The quantity or ending total in the written “N for amount” offer differs from the entered rule.
DEAL_COPY_NOT_APPROVEDPromotion copy is not approvedCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. The source explicitly says the copy is unapproved. Complete review before launch.
DEAL_COPY_PERCENTDeal name promises a different discountCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. The percentage written in the deal name does not match Discount value. Correct the customer-facing promise or the actual rule.
DEAL_COST_RANGETotal product cost exceeds the supported rangeA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Cost per unit multiplied by received units is too large to calculate safely.
DEAL_COST_UNKNOWNProfitability cannot be checkedA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Cost per unit is missing or invalid. Unknown cost is never treated as zero; gross and contribution margins stay blank.
DEAL_CURRENCYCurrency is missing or invalidA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Supply a supported three-letter currency code. Values from different currencies cannot be compared.
DEAL_DATE_ORDERPromotion ends before it can runAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. End must follow start. Date-only end dates include the whole stated day; timestamp end instants are exclusive.
DEAL_DATE_POLICYSchedule policy is invalidAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. Correct the explicitly supplied maximum-duration or minimum-lead-day policy; invalid policies are not ignored.
DEAL_DECIMAL_STYLEChoose a decimal styleMissing or malformed source data cannot be safely interpreted by a destination importer. Choose dot or comma decimal style for both source and references before interpreting money.
DEAL_DESTINATION_SETUPThis is a promotion planning sheetA valid planning file does not prove that the selected platform or app has implemented the offer. Configure the chosen promotion system and test actual carts, scheduling, stacking and app rounding before launch. File export does not activate a promotion.
DEAL_DISCOUNT_RANGEPercent discount is invalidA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Check the selected type: percent uses 20 for20%; amount_off is removed from the complete regular total; fixed_price/bundle is the complete ending total.
DEAL_DURATION_LIMITPromotion exceeds the supplied duration policyAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. the source value calendar days exceeds the configured maximum of the source value; this maximum is a supplied business policy.
DEAL_EMPTYNo deal rows were suppliedMissing or malformed source data cannot be safely interpreted by a destination importer. Choose a worksheet containing at least one real deal row.
DEAL_END_DATEEnd date is invalidAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. Supply a real end date or explicit-offset timestamp. Date-only ends include the whole local day; timestamp ends are exclusive.
DEAL_EXPIREDPromotion has already endedAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. The end is earlier than the explicitly supplied review time. Confirm this is an intentional historical file.
DEAL_FEES_UNKNOWNContribution margin is not fully checkedA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Supply Variable fee, Fixed fee and Other cost explicitly. Enter 0 only when zero is known; missing fees do not become zero.
DEAL_FEE_RANGECombined fees exceed the supported rangeA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Variable and fixed fees together exceed the safe minor-unit range.
DEAL_FORMULA_TEXTSpreadsheet formula-like textMissing or malformed source data cannot be safely interpreted by a destination importer. the source value begins with a spreadsheet formula trigger. Export it as safe literal text after reviewing the source.
DEAL_FREE_OFFEROffer total becomes zeroA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. The complete offer is free after rounding. Confirm a deliberate giveaway and use a promotion system that supports it; no margin can be calculated.
DEAL_GET_PERCENTGet-item discount is missing or invalidA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. For buy_x_get_y, explicitly enter the discount percentage on the received get items, greater than 0 and at most 100.
DEAL_GROSS_MARGIN_FLOORGross margin is below the category policy floorA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Gross margin before fees is below the supplied minimum of the source value%.
DEAL_IDENTIFIER_LENGTHIdentifier is too longDuplicate or contradictory identities can target the wrong product or attach the wrong facts. Keep deal IDs at most 100 characters and SKUs at most 255 characters; your destination may impose a smaller limit.
DEAL_IDENTIFIER_TRIMIdentifier has surrounding whitespaceDuplicate or contradictory identities can target the wrong product or attach the wrong facts. Confirm the exact identifier in the destination. Source whitespace is preserved and must not silently change identity.
DEAL_ID_DUPLICATEDeal ID is reusedDuplicate or contradictory identities can target the wrong product or attach the wrong facts. Assign a unique deal ID after reviewing the duplicated records; do not silently merge.
DEAL_INSUFFICIENT_ALLOCATIONReservation cannot fulfill one offerA promotion can promise quantities that its entered inventory and forecast cannot support. Reserve enough units for all items received in at least one redemption.
DEAL_INSUFFICIENT_OFFER_STOCKNot enough stock for one complete offerA promotion can promise quantities that its entered inventory and forecast cannot support. On-hand units cannot fulfill the received quantity of one redemption.
DEAL_INVENTORY_SHORTFALLInventory may not cover promoted demandA promotion can promise quantities that its entered inventory and forecast cannot support. The supplied forecast estimates the source value units over the source value calendar day(s); only the source value units are available in the entered scope. This is a projection, not a stock reservation.
DEAL_LEAD_TIMEPromotion has too little build timeAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. There are the source value calendar days between submission and start; the supplied policy asks for the source value.
DEAL_LEAD_UNKNOWNBuild lead time is not checkedAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. A lead-time policy was supplied but Submission date is blank.
DEAL_LIFTDemand multiplier is invalidA promotion can promise quantities that its entered inventory and forecast cannot support. Enter an explicit positive multiplier no greater than 1,000; 1 means no lift. No forecast multiplier is guessed.
DEAL_MARGIN_FLOORContribution margin is below the supplied floorA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. The entered policy requires the source value% contribution margin after the entered costs. This is your supplied policy, not a universal threshold.
DEAL_MIN_EXCEEDS_LIMITMinimum quantity exceeds the customer limitContradictory quantity constraints can make the offer impossible to redeem. A customer cannot reach the threshold without exceeding the allowed quantity.
DEAL_MIXED_DATE_PRECISIONDates mix a day and a timestampAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. Use two dates or two explicit timestamps so the activation boundary is unambiguous.
DEAL_MONEY_INVALIDInvalid money valueA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. the source value must be a non-negative decimal in the selected locale.
DEAL_MONEY_PRECISIONMoney contains fractions of a minor unitA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. the source value is rounded half up to the source value decimal places for the source value. Confirm the intended amount.
DEAL_MONEY_RANGEMoney exceeds the supported rangeA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Reduce the amount or split the offer; amounts above the safe minor-unit range are not calculated.
DEAL_NAME_BRANDSame name, different brandsDuplicate or contradictory identities can target the wrong product or attach the wrong facts. Review the exact SKU and manufacturer; a product name does not establish brand identity.
DEAL_NAME_CATEGORYSame name, different categoriesDuplicate or contradictory identities can target the wrong product or attach the wrong facts. Review category membership and exact product identifiers before reclassifying anything.
DEAL_NAME_SUPPLIERSame name, different suppliersDuplicate or contradictory identities can target the wrong product or attach the wrong facts. Compare exact SKUs and supplier identities. A shared product name is only a candidate match.
DEAL_NEGATIVE_CONTRIBUTIONOffer loses money after entered costsA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Product cost, variable/fixed fees and other entered costs exceed promotional revenue. Vendor funding is not assumed.
DEAL_NEGATIVE_PROMOPromotion creates a negative priceA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Revise the discount; a customer cannot owe a negative item total.
DEAL_NO_SAVINGThis deal does not reduce the priceA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. The promotional total is equal to or higher than the regular total. Check the discount type, units and amount.
DEAL_OFFER_EXCEEDS_LIMITCustomer limit prevents this offerA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. The customer unit limit is smaller than the number of received items. Decide whether the limit was meant to count offers instead of units.
DEAL_OFFER_EXCEEDS_MAXOffer cannot fit the maximum quantityA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Maximum quantity must allow all received items in at least one complete offer.
DEAL_OFFER_RANGEOffer total exceeds the supported rangeA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Unit price multiplied by offer quantity exceeds the safe minor-unit range.
DEAL_OFFER_REGULAR_MISMATCHWhole-offer regular price does not matchA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Unit price × all the source value received items is the source value the source value; the submitted whole-offer regular total differs.
DEAL_OVERLAP_CONFLICTExclusive deals overlap for the same productMultiple eligible promotions can compound or compete in ways a single-row calculation cannot prove. Change conflicting windows or exact store/channel scope, or explicitly configure a supported combination policy. Review each related row.
DEAL_OVERLAP_REVIEWOverlapping deals need destination verificationMultiple eligible promotions can compound or compete in ways a single-row calculation cannot prove. Test stacked or best-price cart results, caps and ordering in the chosen destination; a source label is not a configured promotion.
DEAL_PERCENT_FRACTIONCheck percentage scaleA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. the source value is between 0 and 1. This planner treats 0.2 as 0.2%, not 20%. Verify the spreadsheet percentage format; no multiplication is guessed.
DEAL_PERCENT_RANGEPercentage is invalidA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. the source value must be from 0 to 100. Enter 20 for 20%, without a percent symbol.
DEAL_POLICY_ID_DUPLICATEPolicy ID is duplicatedAn invalid, unsupported or conflicting rule must not be treated as permission. Supplied policy ID the source value is reused. Resolve the duplicate before treating coverage as complete.
DEAL_POLICY_INVALIDPolicy has no explicit active flagAn invalid, unsupported or conflicting rule must not be treated as permission. Give each active policy a unique ID, an explicit active flag, a supported type, a valid value and blocker/warning severity.
DEAL_POLICY_PURCHASE_LIMITCustomer limit violates the supplied policyAn invalid, unsupported or conflicting rule must not be treated as permission. Policy the source value allows at most the source value received units per customer.
DEAL_POLICY_STACKINGStacking does not meet the supplied policyMultiple eligible promotions can compound or compete in ways a single-row calculation cannot prove. Policy the source value requires a written stacking approval reference.
DEAL_POLICY_TEXTPromotion text triggers a supplied policyAn invalid, unsupported or conflicting rule must not be treated as permission. Policy the source value: the source value phrase “the source value”. This is a supplied business rule, not a legal opinion.
DEAL_POLICY_UNSUPPORTEDA supplied policy cannot be evaluatedAn invalid, unsupported or conflicting rule must not be treated as permission. Policy the source value uses unsupported type the source value. Obtain a manual review; this rule is not counted as checked.
DEAL_PRIMARY_NOT_READYPrimary channel is not readyCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. The source explicitly marks the primary destination as unfinished. Exporting a plan does not make the promotion live.
DEAL_PROJECTION_RANGEForecast is too largeA promotion can promise quantities that its entered inventory and forecast cannot support. The supplied velocity, duration or multiplier creates an unsupported unit count.
DEAL_PROMO_MISMATCHSubmitted promotional total is wrongA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. The stated rule independently calculates the source value the source value for the complete offer. Check the submitted ending price.
DEAL_PROMO_RANGEPromotional total exceeds the supported rangeA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. The computed promotion exceeds the safe minor-unit range.
DEAL_PURCHASE_LIMIT_UNKNOWNCustomer purchase limit is unspecifiedContradictory quantity constraints can make the offer impossible to redeem. Set a positive unit limit or review an intentionally unlimited promotion in the destination. Blank is not assumed to mean unlimited.
DEAL_QUANTITY_BOUNDSMaximum quantity is below the minimumContradictory quantity constraints can make the offer impossible to redeem. Raise the maximum or correct the minimum; no cart can satisfy both values.
DEAL_QUANTITY_INVALIDQuantity is invalidContradictory quantity constraints can make the offer impossible to redeem. the source value must be a whole numberthe source value.
DEAL_RECORD_SHAPEA deal row is malformedMissing or malformed source data cannot be safely interpreted by a destination importer. Re-read the source into correctly mapped row objects; malformed rows are not validated.
DEAL_REQUIREDRequired deal fields are missingMissing or malformed source data cannot be safely interpreted by a destination importer. Fill each missing mandatory source field listed in the warning; no identity, schedule or pricing value is invented.
DEAL_REVIEW_TIMEReview time is invalidAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. Supply a valid explicit review timestamp when checking expiration.
DEAL_ROW_ID_DUPLICATESource row identity is duplicatedDuplicate or contradictory identities can target the wrong product or attach the wrong facts. Re-read source rows with distinct row IDs so exclusions and reviews cannot target the wrong row.
DEAL_ROW_LIMITToo many deal rowsContradictory quantity constraints can make the offer impossible to redeem. Split the input into batches of at most5,000 rows, then separately review conflicts across batches.
DEAL_SCOPE_AMBIGUOUSReference code is duplicatedSubstring matches, duplicate tokens or inactive destinations can apply an offer to the wrong store or channel. The supplied master contains duplicate code the source value; resolve the master before choosing a location.
DEAL_SCOPE_INACTIVEStore or channel is not confirmed activeSubstring matches, duplicate tokens or inactive destinations can apply an offer to the wrong store or channel. Code the source value has an inactive or missing active flag in the supplied master.
DEAL_SCOPE_NOT_FOUNDStore or channel code was not foundSubstring matches, duplicate tokens or inactive destinations can apply an offer to the wrong store or channel. Exact code the source value is absent from the supplied the source value master. Substring matches are never accepted.
DEAL_SCOPE_TOKENStore or channel list is malformedSubstring matches, duplicate tokens or inactive destinations can apply an offer to the wrong store or channel. Use exact, unique comma-separated codes in the source value; empty entries, duplicates and free-text names are not accepted.
DEAL_SECONDARY_NOT_READYSecondary channels are not readyCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. A customer-facing channel may show different dates or prices. Confirm all intended channels before launch.
DEAL_SKU_FACT_CONFLICTThe same SKU has conflicting product factsDuplicate or contradictory identities can target the wrong product or attach the wrong facts. Reconcile the different product facts under the same SKU against a trusted catalog; no row wins by position.
DEAL_SKU_NOT_FOUNDProduct SKU is absent from the reference catalogDuplicate or contradictory identities can target the wrong product or attach the wrong facts. Use an exact SKU from the supplied catalog or update the catalog snapshot. Names never establish an identity match.
DEAL_SKU_WHITESPACESKU contains whitespaceDuplicate or contradictory identities can target the wrong product or attach the wrong facts. Check whether the whitespace is part of the actual SKU. Identifiers are never joined or guessed.
DEAL_STACKING_APPROVALStacking has no written approval referenceCustomer-facing text, readiness assertions and approval evidence can disagree with the actual offer or belong to a different deal. Provide an approval reference and validate combination order, discount caps and the final cart in the destination.
DEAL_STACKING_POLICYStacking policy is not recognizedMultiple eligible promotions can compound or compete in ways a single-row calculation cannot prove. Choose exclusive, best_price or stack. Boolean Yes/No only maps to stack/exclusive; it does not configure an app.
DEAL_STACKING_UNVERIFIEDActual stacked cart is not verifiedMultiple eligible promotions can compound or compete in ways a single-row calculation cannot prove. An approval reference is not a live cart simulation. Combination order, eligible lines, taxes and rounding must be tested in the destination.
DEAL_STAGEReview stage is invalidMissing or malformed source data cannot be safely interpreted by a destination importer. Choose planning or launch. Launch strengthens copy and primary-channel readiness requirements.
DEAL_START_DATEStart date is invalidAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. Use a real YYYY-MM-DD date or an ISO timestamp with an explicit offset matching the selected IANA time zone.
DEAL_SUBMITTED_AFTER_STARTSubmission is after the promotion startsAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. Review whether this is a late submission or an intentional historical record.
DEAL_SUBMITTED_DATESubmission date is invalidAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. Supply an unambiguous submission date in the selected time zone.
DEAL_TIME_ZONETime zone is missing or invalidAn ambiguous or inconsistent schedule can activate the wrong price at the wrong local time. Choose the destination store’s IANA time zone. No browser or machine time zone is silently applied.
DEAL_TYPEUnsupported deal typeMissing or malformed source data cannot be safely interpreted by a destination importer. Choose percent, amount_off, fixed_price, bundle, bogo, or buy_x_get_y. Tiered or mixed-product deals need a separate, explicit configuration.
DEAL_UNITSOffer quantity is invalidContradictory quantity constraints can make the offer impossible to redeem. Units must be an explicit whole number from 1 to 1,000,000. It counts all items received, including free items.
DEAL_UNIT_PRICERegular unit price is invalidA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. Regular price per unit must be positive and fit the currency precision. Currency symbols, expressions and scientific notation are not accepted.
DEAL_UNUSED_DISCOUNTDiscount value is unused for this typeA wrong amount, unit basis or missing cost can produce an incorrect offer or hide a loss. BOGO and buy_x_get_y use buy/get quantities and the get-item discount. Clear Discount value to avoid importing contradictory instructions.
DEAL_VELOCITYWeekly sales velocity is invalidA promotion can promise quantities that its entered inventory and forecast cannot support. Enter a non-negative decimal baseline in units per week.
DEAL_VENDOR_CAPDiscount exceeds the vendor agreement capIncorrect vendor terms can leave a promotion unfunded or outside the agreed scope. The effective whole-offer discount exceeds the supplied agreement maximum of the source value%.
DEAL_VENDOR_POLICY_INVALIDVendor discount cap is invalidIncorrect vendor terms can leave a promotion unfunded or outside the agreed scope. The supplied agreement cap must be a decimal from 0 to 100.
15. File, mapping, reference and export safeguards

These controls surround the row-level rules. Their findings can apply to a whole file or workspace and therefore may not have a single source row.

ControlBehavior and resolution
File and workbook integrityUnsupported file type, encoding, broken CSV quotes, null bytes, empty data, oversized files or cells, too many rows/columns/sheets, macros, embedded files and encryption cannot silently become records. Re-save a small data-only source.
Bounded archive parsingCentral and local archive sizes, names, methods, flags and boundaries must agree before decompression. ZIP64, streamed entries and overlaps are rejected. A slow reader is stopped; the file must be simplified.
Sheet and header selectionA suggested table is only a suggestion. Choose the actual worksheet and header. Empty or duplicate headers, uneven row widths, hidden rows and merged cells need review. Overflow cells remain in the recovery workbook.
Unmapped and repeated columnsPopulated source columns left unassigned produce omission warnings. Ambiguous aliases stay unassigned. A column used for different fields needs review; different edits are preserved in separate Prepared recovery fields.
Pending changes and cancelled readsExport is blocked while a file is reading or source/reference choices await Apply. Changing mappings, records, settings or destination invalidates previous decisions and prepared download buttons. Clear cancels pending work.
Formula caches and source correctionsSource formulas are never evaluated. A missing cached result stays blank, a genuine cached zero stays zero, and error cells block. A deliberate corrected field is rechecked with provenance retained; restoring the original reinstates its applicable finding.
Identifier precisionText SKUs, GTINs, phones and postal codes retain leading zeros. IDs stored as Excel numbers are flagged; unsafe precision blocks. The app cannot recover lost digits. Numeric locale changes do not rewrite shared text identifiers.
Compatible reference identityUnique compatible identifiers must resolve one record. A shared product ID can be narrowed by variant/SKU evidence. Contradictory identifiers block; matching names alone never authorize a fill or merge.
Reference value and context conflictsConflicting names, brands, suppliers, options, currencies, packs and customer address context prevent automatic filling. Money requires supplied reference currency and product pack context. The source-currency default is never assigned to the reference.
Reference evidence safetyMapped reference formula/error cells and uncertain numeric identifiers cannot supply trusted fills. A deal evidence table with missing/ambiguous headers or unsafe identifiers is omitted and its dependent controls remain Not checked.
Destination identities and sparse updatesCreate and update rules differ. Updates require an appropriate existing handle, SKU, ID or option identity. Some records need separate files to avoid destructive blank columns. Native Shopify customer overwrite is blocked; use the supported selective alternative.
Product and variant structureUnconfirmed flat WooCommerce families, missing parents/options, repeated combinations, conflicting parent fields, image-list delimiters and unsupported structures require correction or another adapter. Parent and sellable variation fields are not interchangeable.
Money and inventory export rulesThe actual store currency must be selected for product exports. A source/store mismatch blocks; there is no currency conversion. Destination money precision, sale-reference prices, inventory locations and weight-unit setup are checked or explicitly left for review.
Taxonomy and same-sheet Google valuesSupplied Shopify and Google fields are tested against their bundled lists. Source/Woo categories and Shopify collections have different meanings. Unsupported integration, ownership scope or populated fields cannot disappear without a warning or blocker.
Customer and collection scopeUnknown marketing consent is not opt-in, and positive supplied consent requires review of evidence. Address updates need the supported identity. Shopify Custom Collections are flat; a category hierarchy cannot silently become a collection tree.
Final output and omission reviewEvery prepared cell, including exported worksheet provenance, is checked for executable spreadsheet text. Blockers cannot be accepted away. Unsupported populated fields are reported. CSV-only profiles cannot export XLSX.
Review, exclusion and recoveryA warning needs a recorded reason of at least twelve characters. Excluded rows are retained in the session, recovery workbook and report. Changes clear previous review decisions. The report includes all findings, reference coverage and replacement history.
External reality and promotion activationNo check proves barcode ownership, contact deliverability, consent authenticity, live stock, current store state or legal compliance. Deal outputs calculate supplied single-SKU offers and document evidence; they do not activate promotions or model mixed-SKU carts.