Hourly Google Merchant Center Price and Availability Updates
Keep your native Shopware product feed as the main source of product information in Google Merchant Center. In the workflow described here, Shopware generates the XML file and Google fetches that primary data source once every 24 hours. Even if Shopware updates the file sooner, price and stock changes may not reach Merchant Center until Google’s next scheduled fetch.
With Improved Import, Export & Mass Actions, you can upload a separate XML file with product numbers, prices, and availability directly to Google through SFTP every hour. This additional automation workflow supplies supplemental updates between Google’s daily fetches of the main feed. You continue to use the native Shopware feed for product names, descriptions, images, and other catalog information.
How the Two Sources Work Together
Section titled “How the Two Sources Work Together”| Source | Purpose | Example schedule |
|---|---|---|
| Native Shopware feed — primary source | Provides complete product information and determines which products are submitted | Google fetches the XML file every 24 hours |
| App’s Google Merchant Center XML feed — supplemental source | Updates prices and availability for matching existing products | The app uploads an XML file through SFTP every hour |
Uploading through SFTP does not make a file supplemental automatically. You configure its source type and connection to the primary source in Merchant Center.
1. Prepare Google Merchant Center
Section titled “1. Prepare Google Merchant Center”- Confirm that your native Shopware feed is already configured as a primary source.
- Check that its product IDs exactly match the Shopware product numbers you will export. This includes each variant’s own product number.
- Enable Advanced data source management in Merchant Center if the Supplemental sources tab is not visible.
- Create a file-based supplemental source and link it to your primary source. Match the product IDs, language, and feed label as described in Google’s guide.
- Choose a separate, fixed filename, such as
google-price-availability.xml. Use the same name in the app’s SFTP settings. - Configure attribute rules so that supplemental updates are used for price and availability. Google documents the Take latest rule for this workflow; review the result against your primary-source rules.
- Activate your Merchant Center SFTP account and obtain its username and generated password. See Google’s SFTP submission instructions.
2. Configure the Export Profile
Section titled “2. Configure the Export Profile”Create a profile using the export configuration workflow.
- Select Products as the entity.
- Select XML as the file type.
- In the Template dropdown beside the file type, select Google Merchant Center.
- Complete the settings that appear:
| Setting | What to enter |
|---|---|
| Store URL | Your storefront’s full HTTP(S) URL, such as https://www.example-shop.de |
| Currency | The uppercase three-letter code of your Shopware default price currency, such as EUR |
| Feed title | A descriptive title; initially Price and Availability Update |
| Feed description | A short description; initially Hourly price and availability update |
The app checks that the currency matches the default product-price currency. This setting does not convert prices. The feed uses the product’s default gross price; verify that this is the price shown to customers, especially if your storefront uses rule-based or advanced pricing.
Selecting Default instead of Google Merchant Center uses the normal XML export format.
3. Review the Predefined Mapping
Section titled “3. Review the Predefined Mapping”The Google template includes three required mappings. Their output names are fixed, and default-value inputs are not available for these fields.
| Shopware value | XML attribute | Example |
|---|---|---|
Product number (product_number) | g:id | 93.1200053 |
Gross price (price_gross) | g:price | 49.99 EUR |
Stock (stock) | g:availability | in_stock |
Stock is converted to an availability status:
- Greater than zero:
in_stock. - Zero or below:
out_of_stock.
The file contains availability, not the numeric stock quantity. If your shop allows purchases when stock is zero, check whether this stock-based rule matches your storefront before using the feed.
Variants and Inherited Prices
Section titled “Variants and Inherited Prices”For the Google template, variants without their own price use the inherited parent price even when the generic inherited-value export option is disabled. A variant’s own price takes precedence.
Each variant must have its own matching g:id. Sending a parent product’s ID does not update all its variants, and a parent SKU used as item_group_id in the primary feed is not a variant’s product ID.
If the native primary feed excludes parent products but this supplemental file contains them, unmatched parent rows do not create new products. Supplemental sources cannot add or remove products. Matching the product selection of your primary feed still avoids unnecessary rows and makes troubleshooting easier.
4. Configure SFTP Delivery
Section titled “4. Configure SFTP Delivery”Select SFTP as the output source and complete the existing connection form:
| Setting | Value |
|---|---|
| Host | partnerupload.google.com |
| Port | 19321 |
| Username and password | The SFTP credentials generated in Merchant Center, not your Google sign-in password |
| Remote path | The upload directory for your Google SFTP connection; upload to its root rather than inventing a subfolder |
| Custom filename | The exact filename registered for the supplemental source, including .xml |
Test the connection. Use a fixed filename without [timestamp] or [datetime] placeholders so each upload updates the same registered file. Keep it different from your primary feed’s filename.
See Custom Export File Name (FTP/SFTP) for the filename setting and overwrite behavior.
5. Test and Enable Hourly Updates
Section titled “5. Test and Enable Hourly Updates”- Review your product filters and save the profile.
- Run a manual export first and check the export log for generation or upload errors.
- In Merchant Center, check the supplemental source’s processing results. Confirm that product IDs match and that the expected prices and availability are applied.
- Enable the profile’s schedule and select Every hour. Choose the minute and timezone in the scheduler, then save the profile. Available scheduling options depend on your plan.
- Keep the native Shopware primary feed running on its existing schedule.
Example XML
Section titled “Example XML”<?xml version="1.0" encoding="UTF-8"?><rss xmlns:g="http://base.google.com/ns/1.0" version="2.0"> <channel> <title>Price and Availability Update</title> <link>https://www.example-shop.de</link> <description>Hourly price and availability update</description> <item> <g:id>93.1200053</g:id> <g:price>49.99 EUR</g:price> <g:availability>in_stock</g:availability> </item> </channel></rss>Troubleshooting
Section titled “Troubleshooting”| Problem | What to check |
|---|---|
| Upload succeeds, but products are not updated | Confirm the supplemental source is linked to the correct primary source. Check exact IDs, language, feed label, processing results, and price/availability rules. |
| Parent rows have no matching product | This is expected if the linked primary source excludes them. They do not create new products. |
| Currency validation fails | Enter the store’s default price currency. Changing the code does not convert the amount. |
| Price or currency data is missing | Check the product’s price and, for a variant, its parent’s price. Google exports resolve inherited prices, but cannot invent a price missing from both products. Review the export log. |
| Availability differs from the storefront | The template uses the stock rule above. Review products that can be purchased at zero stock. |
| SFTP connection fails | Check the Google host, port 19321, and Merchant Center SFTP credentials. Google notes that newly activated credentials may take several hours to work. |
For general export issues, see Troubleshooting.