Home›Support›English Support›[Resolved] Mismatched Price in Schema Markup (EUR vs. USD) Despite WPML Multicurrency Setup
[Resolved] Mismatched Price in Schema Markup (EUR vs. USD) Despite WPML Multicurrency Setup
This thread is resolved. Here is a description of the problem and solution.
Problem: The client is experiencing a 'Mismatched Price' error in Google Merchant Center due to schema markup showing USD instead of EUR for German visitors on a WooCommerce site using WPML and WooCommerce Multilingual. Despite correct frontend display of prices, the schema markup does not reflect the visitor's currency. Solution: We explained that Google uses a bot to index websites, often from the USA, which is why USD is fetched as the currency. This behavior is determined by Google and not something we can directly influence. More information on how Google handles locale-adaptive pages can be found here: Google's documentation on locale-adaptive pages.
For the issue of displaying MAD for Moroccan visitors while maintaining language-based currency settings for others, we suggested implementing a geolocation-based override. This can be achieved via custom coding using the
wcml_client_currency
hook. More details on this hook can be found here: WCML client currency hook. If custom coding is required, we recommend hiring a professional from the WPML contractors list: WPML Contractors.
If this solution does not apply to your case, or if it seems outdated, we highly recommend checking related known issues at WPML Known Issues, verifying the version of the permanent fix, and confirming that you have installed the latest versions of themes and plugins. If further assistance is needed, please open a new support ticket at WPML Support Forum.
This is the technical support forum for WPML - the multilingual WordPress plugin.
Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.
Background of the issue:
I am trying to resolve a critical issue with multicurrency schema markup on my WooCommerce site using WPML and WooCommerce Multilingual. Despite configuring multicurrency settings, Google Merchant Center reports a 'Mismatched Price' error because structured data still shows USD instead of EUR for German visitors. My setup includes WPML + WooCommerce Multilingual configured for European countries like France and Germany (EUR), and the US (USD). The currency exchange rates are set to 1:1 for EUR/USD (manual pricing). Geolocation is enabled with caching support (Geolocate in WooCommerce), and I have added a valid maxmid key. I am using WP Rocket as a caching plugin, but it is not configured to exclude WPML cookies like wcml_currency. The frontend prices correctly display in EUR for German and French users (e.g., €95), but the schema markup still shows USD. This issue is causing Google Shopping disapprovals. Test URL: hidden link. Rich Results Test: hidden link.
Symptoms:
The schema markup shows USD instead of EUR for German visitors, leading to a 'Mismatched Value (Page Crawl) [Price]' error in Google Merchant Center.
Questions:
Why is the schema markup not reflecting EUR despite the code and multicurrency settings?
How can I ensure dynamic schema markup matches the visitor’s currency?
Is there a conflict with WPML’s geolocation and WooCommerce’s default settings?
I have checked your case, and I am afraid this is not something that we can affect or have any power over. Google uses a bot to index your website, and most of the cases are from the USA, which is why they fetch USD as currency.
It's Google that decides from which region it is crawling the site.
- hidden link
Your currency is showing fine and correct, just it depends on which location the user is visiting, and for Google bots, it is mostly the USA.
so what is the solution for my case, i have 2 languages and 3 currencies in my website, should i move to site language option? and why yoast Seo schema is not translated? is that the cause?
In this case if there is no solution i could switch to Language‑Based Currency, I’m currently using WPML with WooCommerce Multilingual in language‑based currency mode. For most languages, the store displays the default currency I’ve set per language. However, I would like to override this for visitors from Morocco so that they see prices in MAD (Moroccan Dirham), while all other visitors continue to see the default language‑based currency.
I have already added MAD to WooCommerce’s list of available currencies, but I’m unsure of the recommended approach to make this override work only for Moroccan visitors.
Could you please advise on the best practices or official solution for achieving this? Should I implement a geolocation‑based override (for example, via custom coding) or is there a WPML configuration setting that supports this scenario?
The best would be to hire an SEO agency and see how this impacts your score and if it needs changing, it might not need to since it works fine for user locations. I checked and I do not see a price currency mismatch, but some other errors in your case:
- hidden link
If it does impact your SEO score somehow, then setting per language could be better. But as said best to advise with an SEO professional.
As for Yoast SEO translation; if you are using our addon WPML SEO and following our guide and still have an issue with the translation of Yoast SEO, please open a new chat/ticket since we limit 1 issue per ticket, and we will be glad to check and help out.
ok thanks i understand, i already switched to language based, now i'm wondering if there is any manipulation to show MAD currency for Moroccan visitors? maybe using a WPML hooks?
We use cookies to optimize our website and services. Your consent allows us to process data such as browsing behavior. Not consenting may affect some features.
Functional
Always active
Required for our website to operate and communicate correctly.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
We use these to analyze the statistics of our site. Collected information is completely anonymous.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
These cookies track your browsing to provide ads relevant to you.