Limit EU currency to display as a single flag in the dropdown menu?

Hi,

I’m looking for a way to limit the currency list show in the currency selector menu. Currently it is showing all available countries individually, whereas I’d rather it show a single EU/Euro option. Since Shopify switched around all of its settings and such almost all of the old topics/tutorials are now unusable.

Theme: Impulse 9.2.0

Thanks!

What you are seeing is now a country/region (market) selector, not a currency-only selector. In Shopify Markets, choosing a country can affect currency, product availability, language, domain and checkout behavior, so collapsing the submitted country values into one dummy “EU” option with CSS or Liquid can break localization.

There are two safer outcomes:

  1. If you want all EU countries to show the same EUR prices, put them in one multi-country market and use that market’s base currency instead of local currencies. You should still keep the real country choices for tax, shipping and availability.
  2. If you only want a cleaner visual control, the Impulse selector can be customized to show one compact “Europe / EUR” label that opens the underlying country list. That changes the presentation without replacing the country values.

Shopify’s current localization guide explains why the selector is country-based: https://help.shopify.com/en/manual/markets/getting-started/localization

Which result do you want: one compact visual label, or one actual EUR pricing setup for the whole EU market?

Thanks for the reply!

Ideally I’d like it to display a single visual in the list saying Europe (EUR €) rather than all of the individual countries currently listed in my EU market.

That makes this the presentation-only path.

There is one important behavior to decide before changing the theme: when someone clicks Europe (EUR €), should it expand the real EU country choices, or should it try to select one country automatically?

The first option is safe: the storefront stays compact, but Shopify still receives the customer’s real country for tax, shipping, availability and checkout. A single selectable “EU” value is not safe because Shopify ultimately needs an actual country.

If the compact row should expand the underlying countries, I can treat this as a small paid Impulse-theme adjustment with a clear boundary: duplicate theme only, selector presentation only, preserve all real country values, and verify desktop/mobile plus checkout handoff. No Markets or pricing configuration changes.

Should the Europe (EUR €) row expand the countries inline, or open them in a second panel?

Hi @Cjam,

Use these simple procedures to repair the currency selector and combine all European nations into a single option without risking your theme:

Navigate to Settings > Markets in your Shopify admin.

Click “Create market,” give it the name “Europe,” and include your desired European nations under “Includes”.

Click Save after setting the currency to Euro (EUR €).

I’d just like the singular EU option, not for it to expand. Obviously the pricing is ubiquitous across all nations using the euro, so there’s nothing to be gained by having them individually selectable. Tax and delivery costs are all determined by exact address during checkout, and aren’t important based on selected country I expect?

I’ve already got my Europe market set up exactly like this, but it still lists every individual nation in the currency drop down menu.

That clarification changes the scope. A non-expanding “EU” entry is not just a label change.

Shopify’s localization form submits a real country code, and there is no single EU country code. The selected country can affect the storefront before checkout — not only tax and delivery, but product availability, language, domain, pricing and market context. The shipping address can update the final checkout market, but it does not make a dummy EU storefront selection safe.

So I would not promise a CSS-only replacement or suggest that creating a Europe market will collapse the list; your current result confirms that it does not.

The honest next step would be a small fixed-scope feasibility check on a duplicate theme: document the current selector, test whether a single non-expanding presentation can preserve a valid country context, and return either a safe implementation path or a clear no-go/rollback note. No production change or Admin access would be needed for that first check.

If that bounded feasibility check is useful, say so and I can define the exact inputs and acceptance criteria.

Is there anyone here who isn’t just coughing out useless ai responses?

Hey, Markets will not collapse that list. Impulse is looping countries, not currencies.

Shopify’s localization form posts a country_code. The theme walks localization.available_countries, and there is no EU country code, so every country in your Europe market shows as its own flagged row.

Admin-only way to shorten it: Settings > Markets > Europe, and remove countries you do not actually sell to. If they stay in the market, Impulse will keep listing them.

If you want one line that says Europe (EUR €), that is a theme edit, not a Markets setting. Duplicate Impulse first. Search the theme for available_countries or country_code. Keep the localization form and the country_code input. Build the visible list by unique currency (country.currency.iso_code) instead of every country. For EUR, show one row and set country_code to one real country you use as the EUR default, like DE or your shop country.

Do not invent an EU option that posts a fake code. The form will fail or bounce them.

The storefront will treat that default country as selected until they type an address at checkout. That is usually fine if euro prices and catalog are already the same across those countries.

Hi @Cjam

You may do this by tweaking your theme’s country selector such that it groups by currency code and displays the currency only once.
For instance, if several countries within your EU marketplace use EUR, then you can change this so the following is shown:
Europe (EUR €)

Liquid will check the list of currencies already rendered to prevent duplicates from being rendered in the select.
In this way, currencies like EUR would be displayed only once, but all others would show their respective country and currency.
It works by iterating over localization.available_countries, finding the currency ISO code of the country and rendering the option if it is not in the list of already seen currencies.

The Below code need to add where country selector code added replace with below code:

  • Login to the Shopify Admin panel.
  • Go to Online Store → Themes.
  • Select your active theme and click ⋯ → Edit code.
  • Then search the code Localization and replace the below code and save it.
{% assign shown_currencies = '' %}
{% for country in localization.available_countries %}
{% assign currency_code = country.currency.iso_code %}
{% unless shown_currencies contains currency_code %}
{% assign shown_currencies = shown_currencies | append: currency_code | append: ',' %}
<option value="{{ country.iso_code }}">
{% if currency_code == 'EUR' %}
Europe (EUR {{ country.currency.symbol }})
{% else %}
{{ country.name }} ({{ currency_code }} {{ country.currency.symbol }})
{% endif %}
</option>
{% endunless %}
{% endfor %}

Thanks

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.

@Cjam One thing worth separating here is the selector UI from the market context Shopify actually resolves for the customer.

If you share one product URL plus one EU country where you want to verify the behavior, I can check the customer-market path through Drishq MarketCheck and report the resolved country context, product path and observed storefront result.

No install needed.