Invalid URL
Your product URL (the 'link' attribute) doesn't meet Google's URL formatting standards. Valid URLs must start with http:// or https://, use only valid URL characters (properly percent-encoded for special characters), and resolve to a real hostname. Common failures: URLs missing the protocol prefix, URLs with unencoded spaces or special characters, relative URLs that lack a domain, or URLs pointing to invalid hosts.
Invalid value [link] / URL not validImpact: Invalid URLs cause immediate disapproval. Google needs to crawl your product page to verify details — if the URL itself is malformed (missing protocol, invalid characters, improper encoding), Google can't access the page at all. Every affected product is pulled from Shopping until URLs are corrected.
Root Causes
- 1URL missing 'https://' or 'http://' prefix — just 'www.yourdomain.com/products/shirt'.
- 2Unencoded special characters in URL path — spaces, ampersands, or international characters not properly percent-encoded.
- 3Relative URLs used in the feed — '/products/shirt' instead of full absolute URL.
- 4URLs with query strings containing unescaped characters — '?utm_source=Summer Sale&category=Men's Shirts'.
- 5URLs with invalid characters that aren't URL-safe — spaces in paths, commas, semicolons not properly encoded.
Fix by Platform
- 1Shopify generates URLs correctly by default. If you're seeing invalid URLs, check: (1) custom feed modifications, (2) metafield-based URL overrides.
- 2Verify URLs in your feed: download the feed XML/CSV and spot-check the 'link' values. They should all start with 'https://' and contain only URL-safe characters.
- 3For international characters in product handles (café → café in URL): Shopify handles these with Punycode/URL encoding automatically, but verify the feed output is correctly encoded.
- 4Remove tracking parameters with unsafe characters: if you append UTM parameters via your feed app, ensure the values are URL-encoded (e.g., 'Summer Sale' → 'Summer%20Sale').
- 5Check for trailing whitespace: a URL like 'https://store.com/products/shirt ' (with trailing space) fails validation.
{{ product.url | prepend: shop.url }}
{% comment %} Always outputs full absolute URL {% endcomment %}When This Doesn't Apply
Check your store now
Free compliance scan — 47 rules checked in minutes.
Frequently Asked Questions
What makes a URL valid for Google Shopping?+
Must: (1) start with http:// or https:// (HTTPS strongly preferred and sometimes required), (2) contain a valid hostname that resolves to a real server, (3) use only URL-safe characters or be properly percent-encoded (%20 for space, %26 for &, etc.), (4) resolve successfully (return 2xx HTTP status), (5) be under 2,000 characters total. Any URL that doesn't meet all criteria is invalid.
How do I handle special characters in product URLs?+
Special characters must be URL-encoded using percent-encoding: space → %20, & → %26, ? → %3F, # → %23, / → %2F (in path segments), = → %3D, + → %2B. Most platforms do this automatically, but custom feed logic may miss some cases. Test URLs by pasting them into a browser — if they work cleanly, they're properly encoded. Use URL encoding functions (rawurlencode in PHP, encodeURIComponent in JS) when building URLs programmatically.
Can I use URL shorteners in the link attribute?+
No. Google requires the direct product URL, not a shortened link. URL shorteners create intermediate redirects that Google's crawler may not follow reliably, and they hide the actual destination domain (which needs to match your verified/claimed domain). Always use the full canonical product URL.
Do I need different URLs for mobile and desktop?+
Only if you have a separate mobile site (m.yourdomain.com). Responsive sites that serve the same URL on all devices don't need mobile_link. For separate mobile URLs: use 'link' for desktop and 'mobile_link' for the mobile-specific URL. Best practice: use responsive design with one URL — simpler, better SEO, no sync issues.