EU compliance5 min read
Different Ingredients for Each Product on Shopify, No Theme Edits
Same ingredients on every product page? Learn why a shared template block repeats, and how to add different ingredients and bold allergens per product with no Liquid.
In this guide
If every product page in your Shopify food shop shows the same ingredients, the text almost certainly lives in a block on the shared product template, so every product that uses the template prints the same words. To show different ingredients for each product, the ingredients have to be stored on each product and the block has to read them from there. Etiketto: EU Nutrition Labels does that with one form per product and one theme block, with allergens in bold and no Liquid.
This guide explains why the shared block repeats, compares the usual fixes, and walks through setting ingredients and bold allergens per product.
Written by the StoreFleet team. The first draft was AI-assisted and a person reviewed it. This is general information, not legal advice. Check what applies to your products against Regulation (EU) No 1169/2011 or with your food authority or a qualified adviser.
Why does every product show the same ingredients?
Most Online Store 2.0 themes, Dawn included, use one product template for the whole catalogue. When you add a rich text block or a collapsible tab to that template and type the ingredients into the theme editor, the text belongs to the template, not to the product. Every product on that template renders it.
That works for a shipping note that is the same everywhere. It does not work for ingredients, because a hazelnut spread and a rice cracker have different recipes. A shopper with a nut allergy who reads the hazelnut list on the rice cracker page has been given the wrong information.
What are the usual fixes, and what do they cost?
| Approach | Different per product? | Allergens in bold? | Upkeep |
|---|---|---|---|
| One text block on the shared template | No | Only by hand, same for every product | Low, but wrong for food |
| A separate template per product | Yes | By hand in each template | Grows with the catalogue; a layout change means editing every template |
| Metafields connected to theme blocks | Yes | Depends on the metafield type and your theme | Metafield definitions, block wiring and often a Liquid snippet for the nutrition table |
| A photo of the pack label | Yes | It is in the image | Not real text: hard to read on mobile, and search engines and screen readers can’t read it |
| A label stored per product, shown by an app block | Yes | Yes, where you mark them | One form per product, one block in the template |
The first four are built from tools your theme already has. They can work, but each one either repeats the same text or moves the per-product work into templates, wiring or images.
What does each product’s label need?
For food sold online into the EU, Regulation (EU) No 1169/2011 asks for the mandatory food information to be available before the purchase. On a product page, the parts that change from one product to the next include:
- the nutrition table
- the ingredients list, with the allergens emphasised so they stand out from the other ingredients
- the name and address of the food business operator
None of these can come from one shared block. For the detail on how allergens should be emphasised, see allergens on a Shopify product page. To check each product’s list against the 14 EU allergens before you mark them, use the free EU allergen checker.
How do I set different ingredients and bold allergens per product?
Etiketto: EU Nutrition Labels is a free Shopify app for food shops selling into the EU. It shows the food information Regulation (EU) No 1169/2011 requires on product pages: the nutrition table, ingredients with bold allergens, and the operator. Each label belongs to one product, so changing one product never changes another.
- Install the app and pick a product. Start with a best seller whose packaging you have to hand.
- Fill in the form for that product. The nutrition values, the ingredients and the operator go on one screen.
- Type this product’s ingredients and mark the allergens. Wrap each allergen in asterisks, for example
oat flakes, honey, *butter* (*milk*), sunflower seeds. The product page shows “oat flakes, honey, butter (milk), sunflower seeds”. No HTML tags and no Liquid. The app does not guess allergens: only the words you mark are bold. - Add the Food information block once. In the theme editor, add the Food information block to the product template of your Online Store 2.0 theme. You add it to the template once; each product page then shows its own label.
- Remove the old shared ingredients block. Otherwise shoppers see the shared text and the product’s own label side by side.
- Fill in the next product. Repeat steps 2 and 3. The block on the template stays as it is.
The label is shown as real text, not an image, so shoppers can read it on a phone and search engines can crawl it. For a walkthrough of the block itself, see nutrition table and bold allergens without Liquid.
How do I check that each product shows its own ingredients?
- Open two or three products with clearly different recipes on your live store.
- Check that each ingredients list matches that product’s packaging.
- Check that the allergens are bold in each list, and only the allergens.
- Check that the nutrition table and the operator appear on each page.
- Look at the same pages on your phone, including inside any tab or accordion.
When a recipe changes, update that product’s label before the new batch goes on sale.
FAQ
Why does my Shopify store show the same ingredients on every product? The ingredients are typed into a block on the product template, and every product that uses the template shows that block’s text. Store the ingredients on each product instead.
Do I need to edit Liquid to show different ingredients per product? Not with Etiketto. You fill in a form per product and add the Food information block to the product template in the theme editor. It needs an Online Store 2.0 theme.
How do I make only the allergens bold?
Wrap each allergen in asterisks in the ingredients list, such as *milk*. The product page shows those words in bold and leaves the rest plain.
Does the app check that my ingredients are correct? No. The values and wording come from you, and the app shows them as entered. Whether a label is right for your product stays your responsibility.
What does it cost? The label is free: nutrition table, ingredients with bold allergens and operator on your product pages.
Give each product its own label
If one shared block is giving every product the same ingredients, see Etiketto: EU Nutrition Labels or install Etiketto: EU Nutrition Labels from the Shopify App Store and fill in your first product.