Magento 2 Google Shopping Feed
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.
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:
Products on Google Shopping automatically match relevant keywords and search queries. Shoppers will see items they are potentially interested in buying.
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.
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.
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.
Feed Preview
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.
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.
Save time by starting your support request online and we'll connect you to an expert.
0. ([#757]())0. ([#772]() follow-up)forloop.first and forloop.last work in feed templates. Both were computed from the product's internal id rather than its position in the loop, so {% if forloop.first %} never once matched and forloop.last fired on whatever product happened to carry the matching id — the documented way to write a feed-level value into a header produced nothing. Both flags, and forloop.notlast, now follow the loop's own position. ([#746]()){% capture %} around {% for p in context.products %} — came out blank: the end of the product loop stopped the rest of the document for that pass, so the field that reads the captured value was never rendered, and on the next pass the exhausted loop overwrote the value with an empty string. The captured value is now kept and carried between the passes of a chunked export, so a footer rendered only in the final pass still sees it, while a capture inside a {% for %} still recalculates per row. A capture interrupted part-way — by the export's time limit or by Stop — no longer publishes the half-built value it had accumulated, in a header, in an {% if %}/{% else %} branch or inside another capture: the field stays empty for the rest of that export rather than shipping a plausible-looking but truncated value. Very large captured values (over 64 KB) still reach the feed file in the pass that produced them, they are just not carried across passes. An export already in progress keeps running across the update.mst_feed/export/execute ran a complete export for anyone who knew it — no admin login and no permission check — and it could also be used to reset the progress of an export that was already running, or to have arbitrary code echoed back to a visitor's browser. That address, and the two controllers behind it (Mirasvit\Feed\Controller\Export and Mirasvit\Feed\Controller\Export\Execute), are gone; it now answers with a 404. Generation runs only through the admin — the Generate button, the feed's own schedule, or bin/magento mirasvit:feed:export on the command line — and every one of those enforces the admin session and the Feeds permission. If anything on your side fetched the old storefront address to trigger a feed (a monitoring check, an external scheduler, a cron entry calling wget/curl), switch it to the command line. (pm[#1119]())type column is removed from the mst_feed_rule table by setup:upgrade. Nothing in the extension has written to it since 2022; on stores installed after that it never existed, so the upgrade is a no-op there.Export\Liquid\BlankFileSystem, Model\Config\Source\ArchiveSource, and Model\Feed\Copier, which had been marked deprecated — use Mirasvit\Feed\Api\FeedRepositoryInterface::duplicate(), which the web API already exposes directly.Controller\Adminhtml\Feed\HistoryGrid), which had been failing with a server error on every request since the block behind it was deleted in 2023, and the "new custom feed" action (Controller\Adminhtml\Feed\NewCustom), which no button or menu item ever pointed at. Nothing you use in the admin changes; both addresses now simply answer with a 404 instead of a broken page.var/mst_feed/tmp) alongside the export's own scratch file, so admin and cron generation runs at full speed. (pm[#1153]())pub/media/feed/ — which, where several environments share one remote storage bucket (S3 / MinIO), meant a staging or beta store with no feeds wiping production's feed files. With no feeds there is now nothing to clean up and nothing is removed; where feeds do exist, orphaned files are still tidied away as before.0. Where the option you picked is stored as 0 — Out of Stock in Quantity and Stock Status, the NOT LOGGED IN customer group, the default store scope, or any attribute option that happens to carry id 0 — that entry was thrown away while the list was being read, so the rule matched nothing and the feed came out empty or short. All selected values are now kept.setup:upgrade after updating and filters save normally again. (pm[#1068]())var/log/mirasvit/feed.log with the filter's name and the reason, so a filter that is failing on every row can be found instead of quietly producing a wrong feed.{{ price | divided_by: pack_qty }} in a column, a single product whose pack_qty is empty or not a number aborted generation outright and produced no file at all. Dividing by an empty or zero value now leaves the value as it was, and a modulo by such a value returns 0, so the export finishes.secure, unsecure and media-URL filters no longer export the literal word Array when applied to a multi-value attribute — and no longer behave differently depending on whether the store runs in developer or production mode. Every value in the attribute now gets the URL rewrite and they are exported as a comma-separated list.Is Salable or Final Price still does — used to queue every other admin request behind it, including turning the very page you were counting. Measured on the QA host, turning to page 2 during a count went from 201 seconds to 1.2 seconds. The count itself is no faster; it simply happens in the background instead of stopping you from working.is_in_stock, is_in_stock_inventory, image, small_image, thumbnail — the shortcut the preview took asked a slightly different question than the export does, so a stale stock index was enough to make the two disagree (2046 previewed against 2045 exported). Those conditions are now always checked the way the export checks them, and the exported file itself is unchanged.stock (for example stock_level) alongside a stock condition no longer fails with an "Unknown column" database error.<g:brand/> or <g:brand></g:brand> — no longer fails to generate. Pressing Generate on such a feed stopped with the generic "a technical problem occurred" message and produced no file at all, on every feed that carried one. The empty element now reaches quality-control validation as an empty value, so a required-field rule reports it as missing, exactly as intended, and the export completes.We are committed to being open and transparent with our customers. When you purchase our module, you automatically receive one year of free support service and free updates.
Why is this important?
- Seamless Installation and Configuration: We understand that setting up a new module can take time to configure according to your specific needs. That’s why we offer a full year of free support. Our experienced team is here to assist you with installation, configuration, and any questions you might have. We're eager to share our expertise to ensure you get the most out of your purchase.
- Stay Updated with Magento (Adobe Commerce) Releases: Magento releases new versions approximately every three months. These updates can sometimes introduce compatibility challenges. To keep your store running smoothly, we provide a year of free access to the latest versions of our modules, ensuring that you can upgrade Magento and our modules without encountering any obstacles.
- Subscription Included: Renewing your subscription ensures continued access to the latest updates and support from our team. This means you can be confident that any issues you encounter with the extension will be resolved quickly and efficiently. You can cancel your subscription at any time without any additional fees.
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.
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.
30-days money back guarantee. If you are not satisfied with our extension performance for any reason, we provide a full refund.
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.
We provide an expanded user guide for every aspect of our extension, so you can find answers for all your burning questions.
You can customize extension according to your needs and requirements.
The Module is easy to install and upgrade, just follow our step-by-step user guide.
No core modifications. The extension has been tested in a Magento Cloud environment and is fully compatible with it.