How Feed Fetching Works
When you set up a feed in Google Merchant Center using the "Scheduled fetch" method, you provide Google with a URL (typically something like https://yourstore.com/feed.xml) and a schedule. At the scheduled time, Google's servers send an HTTP request to that URL, download the file, and process the products in it.
This sounds simple, but there are many ways it can go wrong:
- The URL doesn't resolve (wrong URL, feed moved)
- Your server rejects Google's request (firewall, authentication)
- The server takes too long to respond (timeout)
- The SSL certificate is invalid or expired
- The file format doesn't match what Google expects
- The file is too large to process
Google will retry a failed fetch several times before marking the feed as "failed" in your GMC dashboard. A feed that consistently fails will eventually result in your products showing as "expiring" and then being removed from Shopping.
Google keeps product data for 30 days after the last successful fetch. If your feed fails to fetch for 30 days, your products will be removed from Shopping. This means a brief fetch failure won't cause immediate problems — but a week of repeated failures will start impacting your inventory freshness and eventually product availability.
Where to Find Feed Fetch Errors in GMC
In Google Merchant Center (Next), go to Products → Feeds. Click on the specific feed that's having issues. You'll see:
- Last fetch status (success or failure)
- Fetch history with timestamps and status for each attempt
- Error messages for failed fetches
- Processing results (products processed, items with errors)
The fetch history is where you'll see HTTP error codes like 404 or 403. Click on any failed fetch to see the full error details Google provides.
404 Not Found
What it means
Google sent a request to your feed URL and got a 404 — the server says that URL doesn't exist. This is the most common feed fetch error, and it almost always means the URL has changed.
Most Common Causes
- Platform migration: You moved from WooCommerce to Shopify, and the feed URL changed
- Plugin change: You switched feed plugins (e.g., from WooFeed to DataFeedWatch) and the URL format changed
- Feed file deleted: A caching issue or cleanup script deleted the feed file
- URL typo in GMC: You set up the feed with a slightly wrong URL from the start
- Store moved to new domain: You changed domains but didn't update the feed URL in GMC
How to Fix It
- Copy the feed URL from GMC and paste it directly into a browser (incognito window) to confirm whether the URL is working
- If the URL doesn't work: find your actual current feed URL from your feed app/plugin, update it in GMC under Feeds → [feed name] → Settings → Feed URL
- If the URL works in browser but Google gets a 404: see the robots.txt section below — Google's crawler may be blocked
403 Forbidden
What it means
The server found the URL but is refusing to serve the content to Google's crawler. This is an access control issue, not a missing file issue.
Most Common Causes
- DDoS protection blocking Google: Cloudflare or similar services can block crawlers they don't recognize
- IP blocking: Your server has rules that block Google's IP ranges
- Authentication required: Your feed URL requires login credentials that aren't configured in GMC
- Store in password-protected mode: Shopify "coming soon" mode, WooCommerce maintenance mode
- Directory permissions: The feed file was placed in a directory with restricted read permissions
How to Fix It
For Cloudflare blocking:
- In Cloudflare dashboard, go to Security → Bots
- Set "Bot fight mode" to off, or create a firewall rule to allow Googlebot (User-Agent: Googlebot)
- Alternatively, use Cloudflare's known bots allow-list and ensure Googlebot is included
For password-protected store mode:
- Take your store out of maintenance/coming-soon mode
- Or, in Shopify specifically: you can whitelist the feed URL in your store password settings
For authentication-required feeds: If your feed genuinely requires HTTP basic authentication, you can provide credentials directly in the GMC feed URL: https://username:password@yourstore.com/feed.xml — though this isn't ideal from a security standpoint. Consider making your feed URL publicly accessible on a non-guessable path instead.
Timeout Errors
What it means
Google's crawler connected to your server but the server took too long to start sending the response. Google's fetch timeout is typically 30-60 seconds. If your server takes longer than that to start delivering the feed file, Google aborts and marks it as a timeout.
Most Common Causes
- Large feed being generated dynamically: Your feed is generated fresh on each request rather than pre-generated and cached
- Slow shared hosting: Your server is under heavy load when Google attempts the fetch
- Database queries for large catalogs: A WooCommerce or Magento feed plugin that queries thousands of products on each request
- Server downtime: Your server was briefly down during the scheduled fetch time
How to Fix It
The most reliable solution for timeout errors is to switch from dynamic feed generation to a pre-generated, cached feed file. Generate the feed file on a schedule (e.g., every 6 hours via cron job) and store it as a static file. Google then fetches a static file that serves immediately, regardless of your database load.
For WooCommerce stores:
- Most good feed plugins (DataFeedWatch, WP All Export, CTX Feed) have a "generate and cache" mode — enable it
- Set feed generation to run at off-peak hours (2-4am), then schedule GMC's fetch for 2 hours later
For Shopify stores:
- Shopify-native feed apps generate feeds server-side and provide a stable URL — you shouldn't see timeout issues with reputable apps
- If you're using a custom feed solution, ensure it generates a static file rather than querying products on each request
For large catalogs (10,000+ products):
- Consider splitting into supplementary feeds by product category
- Use the GMC supplemental feed feature to manage multiple smaller feeds
SSL / HTTPS Errors
What it means
Your domain has an SSL certificate problem — expired certificate, self-signed certificate, or a certificate mismatch — that causes Google's fetch to fail security validation.
Common SSL Issues and Fixes
- Expired certificate: Renew through your hosting provider or Let's Encrypt. Most managed hosts auto-renew, but set an expiry reminder.
- HTTP feed URL in GMC: You set your feed URL as
http://instead ofhttps://. Update it to HTTPS in GMC feed settings. - Mixed content: Your feed file loads from HTTP even though your site is HTTPS. Ensure the feed file URL itself uses HTTPS.
- Subdomain not covered by certificate: Your certificate covers
yourstore.combut the feed is atcdn.yourstore.comwhich isn't on the cert. Use a wildcard cert or add the subdomain.
Robot and Crawler Blocks
A common source of feed fetch failures that doesn't show up as a standard HTTP error is when your robots.txt file blocks Google's feed fetching user agent.
Checking Your robots.txt
Visit https://yourstore.com/robots.txt and look for rules that might block Googlebot or Google's shopping crawler. The relevant user agents are:
Googlebot— Google's main crawlerGoogle-Shopping— Google's shopping-specific crawler (used for some feeds)AdsBot-Google— used for landing page quality checks
A robots.txt entry like this would block feed fetching:
User-agent: * Disallow: /feed*
If you need to block certain bots but not Google, be specific:
User-agent: Googlebot Allow: /feed.xml User-agent: BadBot Disallow: /
WordPress security plugins like Wordfence can block crawlers that trigger rate limits or look like bots. If Google's feed fetcher hits your site repeatedly in a short window (during processing), Wordfence may temporarily ban the IP. Whitelist Google's IP ranges or add Googlebot to your security plugin's allowlist.
Authentication Errors
Some feed setups require Google to authenticate before accessing the feed. This is more common with ERP-connected feeds or enterprise setups.
Setting Up HTTP Authentication in GMC
If your feed requires HTTP Basic Auth, you can provide credentials in GMC's feed settings. In the feed URL field, include credentials in the URL format: https://user:password@yourstore.com/feed.xml
Alternatively, use GMC's dedicated username/password fields in the feed settings (available in some GMC versions). This is more secure than embedding credentials in the URL.
OAuth Feeds
For feeds using OAuth (some enterprise platforms), GMC supports Content API credentials. This requires more advanced setup and is typically handled by a developer. Refer to Google's Content API documentation for implementation details.
Wrong Content Type Errors
What it means
Google successfully fetched the file but couldn't parse it as a valid product feed. The file content doesn't match the declared format.
Common Causes
- Feed URL returns an HTML error page instead of the feed: Your server returns a 200 OK status but the content is an error page — Google downloads it but can't parse it as XML/CSV
- Feed format mismatch: GMC is configured for XML but the URL returns a CSV file (or vice versa)
- Encoding issues: Non-UTF-8 characters in product titles or descriptions breaking the XML parse
- Invalid XML: An unclosed tag or illegal character in a product attribute causing the entire XML to fail validation
Diagnosing Content Type Errors
- Download the feed file directly by opening the URL in your browser
- Open the downloaded file in a text editor — is the content valid XML/CSV, or is it an HTML error page?
- For XML feeds, use an XML validator (xmlvalidation.com) to check for syntax errors
- Check GMC's feed diagnostics for specific row numbers where parsing failed
Preventing Future Fetch Failures
Once you've fixed the immediate error, set up monitoring so you don't discover the next failure days later:
1. Enable GMC Email Alerts
In GMC, go to Settings → Notifications and enable email notifications for feed processing issues. This ensures you hear about failures within hours, not days.
2. Test Your Feed URL Regularly
Set up a simple uptime monitor (UptimeRobot has a free tier) on your feed URL. If the URL returns a non-200 status or doesn't respond, you'll get an email. This catches server outages and 404s before GMC's next scheduled fetch.
3. Schedule Fetches at Off-Peak Hours
Schedule your GMC feed fetch for times when your server is under low load — typically 3-6am in your primary market's timezone. Avoid scheduling during product import jobs, database backups, or other heavy operations.
4. Use a Dedicated Feed URL
Use a stable, dedicated URL for your feed (e.g., /google-feed.xml) rather than a dynamically generated URL that might change. If you need to switch feed tools, you can redirect the old URL to the new one while updating GMC.
If your feed issues are part of a broader GMC account problem, run the GMCUnbanned free scan — it checks both technical issues like feed accessibility and compliance issues that might be affecting your account more broadly.