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?