AI does not change or translate URLs that appear inside product descriptions or other text fields. This limitation exists because the AI cannot reliably determine whether the linked handle is translated, or which domain or URL structure your store uses for that language.
Shopify handles are translatable, and Translation Lab supports handle translation. The limitation applies only to raw URLs written inside text content.
Why This Happens
URLs in text are not the same as Shopify handles
Shopify has a dedicated system for translating handles. For example:
Original handle:
/products/red-shoesTranslated German handle:
/produkte/rote-schuhe
Translation Lab can read and write these translations because Shopify exposes them through the Translation API.
However, this does not apply to URLs that you manually insert inside a product description or other text field.
Those URLs are just part of the text/HTML - not a “handle field” that Shopify considers translatable.
Translation Lab copies the original URL exactly as it is when translating text blocks
This behavior is intentional
It prevents broken links caused by wrong assumptions about handles/domains
It is not that “AI can’t guess” — it’s that we do not allow URL rewriting because it is unsafe
URLs inside text are copied exactly as they are (on purpose)
When Translation Lab translates a product description, blog post, rich text section, or any other text field, the AI translates only the text, not the URLs inside it.
This is intentional.
If the original text contains:
<a href="https://store.com/products/red-shoes">Red Shoes</a>
The translated version will contain the exact same href, unchanged.
<a href="https://store.com/products/red-shoes">Rote Schuhe</a>
Only the visible text (“Red Shoes” → “Rote Schuhe”) is translated.
The URL stays identical to the original.
This guarantees the link won’t break and avoids sending customers to the wrong page (404).
Why this is necessary
URLs inserted inside descriptions are plain text, not structured Shopify handle fields.
Shopify does not expose the translated handle or the Market URL structure to the AI during a description translation.
Because of this, Translation Lab cannot safely rewrite URLs — and trying to “guess” would cause more harm than good.
So to protect the store from broken links, Translation Lab always preserves the original URL exactly as the merchant wrote it.
Example A) - The handle is translated, but the URL inside the description is not
Let’s say:
You translated the handle
/products/red-shoes→/produkte/rote-schuheBut your product description still contains:
<a href="https://store.com/products/red-shoes">Red Shoes</a>
When you translate the description to German, Translation Lab will output:
<a href="https://store.com/products/red-shoes">Rote Schuhe</a>
We do not change the URL to /products/rote-schuhe, because:
AI cannot know this is the translated handle
AI cannot see if you manually translated the handle and added a different translation than the one the AI would
AI cannot know your domain structure, even if it could guess the exact handle translation (
/de,/de-eu, subdomain, etc.)
store.com/de/products/rote-schuhe
store.com/de-eu/products/rote-schuhe
store.de/products/rote-schuhe
de.store.com/products/rote-schuhe
Keeping the original URL is the safest and correct behavior.
Example B) - The handle is not translated, but AI “guessing” would break it
Imagine the opposite scenario:
The handle stays the same in all languages (
/products/red-shoes)Your description contains:
<a href="https://store.com/products/red-shoes">Red Shoes</a>
If AI tried to “translate” the URL, it might incorrectly output:
<a href="https://store.com/de/products/rote-schuhe">Rote Schuhe</a>
But since /products/rote-schuhe does not exist, this would cause:
❌ broken links
❌ 404 pages
❌ incorrect Market routing
❌ SEO issues
That’s why Translation Lab never modifies URLs inside text.
Shopify handle translations are supported — but only for actual handle fields, not for URLs embedded in text.

