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.17.4Nov 10, 2026
⚠️ Saving or duplicating a product filter no longer fails on stores upgraded from old versions — On some stores upgraded from old versions of the module, the mst_feed_rule table still carried the leftover columns actions_serialized, created_at and updated_at. The module has not used them for years, but because they are required columns with no default value, every attempt to save a new filter or duplicate an existing one was refused with "Column 'actions_serialized' cannot be null" (or the same error for created_at or updated_at), so filters could not be managed at all. An upgrade patch now drops all three leftover columns when they are present. The patch does nothing on fresh installs or on stores that already lack the columns. Run bin/magento setup:upgrade after the update.
Version 1.17.3Nov 6, 2026
Bundles whose children are all out of stock are no longer exported at price 0 — Magento prices a bundle from its in-stock selections only, so a bundle whose enabled children had all gone out of stock exported Final Price, Regular Price and Min Price as 0, and g:price in the shipped templates with it. These bundles are now priced from their enabled selections regardless of stock, the same way configurable and grouped products already were: the price after the bundle's own special or tier discount, with each selection taken at its configured quantity so a child's tier price counts, as on the storefront. Regular Price stays the undiscounted price, so a sale on such a bundle remains visible, and both are in the store's display currency.
The "Final Price" product filter reads the exported price — A bundle, configurable or grouped product whose children are all out of stock reports a raw final price of 0, so a filter such as Final Price > 0 dropped it from the feed although the feed exported a positive price for it. The filter now checks the same price the feed exports, so the filter and the feed agree.
Security improvements
⚠️ Constructor change for code that extends the feed filter condition — Mirasvit\Feed\Model\Rule\Condition\Product now takes Mirasvit\Feed\Export\Resolver\Product\PriceResolver. Code that extends this class or passes its arguments in its own di.xml needs to be updated.
Version 1.17.2Nov 4, 2026
Bundle Final Price attribute — A new Bundle Final Price product attribute (bundle_final_price) gives a bundle's price after discounts: its default selections at their default quantities, each at the guest price, with a dynamic bundle's own special or tier percentage applied the same way as on the storefront. With no discount it equals Bundle Regular Price. Before, the only option was Final Price, which for a bundle is the cheapest single-unit combination with no quantities. A template comparing it with Bundle Regular Price therefore flagged every multi-quantity bundle as on sale, which triggered Google Merchant Center "price mismatch" disapprovals. Use Bundle Final Price as the bundle sale price in your templates.
Faster feed exports — Product attributes that are not prices (SKU, name, description and so on) no longer run the guest-price check. That check ran a catalog price rule database query and switched the customer group for every attribute of every product, which cost about a third of the export time on templates with many attributes. Prices are still always exported as the guest (NOT LOGGED IN) price.
⚠️ Faster feeds grid when feeds have large validation results — The feeds grid counts each feed's validation errors and warnings on every load. On large validation results this took seconds per feed and could make the grid time out. A new (feed_id, severity) index on the mst_feed_validation table speeds up this count (about 2.0 s → 0.37 s on 524k rows). Run bin/magento setup:upgrade to add the index.
Feed admin pages check admin role permissions — Any admin role, whatever its permissions, could load 17 feed grids and forms, including the feeds grid, which contains FTP/SFTP passwords. Each now requires the matching feed permission. Pages under Filters now check the Filters permission, the same as the menu, so a role that has the feed section but not Filters no longer opens pages whose grids then refuse to load. The Feed report now checks the Feed report permission. Check your admin roles if some users need to keep access to these sections.
Feed admin actions require the admin secret key — Opening a link was enough to trigger Preview, the template library, validation, dynamic variable validation and dynamic attribute actions, bypassing Magento's secret key check. They now require the secret key or form key like other admin actions. The Preview and Validate popups now send the form key, so they keep working.
Feed templates are limited to product and store data — Template expressions can now read only data values, such as attributes, prices and store settings. Expressions that tried to reach Magento internal objects now return an empty value. Update to this version to close this security issue.
Dynamic variable codes are limited to letters, digits, "_" and "-" — Codes with any other characters are now refused on save with a translated message, and an existing variable with such a code no longer loads its file. Update to this version to close this security issue.
Preview errors are shown as plain text — Preview returned the error from a broken template tag as HTML, so markup inside the tag could run in the browser of the admin opening the preview. The error is now logged and shown as a translated plain-text "Preview failed" message.
Version 1.17.1Oct 29, 2026
⚠️ Old feed files are cleaned up per feed, not by a cron sweep — When a feed publishes under a new name (renamed, dated filename, changed type, compression or JSON framing), its previous file and JSON sidecar are removed once the export completes, and deleting a feed removes its file, sidecar and previews. A file that another feed of the store still publishes is kept, and a file that cannot be deleted (for example an S3 error) is logged instead of failing the export or the delete. The feed_clean_files cron job is removed, because when media/feed is shared with another Magento installation (such as one S3 bucket) the sweep deleted the other installation's live feeds. Files left over from earlier versions can still be removed with bin/magento mirasvit:feed:cleanup, which now warns that it also removes another installation's files in shared storage. The Mirasvit\Feed\Cron\CleanupOldFeedFilesCron class is removed.
⚠️ Constructor changes for code that extends the feed — Mirasvit\Feed\Cron\ExportCron now takes Mirasvit\Feed\Model\ResourceModel\Feed\CollectionFactory instead of the feed collection, Mirasvit\Feed\Model\Feed\Exporter and Mirasvit\Feed\Repository\FeedRepository take Mirasvit\Feed\Service\PublishedFileCleaner, and Mirasvit\Feed\Export\Resolver\Product\PriceResolver and Mirasvit\Feed\Model\Rule\Condition\Product take the new Mirasvit\Feed\Service\GuestPriceService. Code that extends these classes or passes their arguments in its own di.xml needs to be updated.
Disabled feeds are no longer exported on schedule — A feed that was disabled, or had its cron schedule switched off, could still be generated by cron: the export cron could reuse an already-loaded list of all feeds, and a feed queued while active and disabled before the queue ran was exported anyway. Both cases are fixed: the export cron now reads the feed list fresh on every run and re-checks that a feed is enabled and scheduled, and a queued generation of a feed that has been disabled since is skipped and marked as failed.
Feeds always export the guest (NOT LOGGED IN) price — A feed generated while a customer was logged in, or filtered on Final Price, could use that customer group's tier price or catalog rule price instead of the public price shopping channels must see. This affected simple products, configurable, grouped and bundle products (including the min_price of their children). Prices and the Final Price product filter now always use the guest price.
Scheduled feeds no longer skip a time slot around midnight — When a long export delayed a feed past midnight, a time slot configured late on the previous day was lost until its next scheduled day. That missed slot now runs late instead, and only when the feed's last run was yesterday, so a feed is never generated on a day it is not scheduled for.
Feed validation works for feeds migrated from older versions — Validation rules of migrated feeds were stored in the wrong format, so every such feed reported "Valid" whatever its content. An upgrade patch repairs the stored rules of existing feeds and templates, one record at a time, and leaves correct rules untouched. After the upgrade these feeds are validated for the first time, so they may show validation warnings or errors they did not show before.
FTP/SFTP password is no longer autofilled with the admin password — Browsers filled the feed's FTP/SFTP password field with the saved admin login, silently storing the wrong delivery password. The field now opts out of credential autofill. If a feed's delivery stopped working because of this, enter its FTP/SFTP password again.
Logo upload on feeds and templates — A logo is now saved only when its file was actually written, and the previous logo is kept otherwise. If the logo cannot be saved, the feed or template is still saved, the previous logo is restored, a clear error is shown instead of "You saved…", and you stay on the edit form.
Category mapping files no longer flood the log — Every complete read of a category mapping file was logged as a read failure; it is now logged only when a file really cannot be read. Mapping files stored on Amazon S3 are read reliably.
Shipped templates lock Framing and Marketplace — These two fields could be edited on a shipped template and the save was then refused; they are now locked like the template's other general fields.
Version 1.17.0Oct 26, 2026
Feed is listed in the Core AI settings — Advanced Product Feeds now appears in the "modules using AI functionality" list of the Mirasvit Core AI settings, using the default AI provider configured there.
⚠️ Requires Mirasvit Core 2.0 — The module now requires mirasvit/module-core 2.0.0 or later and the new mirasvit/module-ai-core package. Composer installs them with the update; run setup:upgrade afterwards. Code that extended or injected the Core helpers the feed no longer uses (Mirasvit\Core\Helper\Io, Mirasvit\Core\Helper\Image, Mirasvit\Core\Service\SerializeService, Mirasvit\Core\Service\YamlService) needs to be updated.
Image resizing works on remote media storage — The resize filter in feed templates now uses Magento's own image processor and works whether media is stored locally or on Amazon S3. Resized images are cached under pub/media/mst_feed/cache, so their URLs in the feed change once. Two exports resizing the same image at the same time no longer clash, temporary files are always cleaned up, and an image that cannot be resized is exported at its original URL and the failure is logged.
The feed export lock is kept on the local disk — The per-feed lock file now lives under var/ instead of pub/media, so locking works the same when media is on S3 or a network drive. Reset on a feed now removes this lock file too.
Older product filters keep working — Feed product filters saved in the old storage format, or imported from older YAML files, are still read correctly. A filter that cannot be read is logged and skipped instead of breaking the export, preview or filter form, and saving such a filter shows an error message instead of an error page.
Out-of-stock products no longer appear as "in stock" in feeds (MSI) — With Multi-Source Inventory, a product whose source was flagged In Stock with quantity 0 and backorders off was exported as in stock, and the Is in stock (inventory) filter kept it. This most often affected configurable products whose only variants were in this state, and sent unsellable products to Google and Facebook. Stock status and the filter now use Magento's salable check, based on the stock assigned to the feed's website. Filtering for out-of-stock products in the default fast mode no longer drops products that should be kept. The stock is looked up once per store instead of once per product.
A duplicated feed gets a sensible filename — Duplicating a feed named its copy after the internal working file, so it published as mst_feed_4.xml_copy.xml. The copy now takes the original's filename with _copy, or _copy2, _copy3 and so on if that name is already taken.
Two feeds can no longer publish to the same file — The duplicate-filename check on save compared internal names and never found a match, so two feeds with the same filename and type could overwrite each other's file. Saving a feed that would publish to the same file as another feed (same filename, extension and compression) is now refused. A feed with an empty filename is not checked.
CSV feed validation without a delimiter — Validating a CSV feed with no column delimiter set could crash on PHP 8 or pass a file it never checked on PHP 7.4. It now stops with a clear message asking you to choose a delimiter, translated into every supported locale. The tab delimiter is also recognised reliably on every PHP version.
AI profiles with a blank name — An AI profile could be saved with an empty or whitespace-only name through an update, the REST API or an import, leaving it with no label in the admin. A blank name is now refused on save, and an existing unnamed profile is shown by its code.
Fixed an error when the feed edit form was built outside a regular browser request, for example from the API or command line.
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...