All guides
·7 min read

Durable medium: guarantee info in Shopify order emails

Showing the notice on the product page isn't the whole obligation. Guarantee information has to reach the consumer on a durable medium, which on Shopify means the order confirmation email — a template no API can write for you.

Quick Answer

Short answer: the product page tells the shopper before they buy; the durable medium gives them a record they keep afterwards. On Shopify that's the order confirmation email — and no app can write it for you, because Shopify has no API for notification templates. Any tool that says it updates your order emails automatically is sending its own email instead.

Most coverage of Regulation (EU) 2025/1960 stops at the product page. That's the visible half. The half that gets missed is that guarantee information also needs to reach the consumer in a form they can keep.

What "durable medium" actually means

The concept runs through EU consumer law generally. A durable medium is a format that:

  • is addressed personally to the consumer,
  • lets them store the information,
  • lets them access it unchanged for an appropriate period, and
  • lets them reproduce it.

Email clears that bar. A product page generally does not — you can edit it, restructure it, or take it down, and the consumer has no copy. That's precisely the gap the requirement exists to close: the information that informed a purchase decision shouldn't be able to quietly change afterwards.

Two obligations, not one

The product-page notice and the durable-medium record do different jobs. Doing the first well doesn't discharge the second. A store with a perfect product-page implementation and nothing in its order emails has done half the work.

On Shopify, that means the order confirmation email

Shopify's order confirmation is the natural fit: personally addressed, sent at the point of sale, and kept by the customer in their own mailbox where you can't reach in and alter it.

Which is where the practical problem starts.

Shopify has no API for notification templates

This is the constraint that shapes every implementation, and it's worth being blunt about because it's routinely glossed over.

There is no API to write Shopify notification templates. An app can't reach in and modify your order confirmation. Not with permissions, not with a scope you haven't granted — the capability doesn't exist.

So any honest implementation requires a manual paste-back: you copy your template into the tool, it transforms the text, you paste the result back into Shopify.

Be sceptical of automatic order-email claims

If a compliance app claims it updates your order confirmation automatically, it is almost certainly sending a separate email of its own after the order. That means your customer gets two emails, the guarantee information is divorced from the order record, and you've added a second sender to your post-purchase flow. It's a worse outcome dressed up as convenience.

Why the paste is more annoying than it sounds

The obvious approach — "just paste this snippet into your template" — falls apart on contact with Shopify's default order confirmation.

That template renders line items through several branching loops: parent items, bundle components, and different layouts depending on shipping and fulfilment state. If per-product guarantee information needs to sit with each line item, a merchant would have to find roughly five separate insertion points and get each one right, using whichever loop variable happens to be in scope at that spot.

That's not a reasonable ask, and it's where most DIY attempts go wrong — the snippet lands in one loop and silently misses items rendered through the others.

A transform that handles the loops for you

The approach we settled on is a deterministic text transform. You paste the whole template in once; it weaves the pieces into every parent line-item row and appends the notice block once before the closing </body>; you paste the result back.

Two properties matter:

It's pure text, not AI. The same input always produces the same output. For something that ends up in a legally-relevant customer communication, deterministic and testable beats clever.

It's idempotent. Injected regions carry unique markers, and re-running strips the previous injection before applying the new one. So when the artwork or the copy changes, you re-paste and get a correct template — not one with three generations of blocks stacked up.

The email-client constraint on the notice itself

One design detail worth knowing if you're building this yourself.

On a product page you can present the notice as a compact summary that expands to the full official artwork — the guidelines accommodate full information on first click. In email you can't: mail clients don't support <details>/<summary> reliably, so a collapsible block either renders permanently expanded or breaks outright.

The workable pattern is a compact block in the email that links through to the full official notice, opening in a new tab. Same principle, delivered in the one mechanism email reliably supports.

And the link needs to resolve to the notice in the customer's language, which means the same market-based language resolution the product page uses has to carry through to the email. We wrote about why that's harder than it looks.

A checklist for your own setup

Frequently asked questions


Related: which language the notice must appear in and which products need it at all.

This guide is written by the team behind an EU guarantee compliance app for Shopify. It's a practical implementation guide, not legal advice — for a definitive read on your obligations, talk to a lawyer in your market.

EU Warranty Label does this automatically

The mandatory notice renders in the shopper's own EU language on every product page, GARAN labels render where a producer guarantee qualifies, and you can export a dated compliance proof. The notice is free for unlimited products.

More guides