Shopify changed my product handles, so my URLs are not what I uploaded
Handles are slugified on the way in — silently, without an error — so the URL you planned and the URL you got can differ.
What you are seeing
The products imported fine, but their URLs have different capitalisation, punctuation or hyphens from the handles in your file.
There is no error message for this one. That is the problem, not an omission on this page — the import reports success and the damage is only visible if you go looking for it.
Why it happens
Shopify rewrites the handle before storing it. Uppercase becomes lowercase, spaces and punctuation become hyphens, accented characters are folded, and doubled or trailing hyphens are collapsed. None of this is an error — we uploaded "Gate-Q1-Foo-Bar" and the store held "gate-q1-foo-bar", with nothing reported.
This only becomes a real problem in two situations, and both are worth checking before you upload rather than after: when you have built redirects or ad links against the handles in your spreadsheet, and when two of your handles normalise to the same string.
How to fix it
- Normalise your handles yourself before uploading, so the column in your file is exactly what the store will hold. Then your spreadsheet is a usable source for redirects.
- Do this before generating any redirect map or ad URL from the file.
- Check for collisions in the normalised values — that is the failure that costs you a product rather than a URL.
Where this came from
We broke a real Shopify store on purpose to answer these questions, and kept what it said. Nothing on this page is quoted from documentation.
- "Gate-Q1-Foo-Bar" was stored as "gate-q1-foo-bar". Spaces, punctuation, accents and doubled or trailing hyphens are slugified the same way and none of them is rejected. A handle that is already in use IS rejected outright.
What we did not measure. We tested spaces, punctuation, accents, and doubled and trailing hyphens. We did not test non-Latin scripts against the importer, so this page does not tell you what happens to a Cyrillic or CJK handle.
Observed 2026-09-04. The store this was measured on has since been deleted, so these answers are an archive rather than something we re-run — we would rather tell you the date than imply it is checked continuously.
Check your file before you upload it
The Pre-Flight Report reads your supplier file and names every blocker, with the row it is on, before you go near an importer. It is free, it needs no account, and it does not send your file to a model.