Ask or search…

Multi Currency Support

Please note that this article only applies to Shopify Multi-currency.
There are various 3rd party multi-currency providers for Shopify but we are currently only able to support Shopify multi-currency.
You can determine if a store is using Shopify multi-currency by checking if multiple currencies are enabled in the Shopify Payments section of the store's settings.
If you do not have access to the store's settings, you can navigate to the store and open Chrome's developer tools. If you switch currencies, entering Shopify.currency in the console should reflect the currency change. If it doesn't, the chances are a 3rd party is being used.

Theme Changes

You may need to make some theme changes to ensure the active price variation is displayed in the debug toolbar. The debug toolbar can be activated by appending nostodebug=true to your store's URL.
The active price variation EUR matches the selected currency.
If the active price variation is not displayed, you can apply Nosto to your theme by following our installation guide.
If you prefer to manually edit your theme, you can to add the snippet below to the nosto-tagging.liquid file in your theme. You can read about how to edit your theme’s code in Shopify’s help center.
Please note that recommendations will not be visible after editing the theme until you complete the multi-currency setup.
The snippet:
{% if shop.enabled_currencies.size > 1 %}
{% for currency in shop.enabled_currencies %}
{% if currency == cart.currency %}
<div class="nosto_variation" style="display: none;">{{ currency.iso_code }}</div>
{% endif %}
{% endfor %}
{% endif %}
Editing theme file in Shopify

Multi-Currency Settings

Once your theme has been updated, you can then go to your multi-currency settings in Nosto.

Enabling Multi-currency

First set the primary currency to your store’s base currency. Then enable exchange rates and save.
Setting the primary currency
After you save, you will see a warning that no exchange rates have been sent yet. This warning will disappear after a few minutes when we have determined the exchange rates used by your store.

Product Reindex

At this point, we will need to reindex all of your products. Instructions on how to do this can be found in our Product Reindex help center article.

Rounding Rules

We use the default rounding values as described by Shopify. You can change these if you have configured Shopify to use different rounding rules.
Editing the rounding rules

Price Formats

Price formatting can be configured at the bottom of the page.
Price formats
Price format
Finally, you can verify that currency conversion is working as expected by viewing recommendations on your store and comparing the prices of the recommended products with the prices displayed on the product page.

Fetch Product Prices in Presentment Currency (legacy)

This older approach can be used to fetch the correct product prices for onsite recommendations when Shopify multi-currency features are used which are not supported by Nosto.
Our client script has the function Nosto.setPresentmentPricesUrl() which has the following parameters:
  • priceElement The CSS selector used to find elements where the presentment price should be inserted
  • productUrl The attribute name of the element that contains the product URL
  • fetchListPriceFetch the list price (aka compare_at_price). Otherwise fetch the price.
  • variantId (Optional) The attribute name of the element that contains the variant id.
This recommendation template snippet works with the function:
#foreach($product in $products)
<span class="nosto_money" x-nosto-url="$!product.url" x-variant-id="123456"></span>
<script type="text/javascript">
Nosto.setPresentmentPricesUrl('.nosto_money', 'x-nosto-url', true, 'x-variant-id')
If all prices are being formatted with the dollar symbol, regardless of the selected currency, you may need to ensure that the Shopify.money_format variable is correctly set to include the currency symbol. If not, you can add this snippet to your theme
var Shopify = Shopify || {};
Shopify.money_format = {{ shop.money_format | json }};