google-listings-and-ads icon indicating copy to clipboard operation
google-listings-and-ads copied to clipboard

Google sync for non-US, non-Canadian shops is incompatible with dynamic tax rate plugins

Open lynnjat7 opened this issue 9 months ago • 3 comments

Describe the bug:

In the WooCommerce marketplace, there are several plugins that can automatically generate taxes.

Woo Tax, Stripe Tax, and Avatax can all be used with international sites - that is, non-US, non-Canada sites. When tax is calculated automatically using a plugin like this, it can only be calculated on the cart/checkout page as it requires the customer's address to calculate taxes.

For this reason, these plugins force the WooCommerce tax setting to be "show prices EXCLUSIVE of tax"

However, for all sites that are outside the US and Canada, Google requires prices to be submitted to them INCLUSIVE of tax, as per here: https://support.google.com/merchants/answer/7052209

Google for WooCommerce does submit prices inclusive of tax (using the generated tax tables) when submitting prices for non-US, non-Canadian shops.

However, this creates a mismatch -> Google sees the submitted price as different than the price on the actual product page, and flags a pricing difference; this has resulted in products getting suspended for misrepresentation for at least one merchant.

Steps to reproduce:

  1. Install Woo Tax and activate it on a non-US, non-Canadian shop -> this should force the price setting under WooCommerce > Settings > Tax to be "show prices exclusive of tax"
  2. Install Google for WooCommerce and sync products to Google
  3. Observe that the price submitted to Google does not match the price on the product page

Additional details:

It's unclear at this time if this is a bug, or an incompatibility, or if there is some kind of workaround.

I'm creating this topic for open discussion to see if other EU shops in particular (because they are supported by Woo Tax) have run into this issue, and if so, how they worked around it.

We do have a filter that can force prices to be submitted to Google without tax. It's this:

apply_filters( 'woocommerce_gla_tax_excluded', '__return_true' );

Using this filter should force the product page price to match the submitted price; however, this is deliberately submitting prices without tax which is against Google's policy.

Another potential workaround is to set up a feed rule on the Google Merchant Center side: https://support.google.com/merchants/answer/14994083

Here you could set up a feed rule for [price] that will multiply prices by a tax rate, like this:

Calculate: Multiply by: 1.2

But if you are an EU shop dealing with multiple countries and many different VAT rates, this is unlikely to result in price matches in all cases.

lynnjat7 avatar Feb 27 '25 12:02 lynnjat7

9451790-zen for internal reference

lynnjat7 avatar Feb 27 '25 12:02 lynnjat7

Thanks for providing a clear scenario.

I definitely don't want to play a finger pointing game. But the limitation we are working with is that in your Google Merchant Center account you can only manually enter US taxes:

Image

The only work around for that would be to sync multiple feeds (or multiple products) for each country where the items are being sold. That way tax inclusive prices can be synced for each individual country, in addition to that a unique landing page must be provided (can be with just a query string) so that Google sees each product with the local price for a specific country.

We are far from supporting any scenario like that though, so at the moment we have to continue working with a single product feed and a single set of landing pages.

One other setup that could be explored is to have the store default to store location:

Image

We would also need to match that with the setting to display prices in the store including tax.

If this is done then for Google it will behave as follows:

  1. Sync prices to the Merchant Center account including tax (using the tax from the store location)
  2. When Google scans the product landing pages they will be shown including tax, so no mismatch

For customers it will behave as follows:

  1. Customers will see the store / product pages initially with tax for the store location (this can be highlighted by presenting the user with a note regarding location and tax included prices)
  2. When the user proceeds to the cart / checkout and enters their final location, the prices will switch tax location and adjust accordingly

For the customer the behaviour will change only slightly, that it will go from excluding tax > local tax, to store tax > local tax.

You mentioned the plugin WooCommerce Tax, are you referring to this plugin: https://wordpress.org/plugins/woocommerce-services/

If that's the case and it's unable to setup a scenario where it defaults to store location tax and only changes to local tax, then maybe we need to have a discussion to make that possible.

Also for the EU, depending on the type of products you sell, you could pretty easily setup a standard tax table, which reduces the need for automatic tax calculations.

mikkamp avatar Feb 28 '25 15:02 mikkamp

Just clarifying here that by "WooCommerce Tax" we do indeed mean this plugin: https://wordpress.org/plugins/woocommerce-services/

It looks like the answer here is that this is an incompatibility. At this time, G4W cannot dynamically follow through on the dynamic tax rates to add taxes to the prices correctly; plus it is country-dependent (if not city/county/province dependent) and we would not have that information at time of syncing.

So, as taxes should be included when syncing to Google for non-US, non-Canadian companies, the only real way to do this is with fixed-rate tax tables. If these are set up and configured, then G4W will include those rates when sending prices to Google, as per Google's requirements.

I think we should leave this issue open for now just for reference. But the answer is that to sync to Google, you cannot have dynamically calculated taxes.

lynnjat7 avatar Mar 08 '25 15:03 lynnjat7