A predictable moment in every Shopify localisation project: someone translates the product tags into French, syncs, and nothing happens. Or worse, the French values overwrite the English ones and the automated collections that depended on those tags empty out.
The cause is always the same. Shopify treats some product fields as translatable content and others as global data that exists once per product, regardless of language. The distinction is not signposted anywhere obvious, and it does not match intuition — tags look like text, so people assume tags translate.
Here is the actual split, and what it means for how you structure the work.
Fields you can translate per locale
- Product title — the obvious one.
- Description — full HTML body content, per language.
- Handle — the URL slug. Translatable, and almost universally skipped. See translating product handles.
- Variant option values — "Black" / "Schwarz", where your options carry real words.
- Metafields — where the definition allows it. This is where care instructions, size guides and marketing copy usually live, and it is the most commonly forgotten category. See bulk translating metafields.
Fields that are global, not per-language
These exist once per product. There is no French version and no German version — change it and you change it everywhere:
- SKU — an identifier, shared with your warehouse and your accounting system.
- Vendor
- Product type
- Tags — the one that surprises people most. Tags drive automated collections and storefront filters, so they are structural data, not display copy.
- Theme template — a filename in your theme.
- Status — active, draft or archived, for the product as a whole.
- Collections — membership is a relationship, not text.
- HS code — a customs classification. Numeric and international by design.
- Country of origin — a fact about manufacture, identical in every language.
Most of these are global for a good reason: they are either identifiers, structural relationships, or facts about the physical product. The ones that feel like they should be translatable — tags above all — are the ones doing structural work behind the scenes.
How a well-built translation sheet reflects this
SheetSync creates one tab per enabled locale, named Product Data (<locale>). The important detail is what is not on each tab.
Every locale tab carries the translatable fields: Handle, Product Title, Description, and your metafields. The global fields appear only on the primary locale's tab — SKU, Vendor, Product Type, Tags, Theme Template, Status, Collections, HS Code, Country of Origin.
That is a deliberate design choice rather than an omission. Showing a Tags column on the German tab would imply German tags are a thing you can have. They are not, and the only outcome of offering the column would be someone filling it in and then overwriting their English tags. The sheet makes the distinction visible instead of letting you discover it after a sync.
It is also how the sync identifies which tab is primary: the global columns only exist there.
Practical consequences
Translate on the locale tabs; manage structure on the primary tab. They are two different jobs and the sheet keeps them apart. Tag cleanup, collection membership and customs data all happen once, on the primary tab, and apply everywhere.
Do not build storefront filters on language-specific concepts. If your filters run on tags and your tags are global, your filter labels need translating in the theme or the filter configuration, not on the product.
Localized merchandising goes in metafields, not tags. If you need text that differs per language, a translatable metafield is the right home for it.
Watch the cell budget on large catalogues. Google caps a spreadsheet at 10 million cells and counts the whole grid, not just the filled part. At twenty locales and ten thousand variants, a sheet created with generous default widths exceeds that cap on empty columns alone. Export the fields you actually intend to translate rather than everything available — it is the difference between a sheet that opens and one that will not.
One more thing: translations can go stale
Shopify ties each translation to the source text it was made from. Edit the English description after translating it and the translations for that field are marked outdated — the old translation keeps serving, but Shopify knows it no longer matches.
The practical rule: finish the source copy first, then translate. If source edits are continuous, re-export periodically and treat the changed rows as your translation backlog, rather than assuming a translated catalogue stays translated.
See your whole catalogue, per language
Export every locale as its own tab and translate what Shopify will actually accept.
Try SheetSync today