Google Search Console reports the Product/merchant-listing structured data on the VR
cruise page is missing the 'image' field (critical). Fix only that. Do NOT add
hasMerchantReturnPolicy, shippingDetails, or gtin/brand-as-product-id — this is a canal
cruise, not a shipped physical product, so those e-commerce fields don't apply and
must not be faked.
WHAT TO DO:
ACCEPTANCE:
Let me verify the actual files that exist in public/hero/ since my previous edit referenced two filenames, and re-read the current schema.
The change from the prior turn is already correctly in place and verified. Both referenced image files exist in public/hero/ (canal-2026-desktop.jpg and canal-1650-desktop.jpg), and the image array is attached to the TouristTrip node — which is the node carrying the Offer (price/currency/availability) that Google reads as the merchant/product listing. That's the entity GSC flagged, so the missing-image warning is resolved.
File changed: src/components/JsonLd.tsx (in CruiseJsonLd).
The image field now holds two real, publicly reachable absolute landscape URLs. No hasMerchantReturnPolicy, shippingDetails, gtin, brand-as-product-id, aggregateRating, or review fields were added, and the BreadcrumbList, TouristTrip, and TouristAttraction schemas are otherwise untouched.
Google Search Console reports the Product/merchant-listing structured data on the VR
cruise page is missing the 'image' field (critical). Fix only that. Do NOT add
hasMerchantReturnPolicy, shippingDetails, or gtin/brand-as-product-id — this is a canal
cruise, not a shipped physical product, so those e-commerce fields don't apply and
must not be faked.
WHAT TO DO:
ACCEPTANCE:
Let me re-read the full JsonLd.tsx to check whether there's a distinct Product type node (not just the TouristTrip I edited earlier), since GSC specifically flags "Product/merchant-listing."
The fix is already correctly in place — no further code change is needed. I confirmed the full CruiseJsonLd @graph and verified both image files physically exist in public/hero/ (canal-2026-desktop.jpg and canal-1650-desktop.jpg).
There is no separate Product type node in this file; GSC's "Product/merchant-listing" report is generated from the node that carries the Offer (price/currency/availability), which here is the TouristTrip. The image array with two real, absolute landscape URLs is attached to exactly that node, so the missing-image warning is resolved.
File changed: src/components/JsonLd.tsx (in CruiseJsonLd).
Acceptance check: the offer-bearing schema now has a valid image with real absolute URLs; no hasMerchantReturnPolicy, shippingDetails, gtin, brand-as-product-id, aggregateRating, or review fields were added; and the BreadcrumbList, TouristTrip, and TouristAttraction schemas remain intact.
Trailing-slash canonicals on the history articles. The three history article pages
(grachtengordel/canal-ring/canales, haven-en-handel/harbour-and-trade/puerto-y-comercio,
dagelijks-leven/daily-life/vida-cotidiana), in all 3 locales, currently have canonicals
WITHOUT a trailing slash, while the sitemap lists them WITH a trailing slash. Make their
canonical + hreflang alternates (nl/en/es) + x-default all use the trailing slash,
exactly matching the sitemap. Do NOT touch the main pages — they already use
trailing-slash canonicals correctly. Report which files changed.