Hi @Cjam - confirming what @gotinker said: Markets has no setting for this. The list length comes from the theme looping localization.available_countries, so nothing in Settings → Markets will collapse EUR into one row.
One caution on the snippet above before you paste it. Two things to fix:
1. It only outputs <option> tags. Impulse’s country selector isn’t a <select> — it’s a disclosure list of links/buttons inside {% form 'localization' %}. Dropping raw <option>s in will break it. Keep the existing form and markup; only change which iterations render.
2. shown_currencies contains currency_code on a joined string is a substring match, and more importantly the option value ends up being whichever EU country happens to come first in the loop. That silently makes a random country your EUR default. Pick it explicitly.
Lowest-risk version - collapse only EUR, leave every other row exactly as the theme renders it:
Online Store → Themes → duplicate Impulse → ⋯ → Edit code → search for available_countries (in Impulse it’s usually snippets/disclosure.liquid). Inside that loop, right after {% for country in localization.available_countries %}, add:
{%- assign eur_default = 'DE' -%}
{%- if country.currency.iso_code == 'EUR' and country.iso_code != eur_default -%}
{%- continue -%}
{%- endif -%}
Then, where the row prints {{ country.name }}, swap in:
{%- if country.currency.iso_code == 'EUR' -%}
Europe
{%- else -%}
{{ country.name }}
{%- endif -%}
Set eur_default to whichever country you actually want EUR shoppers defaulted to (your shop country, or your biggest EU market). Don’t invent an EU code - the form posts country_code and a fake value will be rejected.
The bit that’s easy to miss: the selector’s toggle also prints the current country, usually localization.country.name. If a visitor lands on France, the closed dropdown will still read “France” while the list says “Europe”. Apply the same conditional there:
{%- if localization.country.currency.iso_code == 'EUR' -%}Europe{%- else -%}{{ localization.country.name }}{%- endif -%}
Two expectation-setters:
- The flag will be Germany’s, not an EU flag. Impulse renders the flag from the country code, and there’s no EU entry. If you want a real EU flag you’d have to add your own asset and swap the image when
currency.iso_code == 'EUR'.
- Checkout can still switch things. Once a shopper enters a shipping address, Shopify uses that country. This is only cosmetic tidying of the selector - fine if your EUR prices and catalog are identical across those countries, which is the normal Markets setup.
If you’d rather not touch Liquid at all, gotinker’s admin-only option stands: remove countries you don’t actually sell to from the Europe market, and the list gets shorter on its own.