Missing hasMerchantReturnPolicy in Offer JSON-LD for Google Merchant listings

  • Posts: 443
  • Thank you received: 19
  • Hikashop Business
1 week 4 days ago #371020

Hi Nicolas.

I’ve identified a behavior in HikaShop’s structured data that may need review to improve compatibility with Google Merchant listings.

Context:

* On my product pages, HikaShop generates a JSON-LD block of type `ProductGroup`, with variants inside `hasVariant`.
* Each variant is generated as a `Product`, and each one contains its own `offers` block of type `Offer`.
* Inside each `Offer`, fields such as `url`, `itemCondition`, `priceCurrency`, `price`, and `availability` are correctly included.

Observed issue:

* In Google Search Console, within the “Merchant listings” report, I am getting warnings like:
`Missing field "hasMerchantReturnPolicy" in "offers"`
* I checked a specific affected URL, and the warning points directly to the `Offer` block generated by HikaShop.
* However, Google’s Rich Results Test does not flag this as a critical issue (only optional fields like `priceValidUntil`), but Search Console still reports the missing `hasMerchantReturnPolicy` in `offers` under Merchant listings.

My questions:

* Do you plan to add support for `hasMerchantReturnPolicy` inside `Offer` in the product/variant JSON-LD?
* If not, what would be the recommended way to implement it in HikaShop without modifying the core?

It would also be helpful to know if you plan to support:

* a global return policy at `Organization` level
* and product-level exceptions (e.g. personalized products), in a way compatible with Google Merchant Center / Merchant listings.

If needed, I can provide a real affected URL and the exact JSON-LD snippet generated by HikaShop.

Thank you.

Please Log in or Create an account to join the conversation.

  • Posts: 443
  • Thank you received: 19
  • Hikashop Business
1 week 4 days ago #371021

Nicolas, hi again,

I’ve noticed a very similar warning in Google Search Console related to the same `Offer` structure:

`Missing field "shippingDetails" in "offers"`

This appears in the same “Merchant listings” report and affects the same product pages.

So it seems that the issue is not limited to `hasMerchantReturnPolicy`, but rather that the `Offer` schema generated by HikaShop is missing several recommended fields for Merchant listings, such as:

* `hasMerchantReturnPolicy`
* `shippingDetails`

Both are marked as non-critical, but they are consistently reported across a large number of products.

This reinforces the idea that the current `Offer` implementation may not be fully aligned with Google Merchant listings requirements.

Would it make sense to consider adding support for these fields (especially `shippingDetails`) in a future update, or providing a built-in way to extend the `Offer` schema safely?

Thanks again.

Please Log in or Create an account to join the conversation.

  • Posts: 85393
  • Thank you received: 13962
  • MODERATOR
1 week 4 days ago #371022

Hello,

Thank you for reporting both of these.

We have added support for both `hasMerchantReturnPolicy` and `shippingDetails` in the product page JSON-LD structured data.

Return policy (`hasMerchantReturnPolicy`):
In the Google Products plugin settings, you will find a new "Return policy" section where you can configure:
- Return policy type (finite return window, unlimited, not permitted)
- Return window in days (when using finite window)
- Applicable countries (required, ISO 3166-1 alpha-2 codes, e.g. US or FR,DE,IT)
- Return fees (free return, customer pays, shipping fees, restocking fees)
- Return policy page URL

Shipping details (`shippingDetails`):
The shipping setting that was already available in the Google Products plugin for the XML feed is now also used to generate `OfferShippingDetails` objects in the JSON-LD. If you already have shipping rules configured (in the format `country:region:service:price:min_handling:max_handling:min_transit:max_transit`), they will automatically appear in the structured data on your product pages.

Both are applied to all offers, including variant offers when variants are included in the structured data.

These changes will be available in the next HikaShop update.

Last edit: 1 week 4 days ago by nicolas.

Please Log in or Create an account to join the conversation.

  • Posts: 443
  • Thank you received: 19
  • Hikashop Business
1 week 1 day ago #371047

Hi Nicolas,

Thank you very much for your reply.

Do you have an approximate date for this update?

Please Log in or Create an account to join the conversation.

  • Posts: 85393
  • Thank you received: 13962
  • MODERATOR
1 week 1 day ago #371048

Hi,

No date yet. It should be in April.
In the mean time, since these are not mandatory, I would recommend not doing any changes.

Please Log in or Create an account to join the conversation.

  • Posts: 443
  • Thank you received: 19
  • Hikashop Business
1 week 1 day ago #371059

Hi Nicolas.
Thank you again for your previous reply.

I have a follow-up question regarding return policies and shipping details.

In my case, I have a general return policy (for example, 15 days), but some products — especially personalized items — do not allow returns at all.

Similarly, for shipping:
• Most products follow a standard delivery time (1–3 working days)
• But personalized products have different handling and delivery times

So my question is:

Do you plan to support exceptions at product level (or category/custom field level) for:
• return policies (hasMerchantReturnPolicy)
• shipping details (shippingDetails)?

This would allow us to reflect real business logic more accurately in structured data, instead of applying the same global configuration to all products.

Thank you again for your work on this.

Please Log in or Create an account to join the conversation.

  • Posts: 85393
  • Thank you received: 13962
  • MODERATOR
1 week 18 hours ago #371064

Hello,

Good news, we have added per-product override support for both hasMerchantReturnPolicy and shippingDetails in the upcoming 6.4.1 release.

For the return policy, a new "Per-product return policy field" setting has been added to the Google Products plugin configuration. It allows you to enter the column name of a product custom field. You would create a dropdown custom field on your products with values like MerchantReturnNotPermitted, MerchantReturnFiniteReturnWindow, etc. Products where the field is set will use that value instead of the global return policy type. Products where the field is left empty will have no return policy in their structured data. Products that don't have the field at all will use the global setting as a fallback.

So for your use case with personalized items, you would:
1. Set the global return policy to MerchantReturnFiniteReturnWindow with your standard return window (e.g. 30 days)
2. Create a product custom field (e.g. a dropdown named "product_return_policy") with the return policy category values
3. Enter that field name in the "Per-product return policy field" setting
4. On your personalized products, set the field to MerchantReturnNotPermitted

For shipping details, the same mechanism applies. The shipping setting already supports entering a product custom field column name instead of a literal value. This was previously only working for the Google Merchant XML feed but it will now also work for the JSON-LD structured data on product pages.

The return_policy_days setting also supports per-product overrides by entering a custom field column name instead of a number.

Please Log in or Create an account to join the conversation.

  • Posts: 443
  • Thank you received: 19
  • Hikashop Business
1 week 17 hours ago #371070

Thanks Nicolas.

Please Log in or Create an account to join the conversation.

Time to create page: 0.073 seconds
Powered by Kunena Forum