{"id":253948,"date":"2025-11-06T16:36:48","date_gmt":"2025-11-06T16:36:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/3dl-google-merchant-feed\/"},"modified":"2026-08-26T15:54:22","modified_gmt":"2026-08-26T15:54:22","slug":"3dl-product-feed-for-google","status":"publish","type":"plugin","link":"https:\/\/id.wordpress.org\/plugins\/3dl-product-feed-for-google\/","author":23134573,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"3DL Product Feed for Google Merchant Center","header_author":"3DragonLabs","header_description":"XML product feed for Google Merchant Center (WooCommerce). Variant URLs, EU unit pricing, coffee\/tea GPC auto, additional images. Admin mapping for GTIN\/EAN keys.","assets_banners_color":"0a1522","last_updated":"2026-08-26 15:54:22","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/3dragonlabs.com\/","header_author_uri":"https:\/\/3dragonlabs.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":599,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.7":{"tag":"1.1.7","author":"halogen11","date":"2025-11-28 15:43:28"},"1.2.0":{"tag":"1.2.0","author":"halogen11","date":"2026-08-26 15:54:22"}},"upgrade_notice":{"1.2.0":"<p>Major maintenance release for current WordPress\/WooCommerce, improved identifiers, caching, filtering and clean LITE-to-PRO compatibility.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3391356,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3391356,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3391356,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.7","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3391805,"resolution":"1","location":"assets","locale":"","width":1200,"height":613},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3391805,"resolution":"2","location":"assets","locale":"","width":1200,"height":184},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3391805,"resolution":"3","location":"assets","locale":"","width":1200,"height":370},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3391805,"resolution":"4","location":"assets","locale":"","width":1600,"height":900}},"screenshots":[]},"plugin_section":[],"plugin_tags":[282,31175,5418,889,286],"plugin_category":[45],"plugin_contributors":[250375],"plugin_business_model":[],"class_list":["post-253948","plugin","type-plugin","status-publish","hentry","plugin_tags-ecommerce","plugin_tags-google-merchant","plugin_tags-product-feed","plugin_tags-shopping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-halogen11","plugin_committers-halogen11"],"banners":{"banner":"https:\/\/ps.w.org\/3dl-product-feed-for-google\/assets\/banner-772x250.png?rev=3391356","banner_2x":"https:\/\/ps.w.org\/3dl-product-feed-for-google\/assets\/banner-1544x500.png?rev=3391356","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/3dl-product-feed-for-google\/assets\/icon-256x256.png?rev=3391356","icon_2x":"https:\/\/ps.w.org\/3dl-product-feed-for-google\/assets\/icon-256x256.png?rev=3391356","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/3dl-product-feed-for-google\/assets\/screenshot-1.png?rev=3391805","caption":""},{"src":"https:\/\/ps.w.org\/3dl-product-feed-for-google\/assets\/screenshot-2.png?rev=3391805","caption":""},{"src":"https:\/\/ps.w.org\/3dl-product-feed-for-google\/assets\/screenshot-3.png?rev=3391805","caption":""},{"src":"https:\/\/ps.w.org\/3dl-product-feed-for-google\/assets\/screenshot-4.png?rev=3391805","caption":""}],"raw_content":"<!--section=description-->\n<p>3DL Product Feed for Google Merchant Center creates a public XML feed for WooCommerce without requiring an external feed service.<\/p>\n\n<p><strong>Free version includes<\/strong><\/p>\n\n<ul>\n<li>Google Merchant feed at <code>\/3dl-gmc-feed.xml<\/code><\/li>\n<li>Simple products and product variations<\/li>\n<li>Variant URLs with selected attributes<\/li>\n<li>WooCommerce built-in GTIN support plus common EAN\/GTIN meta keys and custom keys<\/li>\n<li>Product-specific brand detection including WooCommerce Brands, with optional global fallback<\/li>\n<li>MPN detection from common\/custom meta keys; optional SKU-as-MPN fallback<\/li>\n<li>EU unit pricing attributes from an explicit supported weight or volume product attribute<\/li>\n<li>Required main image with featured\/variation\/gallery fallback, plus up to 10 additional gallery images<\/li>\n<li>Optional Google-only title per product and variation<\/li>\n<li>Filters by SKU, category, price and weight\/volume<\/li>\n<li>Optional exclusion of zero-price and out-of-stock items<\/li>\n<li>30-minute file cache with automatic invalidation when products or feed settings change<\/li>\n<li>Built-in feed diagnostics: checked, included and skipped item counts with skip reasons<\/li>\n<li>Developer filters for Google Product Category, brand, GTIN, MPN and product URLs<\/li>\n<\/ul>\n\n<p><strong>PRO version<\/strong><\/p>\n\n<p>The separately sold 3DL Product Feed for WooCommerce adds Zbo\u017e\u00ed.cz and Heureka.cz feeds, Google custom labels and licensed self-hosted updates. PRO uses the same <code>tdl_gmc_*<\/code> settings and Google title metadata, so upgrading does not require re-entering LITE settings.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Install <strong>3DL Product Feed for Google Merchant Center<\/strong>.<\/li>\n<li>Open <strong>3DL Google Feed<\/strong> in WordPress admin.<\/li>\n<li>Review brand and identifier settings if your store does not use standard WooCommerce fields.<\/li>\n<li>Add <code>https:\/\/example.com\/3dl-gmc-feed.xml<\/code> as a data source in Google Merchant Center.<\/li>\n<\/ol>\n\n<p>The legacy <code>?zd_gmc=1<\/code> endpoint from older 1.1.x releases is kept for backward compatibility.<\/p>\n\n<p>The plugin source language is English and a complete Czech (<code>cs_CZ<\/code>) translation is bundled in the plugin package.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20is%20a%20product%20missing%20from%20the%20feed%3F\"><h3>Why is a product missing from the feed?<\/h3><\/dt>\n<dd><p>The feed intentionally skips items that Google Merchant Center could not use reliably. A product or variation must be published, purchasable, have a usable title and price, pass the configured filters, and have a usable main image. The image is taken in this order: variation image, product featured image, then the first product gallery image. Products without any usable image are not emitted. Zero-price items are excluded by default; out-of-stock items remain in the feed as <code>out_of_stock<\/code> unless you enable their exclusion.<\/p>\n\n<p>Invalid GTIN\/EAN values are omitted from the XML instead of being sent to Google. An invalid GTIN by itself does not automatically remove the product from the feed.<\/p>\n\n<p>The <strong>Feed diagnostics<\/strong> section in the plugin admin shows how many candidate items were checked, how many were included, how many were skipped, and the skip reasons from the last generated feed. Use <strong>Regenerate feed &amp; diagnostics<\/strong> after making catalogue changes when you want fresh counts immediately.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20woocommerce%27s%20built-in%20gtin%20field%3F\"><h3>Does the plugin support WooCommerce's built-in GTIN field?<\/h3><\/dt>\n<dd><p>Yes. The WooCommerce product global unique ID is checked first when the installed WooCommerce version provides it.<\/p><\/dd>\n<dt id=\"does%20sku%20automatically%20become%20mpn%3F\"><h3>Does SKU automatically become MPN?<\/h3><\/dt>\n<dd><p>No. SKU and MPN are not necessarily the same identifier. You can enable <strong>Use SKU as MPN<\/strong> if that is true for your catalogue.<\/p><\/dd>\n<dt id=\"how%20is%20brand%20detected%3F\"><h3>How is brand detected?<\/h3><\/dt>\n<dd><p>The plugin checks product-specific brand\/manufacturer metadata, WooCommerce Brands (<code>product_brand<\/code>) and common brand attributes. A manually configured global fallback can be used when needed.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20google%20product%20category%3F\"><h3>How do I set Google Product Category?<\/h3><\/dt>\n<dd><p>Google Product Category is not hardcoded. Advanced users can provide it per product with the <code>tdl_gmc_google_category<\/code> filter.<\/p><\/dd>\n<dt id=\"can%20lite%20and%20pro%20be%20active%20together%3F\"><h3>Can LITE and PRO be active together?<\/h3><\/dt>\n<dd><p>They should not generate the same endpoint at the same time. LITE 1.2.0 automatically pauses its feed functionality when the PRO plugin is active, while preserving all settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Updated plugin metadata for current WordPress and WooCommerce releases.<\/li>\n<li>Added 30-minute file cache with automatic invalidation after product and feed-setting changes.<\/li>\n<li>Added optional Google-only titles for products and variations.<\/li>\n<li>Added product-specific brand detection including WooCommerce Brands.<\/li>\n<li>Added safer MPN handling; SKU is no longer treated as MPN unless explicitly enabled.<\/li>\n<li>Tightened GTIN validation to GTIN-8, GTIN-12, GTIN-13 and GTIN-14, including GS1 check digits and Google-restricted prefixes.<\/li>\n<li>Improved variation GTIN fallback to the parent product.<\/li>\n<li>Improved variant URLs and variant titles.<\/li>\n<li>Added filters by SKU, category, price and weight\/volume.<\/li>\n<li>Improved unit-pricing output and XML text cleanup; generic WooCommerce shipping\/product weight is no longer assumed to be net unit-pricing quantity.<\/li>\n<li>Removed store-specific brand\/category\/text cleanup from the public plugin.<\/li>\n<li>Added safe LITE\/PRO coexistence: LITE pauses when PRO is active.<\/li>\n<li>Products without any usable image are skipped because Google requires image_link for every item.<\/li>\n<li>Added an admin explanation of inclusion\/skipping rules, including missing images and invalid GTIN values.<\/li>\n<li>Added feed diagnostics with included\/skipped counts and per-reason breakdown, plus a manual regenerate action.<\/li>\n<li>Switched all plugin UI source strings to English and bundled a complete Czech (cs_CZ) translation.<\/li>\n<\/ul>\n\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>Previous WordPress.org release.<\/li>\n<li>Google Merchant XML feed with variants, GTIN\/EAN mapping, unit pricing and additional images.<\/li>\n<\/ul>","raw_excerpt":"Generate a Google Merchant Center XML product feed from WooCommerce products and variations.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/253948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=253948"}],"author":[{"embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/halogen11"}],"wp:attachment":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=253948"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=253948"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=253948"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=253948"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=253948"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=253948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}