Blog

What Actually Breaks When You Paste Shopify HTML Into ChatGPT

A field note on Liquid filters, inventory counters, and currency snippets that vanish after a casual LLM rewrite — and how syntax-safe pipelines avoid that.

2026-09-22 · 8 min read

Most merchants discover the problem on a Tuesday afternoon. Someone on the team dumps a product description into ChatGPT, asks for “German,” pastes it back into Shopify, and the theme still renders… until a customer hits a variant with a dynamic price or a low-stock badge. Then the page shows raw braces or an empty string where urgency used to live.

The failure mode is boring and expensive. Liquid is not “text with curly bits.” Filters like `| money` and objects like `{{ product.selected_or_first_available_variant.inventory_quantity }}` are contracts between your theme and your catalog. A general-purpose chat model has no loyalty to that contract. It optimizes for readable German, not for a working storefront.

We have seen three patterns repeat. First, placeholders get translated: `{count}` becomes a German word for quantity. Second, HTML structure gets “cleaned,” which removes classes your CSS depends on. Third, warranty lines get inventively expanded into claims your legal team never approved for the DACH market.

A syntax-safe pipeline does something less glamorous: it inventories tokens before generation, masks them, rewrites only human copy, then restores tokens byte-for-byte. That is not a vibe — it is a checklist. If you run more than a few dozen SKUs, checklists beat clever prompts.

If you are evaluating tools, ask one question in the demo: “Show me the output when the source contains Liquid and ICU in the same paragraph.” If the vendor shrugs, keep your CSV export button close.