Magento 2 Google Shopping Feed

View Demo

Create a feed file with the Google Shopping extension for Magento and get more orders while increasing your revenue.

The Google Shopping is a go-to sales channel for online stores to increase their revenue and customer base. Roughly 1 billion shopping sessions a day are conducted on this platform, according to Google.

Sell directly from the Google Search engine by placing your products on its dedicated Google Shopping tab. Get new audience by advertising your products in Google Ads on hundreds of websites.

  • Generate a fully compliant Magento 2 Google Shopping feed
  • Keep your feed always up to date with an automatic update option
  • Filter out products to be excluded from the Google Shopping schema
  • Easily configure what product attributes to include in the feed
  • See your feed success with its clicks, orders, and revenue statistics
  • Start with a Google-ready preset, copy it for related campaigns, or build a feed from scratch
  • Run pre-flight checks before upload to Google Merchant Center

ℹ️ Important: This sub-module is included in the Advanced Product Feeds extension.

Buying this item gives you access to all feeds including Facebook, Instagram, Google Shopping, and others in one powerful package.

Hyvä
Magento Cloud
Mage-OS
Compatible with:
Community:
2.3.* - 2.4.9
Enterprise:
2.3.* - 2.4.9

Business Value

Google Shopping is a proven sales channel to get you more orders. Roughly 46% of product searches begin on Google, and Google Shopping accounts for 36% of product discovery searches. Almost 35% of Google shoppers make a purchase within 5 days of searching for a product.

  • Problem: Presenting your product catalog on Google’s comparison shopping engine means you need to format data on your products within Google’s XML feed specification and taxonomy. Google also expects this info to be automatically updated.
  • Solution: Magento Google Shopping extension easily makes a product feed that is fully compliant with Google’s specification and automatically updates the feed. It tracks the feed business success and serves best for your business goals.

How Google Shopping feed drives your sales

Using the Google Shopping Magento extension to sell your products directly on Google, you can expect rapid sales growth. Here are three main reasons for this:

Match with shopper's interests

Products on Google Shopping automatically match relevant keywords and search queries. Shoppers will see items they are potentially interested in buying.

Reach wider audience

Google is the most popular search engine, serving millions of search queries per day. By selling on Google, you can reach a wider audience in a short time period.

One feed for multiple platforms

A Google Shopping feed can be used for selling on other sales channels. Facebook, Microsoft Bing, and dozens of other sales engines accept this feed.

Fully compliant with Google feed specification

Google Shopping extension generates a product feed that can pass the check by Google Shopping from the start. The shopping feed Google expects may have such information on products:

  • Basic product data
  • Price and availability
  • Product category
  • Product identifiers
  • Detailed product description
  • Shopping campaigns and other configurations
  • Destinations
  • Shipping
  • Tax

Some of the product info, like price and availability or product category, is mandatory. The corresponding attributes are included in the default feed template when you create it in the Magento Google shopping feed module.

To stand out your products from competitors, let your potential shoppers to fully see your products. For that purpose, include optional product data, such as additional images, expiration date, or mobile-optimized landing page. Google shopping extensions' capabilities allow you to present goods in the best way possible.

Two steps to get a feed

To speed setup, the builder opens on a start screen with popular destinations, an A–Z index for quick filtering, and instant search to help you pick the right preset.

Using a prebuilt template for Google Shopping, you can get the feed literally in a minute. Make a product feed in two steps:

  • Provide a feed file name
  • Click the Generate button

Then, simply copy and paste the feed file URL into your Google Merchant account. Alternatively, configure the FTP/SFTP feed file upload to Google if it suits you better.

However, typically, the Google Shopping product feed requires more than two steps as you may want to make it more personal. To stand out from competitors, you can edit the default feed template to change its output. For example, customize the template to add more product information and apply product filters to filter out irrelevant items.

For similar destinations, you can duplicate a preset, and both presets and feeds support helper metadata (logo, guide link, short note) for clearer organization.

Additionally, configure e-mail notifications regarding the feed status and reporting on the user statistics. Attach your UTM tags to track your feed access in Google Analytics.

Product Attributes

Configure your Magento Google product feed easily in a visual manner, no experience of working with XML required.

Simply click the Library of patterns and find a product attribute you want to include in your feed. Use the Preview function to get a view on the output the pattern delivers. Then copy the pattern and paste it in your feed template.

Magento Google product feed

Product Filters

Make your Google Shopping feed more effective by filling it with products that meet your business interests best.

For example, Google requires to exclude out of stock products otherwise it will disapprove the product. Additionally, you may want to promote only products of a specific price range.

Apply the Base Product Filter or Extended Filter or both to your product feed to filter out irrelevant products from your feedt.

Magento Google product feed

Feed Preview

Magento Google product feed

Make sure you get a perfect XML feed before it is uploaded to Google. Use the preview option to correct any misconfiguration that may occur when editing the feed default template.

You will see the output exactly as it will be received by Google Shopping. Check for possibly deleted mandatory attributes, tags have opening and closing elements, etc.

Having such a preview tool helps to save time by avoiding a rejection when the feed is uploaded to Google.

Feed Validation

Catch issues before export and avoid rejections. Validate any feed against your own rules and get a clear report before upload.

Set checks in Content Settings > Validation Rule, generate the feed, and run validation. If a rule is present, it can run automatically; you can also start it manually at any time.

Typical checks include title length, required fields, character encoding, price and currency formats, and dimensions, etc. Reports show line numbers and plain-language messages, so you can fix values, regenerate, and validate again.

Magento Google product feed

How to sell on Google Shopping with a product feed

To start selling on Google Shopping, Google Ads, and other Google services, the first thing you need to do is to create a product feed file. This file contains all information on your products you want to sell via Google services.

Next, create a Google Merchant account and configure the access to the feed file. You may set up Google Merchant to fetch your feed by the URL or FTP/SFTP.

The last step is to finish the setup of your Merchant account by providing such business info as shipping, taxes, branding, returns.

Finally, you can publish your product listings to start selling on Google.

Magento Google product feed
No hidden fees
Our developers install the extension on your store and configure it for your setup, free of charge.
Lifetime access to source code
Access to free support and updates for 1 year
Updates and support prolongation - $108

Pay today $179 for the first year.

Then $108 for updates and support services per year.

Cancel anytime.

30 days money back guarantee
See it in action!
Pick a quick tutorial to learn about various aspects of this extension
Customer Reviews 0
Earn points for your review about this extension modules. $1 = 10 points
Write Your Own Review

check-circle You submitted your review for moderation.

Manual & Support
Need more help?

Save time by starting your support request online and we'll connect you to an expert.

Changelog
Version 1.16.0Oct 21, 2026
Parquet feed type — Choose Parquet in the Type selector of a feed or template to publish your catalog as an Apache Parquet file, the columnar format read by data warehouses and analytics tools. Columns and their types (text, numbers, prices, lists) come from the template's declarations, and each value is converted to its column's type. The file is written in row groups across the export's passes, so large catalogs export without hitting time limits, and the output is checked against files written by the standard pyarrow library.
Parquet preview — Previewing a Parquet feed shows its column schema and a table of the rows it will write.
Parquet validation — bin/magento mirasvit:feed:validate checks a Parquet feed's file structure, and your field validation rules are applied to the rows of the file the feed published, read back row group by row group.
Custom JSON and Custom Parquet starter templates — The Custom Feeds block on the New Feed screen now offers blank JSON and Parquet templates alongside Custom XML, CSV and TXT, with typed price and weight fields and a list of additional images ready to edit. Existing stores get them on setup:upgrade.
Schedule a feed by cron expression — The feed's Scheduled task section has a new Schedule mode: Fixed times (the existing days-and-times picker, still the default) or Custom cron expression, which takes a standard five-field cron expression such as */15 8-18 * * 1-5. The expression is required in this mode and validated on save with the wrong field named, and a plain-language preview of when it will run updates as you type. The next run time is shown for both modes, and the schedule wording is translated into every supported locale.
Bundle Regular Price attribute — A new Bundle Regular Price product attribute exports a bundle's regular price calculated from its default selections, converted to the store's display currency like the other prices.
JSON Lines is now part of the JSON type — The standalone JSONL type is no longer offered in the Type selector; choose JSON with its "one object per line" framing instead. Existing JSONL feeds keep working and are shown as JSONL (legacy), but a new feed can no longer be created from a JSONL template, either in the admin or through the REST API.
Faster exports for feeds using attribute set, dynamic attribute, dynamic variable or category mapping values — These were loaded again for every product (a category mapping alone could cost over 20 database queries per product). They are now loaded once per feed export and reused, and an edited category mapping is picked up on the next export instead of an outdated copy being used.
Scheduled feeds start on time — The feed export cron job now runs every minute instead of every 30 minutes, so a cron-expression schedule fires in the minute it matches. A check that finds nothing due writes no history entry, and a feed that is still generating is skipped instead of being logged as an error. Looking up the last cron run is also a single lightweight query.
Google Merchant Center upload is offered only for CSV, TXT and XML feeds — The Google Merchant options no longer appear for JSON and Parquet feeds, which Merchant Center does not accept.
⚠️ New columns cron_mode, cron_expression and cron_started_at in the mst_feed_feed table, added by setup:upgrade.
Two exports of the same feed can no longer run at once and corrupt the file — On shared filesystems without file locking (NFS, AWS EFS), the per-feed export lock silently did nothing, so two exports of one feed could interleave their output (for example, duplicated <?xml?> headers). The lock is now held in the database and works on every filesystem. It is also released correctly when the lock file cannot be opened, and it nests safely on Magento 2.3, which allows only one database lock at a time, so scheduled and queued feeds keep exporting there.
A scheduled feed whose run failed or was stopped is no longer restarted right away — It now waits for its next scheduled time.
Feed prices are in the store's display currency and labelled with it — A configurable product's regular price and the price of products whose variants are all out of stock were exported in the base currency while other prices were converted. Every final price and regular price the feed outputs is now converted, and the bundled templates name the display currency next to them (Ceneje now fills in its currency code and regular price, and Fyndiq's old price reads the regular price).
Bundled templates no longer hardcode a currency — Fourteen templates printed a fixed code such as USD or RON, or left the currency empty, so stores with another base currency published mislabelled or unpriced feeds. They now use the store's base currency (Rozetka keeps UAH, its only currency).
Prices in bundled templates are rounded — The Ceneje, Kwanko, Fnac and VidaXL templates, and the new Custom JSON and Custom Parquet templates, printed converted prices unrounded (for example 24.0278 instead of 24.03). They now format them as prices, which also keeps Parquet price columns from coming out empty.
Custom JSON and Custom Parquet logos now match the style of the other Custom template logos.
Dynamic Variables are validated correctly — The syntax check reported every variable as invalid, including ones with correct code. It now checks the PHP code properly, without running it.
A missing Dynamic Variable file is reported instead of exporting a blank value — When a variable's PHP file is missing (for example after a server migration that did not copy var/), the feed exported the value empty with no warning. The export now finishes with a warning naming the affected variables, and the problem is written to the log. This check no longer re-reads the file for every product.
Saving a JSON or JSONL feed or template from the admin form no longer loses its content.
The XML editor of a JSON feed shows and saves the template you wrote, not its compiled internal version.
A feed validated with both field rules and declared-type checks no longer fails its export.
Parquet reliability — An interrupted Parquet export no longer publishes wrong rows; a number too large for a 32-bit float column is written as empty and reported instead of being stored as infinity; a damaged or truncated Parquet file is reported as a validation error instead of passing as clean; and a file the validation cannot read is written to the log instead of being silently ignored.
Fixed a PHP 8.5 deprecation notice caused by a template element without a declared type.
Fixed the AI Clear values confirmation ignoring its "overridden values" checkbox when the checkbox ID contained special characters.
Version 1.15.16Oct 14, 2026
"is not" condition for multiselect attributes in feed filters. Product filter conditions on a multiselect attribute (for example Activity or Material) now offer the is not operator. With one or more values selected, it keeps only products that have none of them: "Activity is not Hike, Sports" drops every product tagged Hike or Sports. Left empty, it keeps products that have any value set for the attribute and drops those where it is blank, which was not possible before. The filter gives the same result whether products are checked one by one or filtered directly in the database, and an unexpected stored value is safely ignored instead of being treated as a match.
The Library of Patterns in the feed template editor no longer fails to open. Depending on which other scripts happened to load first on the admin page, the widget could stop with a "_ is not defined" error in the browser console and stay unusable. It now loads the library it depends on itself, so it works on every page load.
Version 1.15.15Oct 6, 2026
A replaced feed or template logo now shows the new image straight away. Each logo is stored under the same file name every time you upload one, so the admin's link to it never changed and the browser or CDN kept showing the old, cached picture after a replacement. The logo link now changes whenever the image does, so the new logo appears at once. Clearing or replacing a logo also used to leave the old file behind in pub/media, and that stale picture could come back on the next upload; the old file is now deleted. This works on remote media storage such as Amazon S3 too.
Duplicating a feed or template no longer puts the original's logo at risk. A duplicate pointed at the same logo file as the original, so saving the copy or clearing its logo deleted the original feed's or template's logo as well. A copy of one of the bundled templates could delete the bundled logo (for example the Bing logo) in the same way. A duplicate now gets its own copy of the logo, and saving a feed or template only ever deletes a logo file that belongs to it, which also protects copies made before this update. Re-saving an existing feed also no longer replaces its own logo with a template logo of the same name; a feed takes its logo from a template only when it is created from one.
A {% capture %} block that loops over context.products now renders its content. A product loop placed inside a {% capture %} (for example, to compute a timestamp shown in the feed header) was mistaken for the feed's main product loop: once it had gone through the products it stopped the whole export, so the captured value and everything after it came out empty on every run. JSON Lines feeds built from column patterns were hit the same way, because each column is wrapped in a capture. Loops inside a capture now run through to the end and the rest of the feed renders normally; the main product loop works as before.
Products are no longer silently missing from a feed when an export is split into several runs. A large export pauses when it reaches its time limit (or is stopped) and continues in the next run. If that pause happened while a product loop nested inside the main product loop was running, as it does in JSON Lines feeds built from column patterns, the product being written at that moment was skipped and never appeared in the feed. Only the main product loop can now pause the export, and it does so between products, so every product's row is written in full.
Version 1.15.14Oct 2, 2026
Configurable and grouped products whose variants are all out of stock no longer export a price of 0. Magento only counts in-stock variants when it works out the price of a configurable or grouped product, so once every variant sold out the feed's price, regular price and final price came out as 0. Google Merchant Center then suspended the item for a £0 price, and services that read the feed, such as Klaviyo, picked it up as a free product. When no in-stock variant is left, the price is now calculated from all enabled variants, ignoring stock, so the product keeps its real price in the feed. Products with at least one variant in stock are priced exactly as before.
Unexpected errors in the feed and AI profile admin screens no longer show database details to the admin. When saving an AI profile, clearing its stored values, previewing it, or previewing a feed's JSON output ran into an unexpected error, such as a database failure, the raw technical message was shown on screen, including the SQL error code and the full database query. The raw message is no longer shown on any of these screens. Saving an AI profile, clearing its values and the feed JSON preview now show a short, translated message saying what failed, and the full details are written to Magento's exception log (var/log/exception.log) for your developer. Messages that explain what to fix in the form or template, such as "Choose a kind before previewing", are still shown as before. The new messages are translated into all 15 bundled languages.
Version 1.15.13Sep 30, 2026
Feeds that export category paths generate faster on large catalogs. The full category path (for example Men > Tops > Jackets) was rebuilt from the database for every product, even when thousands of products share the same few categories, so a large feed made one database query per product just for that column. Each path is now built once per category and store view during an export and reused for the rest of it. Category names still follow the feed's store view, and the output is unchanged.
AI optimization now works through products in a predictable order. Each AI run takes a limited batch of the products that still need work, but that batch was picked in whatever order the database happened to return rows, so which products got processed in a given run was unpredictable. The batch is now always the products with the lowest IDs that still need work, so the catalog is worked through steadily from one run to the next.
Reasons to choose Mirasvit
Client focusing and satisfaction

These are our primary. A major portion of our new clients come from referrals from our existing clients. Our professional team of developers, marketers and support staff have invested the best knowledge and experience in the field into our work, so you know you can come back to us again and again.

Remarkable support

One year free and high quality support. We go to great lengths to provide maximum satisfaction with every module you have purchased in our store. By helping you with installation, configuration, answering your every question, we do all our best to eliminate any possible problems.

Risk-free Investment

30-days money back guarantee. If you are not satisfied with our extension performance for any reason, we provide a full refund.

Constant improvements and upgrades

We constantly add new features to all our modules, and are always interested in hearing your opinion and implementing your suggested features in our future developments.

Comprehensive Documentation

We provide an expanded user guide for every aspect of our extension, so you can find answers for all your burning questions.

Unencrypted source code of our products

You can customize extension according to your needs and requirements.

Usability and Performance

The Module is easy to install and upgrade, just follow our step-by-step user guide. Additionally, the extension is ready to use with the Hyvä theme.

Ready for Magento Cloud

No core modifications. The extension has been tested in a Magento Cloud environment and is fully compatible with it.

Loading...