Catalog audit
The audit reads every variant in your shop and reports what is wrong with its barcodes and SKUs: duplicates, broken check digits, lost leading zeros, invisible characters, and anything sitting in stock that cannot be rung up at the till.
Reading the whole report is free on every plan. Rewriting the codes in bulk — with a before-and-after preview, an undo and a log of every value changed — is the Pro half.
Run it
Press Run audit at the top right. The screen updates as the run finds things. If your catalog is still being read after install, a banner says so and the number will move as the rest arrives — nothing is wrong.
You can also have it run on its own: Settings → Catalog audit offers daily or weekly, with an email when something new breaks. That is on Pro; the report itself is not.
Read the report
Catalog health
The score summarizes the problems found in the audit. It is not a percentage of products proven to scan and does not replace a physical scan test.
Each problem contributes a severity weight: critical 3, warning 2, info 1. The score uses 100 × (1 − total weight ÷ (variants checked × 3)), bounded at zero. Several problems on one variant can reduce the score more than once. Check the audit date and variant count when comparing runs.
What is wrong
A table of the problem types actually present, worst first, with a count and a severity badge. Each row has two buttons: Show filters the list below to that problem, and Fix starts a bulk fix for it.
Every problem
The row-by-row list, 50 at a time, showing the product, its SKU, its barcode and a sentence naming the defect. Filter it by severity, by problem type, or by a free-text search over code, SKU and product name.
When several variants share one code, each row carries a See everything sharing this code link that narrows the list to that group.
Export CSV downloads exactly what the filters are showing.
The fourteen problems, and what each one means
Critical — the till is wrong today
Same barcode on different variants. Two or more variants carry one code, so the match may be ambiguous in checkout or receiving. Check the affected products before printing or changing codes. Markio shows the variants together as one group.
Collides with another product's GTIN. Reported in two situations. Either the code once belonged to a variant that no longer exists — labels printed with it are still out there in the stockroom — or the code is registered as a scan alias of a different variant, so one scan has two answers.
Different codes for the same item in two locations. Markio flags separate variant records with a shared SKU, stock in more than one location, and different barcodes. Check whether the records represent the same physical item before making changes. The shared SKU is also reported as a duplicate SKU.
Has stock but no barcode. Stocked variants have no barcode for scanning. They can still be found manually in Shopify.
Wrong check digit. EAN and UPC identifiers contain a calculated check digit. A mismatch can indicate a mistyped or incomplete value and can prevent encoding or scanning. Compare the full code with its source before correcting it.
Will not scan as printed. The value contains characters the symbology cannot encode, uses an application identifier that is not a GS1 one, or is longer than Markio’s audit threshold for a practical linear barcode. Review the chosen format and label size.
Possible missing leading zero. The value may have lost a leading zero, for example when a spreadsheet treated it as a number. Markio suggests a candidate to review. Losing a leading zero can affect length or representation without changing the calculated check digit; confirm the intended format and source value before applying a fix.
Warning — wrong, but not mis-selling right now
Wrong length for its symbology — an EAN-13 with twelve digits, an ITF with an odd number of them.
Letters in a digits-only code — the character is named.
Invisible or non-printable characters — non-breaking spaces, zero-width characters, Unicode dashes instead of hyphens, full-width digits, and Cyrillic or Greek letters that look identical to Latin ones. Each offending character is shown as its Unicode code point (U+00A0), because that is the only unambiguous way to show something you cannot see.
No barcode.
Same SKU on different variants.
Info — real, but harmless at the counter
No SKU.
SKU and barcode disagree with your rule. This fires only for a shop that has declared a SKU-to-barcode rule — a rule invented for you and then enforced against your whole catalog would be worse than no check. There is no screen for declaring that rule yet, so today this check does not fire for anyone.
Fix problems in bulk
(On the Pro plan. The report stays free.)
- Choose When two variants share a code: - Keep the oldest, generate new codes for the others — the default. The oldest variant keeps the code; the rest get freshly minted ones. - Keep the oldest, clear the newer ones — the rest are emptied and you issue codes yourself later. - Ask me which one keeps the code — see the caveat below.
- Press Fix on a problem row.
- Nothing is written yet. A section appears headed Review before anything changes, listing every variant, which field, the value before and the value after.
- Press Apply these N changes. The catalog updates in the background.
- To reverse the fix, press Undo this batch. Markio restores previous values where the live field still matches the fix. Later edits are skipped; check the result for failures or skipped changes.
Only the most recent batch is kept on screen. "Undo the last one" is the promise; a list of every batch ever is a different screen.
What the fixer does per problem
| Problem | The fix |
|---|---|
| Same barcode / SKU on different variants | The keeper is left alone. The others are cleared, and given a new code unless you chose "clear". |
| Collides with another GTIN, will not scan, wrong length, letters in a digits-only code | The code is replaced outright with a freshly minted one. |
| Leading zero lost, wrong check digit | Corrected to the value the audit already computed. |
| Invisible characters | The cleaned value is written back. |
| SKU and barcode disagree with your rule | The SKU is rewritten to what the rule says. |
| No barcode, stock without a barcode, no SKU | A new code is minted. |
| Different codes in two locations | Not fixed automatically — deciding which of two real items is which is not something an app should do for you. Merge or renumber them yourself. |
Minting always goes through the numbering rules on Barcodes & SKUs. If no numbering rule exists, the fix stops with "No code sequence is configured for this shop" — create one first. If you own a GS1 company prefix, new codes are valid EAN-13s built from it, check digit included; if you do not, they are internal Code 128 codes. Markio never invents a GTIN.
Caveat: "Ask me which one keeps the code" has nowhere to answer
The strategy exists in the picker, but there is currently no screen for supplying the per-group decision, so choosing it produces "Nothing to change: the selected issues need a decision". Use one of the two automatic strategies, or fix that group by hand in Shopify.
Common tasks
Fix a barcode that scans as two different products
- Run the audit.
- Filter to Same barcode on different variants.
- Click See everything sharing this code on one of the rows to see the whole group.
- Decide which one keeps the code — normally the oldest, which is what the default strategy assumes — then press Fix on that problem row and review the preview.
- Apply, then reprint the labels for whatever changed. The changed variants now carry new codes, and the old labels on the shelf are wrong.
Find everything that cannot be rung up
Filter severity to critical and look for Has stock but no barcode. Then go to Print labels, tick Only without a barcode, and print for those.
Get the report out to someone else
Export CSV at the top right. It carries the current filters, so you can hand a supplier a file of only the codes that came from them.
Troubleshooting
The health score dropped and I did not change anything
An audit run is a snapshot. If your catalog was still being indexed on the previous run, that one was measured on fewer variants. Also check whether another app writes codes — Markio's live check runs on every product update, so a bulk import by something else shows up here immediately.
Every EAN-13 in my shop is flagged with a wrong check digit
Your codes are probably internal, not retail GTINs. Markio guesses the symbology from the shape of the value when it has not been told, and a 13-digit internal number is indistinguishable from an EAN-13. Nothing in the audit screen sets this; if this is your situation, use Code 128 for internal codes going forward and treat the check-digit rows as noise until then.
"Nothing to change — those issues need a decision or a code source first"
One of three things: you chose the "Ask me" strategy (see above), you have no numbering rule to mint replacement codes from, or the issues you selected are of a type that carries no automatic fix (cross-location mismatches).
A fix said "Code sequence … is exhausted"
The numbering rule hit its Stop at ceiling. Raise it on Barcodes & SKUs, or use a different rule.
"The GS1 company prefix has no capacity left"
Your prefix has issued every number it holds. A shorter prefix holds more numbers; buying more capacity is a conversation with GS1, not with us.
Some changes say "failed"
Shopify rejected the write. The reason is shown on the row. A variant may have changed or been deleted since the preview. Re-run the audit and fix the remainder.
I applied a fix and the shelf labels are now wrong
They are — the codes changed. Reprint them. The Reprint just what changed button after a batch takes you to the Print screen with the condition Only what the last bulk fix changed already in force, so the list holds exactly those variants and nothing else. Tick them, pick your template and print as usual.
Only what actually landed is in that list. A change Shopify rejected left the variant carrying its old code, so its label on the shelf is still right; and after an undo, check the batch result: changes may be skipped if the live values have since changed.
Where do legal barcodes come from?
Markio does not sell or register GTINs. Use a GS1 prefix allocated to your business for generated EAN-13 codes, and check the requirements of each retail partner or marketplace. For internal store use, Code 128 may be sufficient.
Related
- Barcodes & SKUs — issuing and importing codes
- Print labels — reprinting what changed
- Settings → Catalog audit — schedule and alerts