Skip to content

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.

SourcePurposeExample schedule
Native Shopware feed — primary sourceProvides complete product information and determines which products are submittedGoogle fetches the XML file every 24 hours
App’s Google Merchant Center XML feed — supplemental sourceUpdates prices and availability for matching existing productsThe 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. Confirm that your native Shopware feed is already configured as a primary source.
  2. Check that its product IDs exactly match the Shopware product numbers you will export. This includes each variant’s own product number.
  3. Enable Advanced data source management in Merchant Center if the Supplemental sources tab is not visible.
  4. 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.
  5. Choose a separate, fixed filename, such as google-price-availability.xml. Use the same name in the app’s SFTP settings.
  6. 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.
  7. Activate your Merchant Center SFTP account and obtain its username and generated password. See Google’s SFTP submission instructions.

Create a profile using the export configuration workflow.

  1. Select Products as the entity.
  2. Select XML as the file type.
  3. In the Template dropdown beside the file type, select Google Merchant Center.
  4. Complete the settings that appear:
SettingWhat to enter
Store URLYour storefront’s full HTTP(S) URL, such as https://www.example-shop.de
CurrencyThe uppercase three-letter code of your Shopware default price currency, such as EUR
Feed titleA descriptive title; initially Price and Availability Update
Feed descriptionA 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.

The Google template includes three required mappings. Their output names are fixed, and default-value inputs are not available for these fields.

Shopware valueXML attributeExample
Product number (product_number)g:id93.1200053
Gross price (price_gross)g:price49.99 EUR
Stock (stock)g:availabilityin_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.

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.

Select SFTP as the output source and complete the existing connection form:

SettingValue
Hostpartnerupload.google.com
Port19321
Username and passwordThe SFTP credentials generated in Merchant Center, not your Google sign-in password
Remote pathThe upload directory for your Google SFTP connection; upload to its root rather than inventing a subfolder
Custom filenameThe 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.

  1. Review your product filters and save the profile.
  2. Run a manual export first and check the export log for generation or upload errors.
  3. In Merchant Center, check the supplemental source’s processing results. Confirm that product IDs match and that the expected prices and availability are applied.
  4. 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.
  5. Keep the native Shopware primary feed running on its existing schedule.
<?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>
ProblemWhat to check
Upload succeeds, but products are not updatedConfirm 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 productThis is expected if the linked primary source excludes them. They do not create new products.
Currency validation failsEnter the store’s default price currency. Changing the code does not convert the amount.
Price or currency data is missingCheck 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 storefrontThe template uses the stock rule above. Review products that can be purchased at zero stock.
SFTP connection failsCheck 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.