Custom E-commerce Store GMC Compliance Checklist (2026)

Running a custom-built e-commerce store means you have no platform handling Google Merchant Center integration for you. No auto-generated feeds, no built-in schema markup, no default policy page templates. Every compliance requirement is your responsibility to implement. This guide provides the complete checklist for getting a custom store approved and maintaining compliance on Google Shopping.

GMC Compliance for Custom-Built Stores

Custom e-commerce stores — whether built with frameworks like Laravel, Django, Rails, or Node.js, or running on headless commerce architectures — have full control over their Google Merchant Center integration. That control comes with full responsibility. Every feed attribute, every structured data tag, every policy page, and every technical requirement must be implemented by your development team.

The upside is that you can optimize every aspect of your GMC integration without platform limitations. The downside is that there are no guardrails. Missing a single required attribute or technical requirement means disapprovals or suspension with no plugin to debug — just your own code.

This guide covers what Google requires from any e-commerce store, with specific implementation guidance for custom builds.

Feed Creation Options for Custom Stores

You have three primary methods for submitting product data to Google Merchant Center.

Google Content API for Shopping

The Content API is the most powerful option for custom stores. It lets you push product data directly to Merchant Center programmatically via REST API calls. Products are created, updated, and deleted in real time without generating files.

Key advantages:

  • Real-time updates — price and inventory changes propagate immediately
  • Full attribute support — every Google product attribute is available
  • Programmatic control — integrate feed management into your existing deployment and inventory systems
  • No file hosting — no XML files to generate, store, or serve

Implementation: use Google's client libraries (available for Python, Java, PHP, Node.js, Ruby, and .NET) or make direct REST API calls. Authenticate with a service account. Build a sync job that runs after every product update in your system.

The Content API is the recommended approach for custom stores with active development teams. It eliminates the synchronization lag inherent in file-based feeds.

XML/TSV Feed Files

Generate a product feed file from your database and host it at a URL that Google can fetch on a schedule.

XML (Atom) is the most common format. Structure your feed according to Google's product data specification with proper namespaces. Generate the file via a cron job or a build step that queries your product database and outputs the XML.

TSV (tab-separated values) is simpler to generate — one header row with attribute names and one data row per product, separated by tabs. Easier to debug by opening in a spreadsheet.

Host the generated file on your web server or CDN at a stable URL (e.g., https://yourstore.com/feeds/google-shopping.xml). In Merchant Center, configure a scheduled fetch that pulls the file at your preferred interval (at least daily).

Critical: your feed generation job must run after every significant data change (price updates, inventory changes, new products). A stale feed is the most common cause of disapprovals on custom stores.

Google Sheets (Small Catalogs)

For custom stores with fewer than 100 products, a Google Sheets feed works. Manually enter product data into a spreadsheet with columns matching Google's specification, and connect the sheet to Merchant Center as a feed source. Only viable for very small, rarely changing catalogs.

Scan your store now → — Works with all platforms and custom-built stores.

Required Product Feed Attributes

Every product in your feed must include these attributes. Since no platform auto-populates them for you, ensure your product database and feed generation logic handle each one.

  • id — Unique, stable identifier from your system. Do not change IDs once submitted.
  • title — Brand + Product Type + Key Attributes. Maximum 150 characters. First 70 characters most visible.
  • description — Detailed product description. Maximum 5,000 characters. Must match your product page.
  • link — Canonical product page URL. Must be the exact URL Google crawls. Must use HTTPS.
  • image_link — Direct URL to the main product image. Minimum 100x100px (250x250 for apparel). No watermarks or promotional text.
  • price — Current price with ISO 4217 currency code (e.g., "29.99 USD"). Must match your product page exactly.
  • availability — "in_stock", "out_of_stock", or "preorder". Must match your product page.
  • brand — Required for all products from known manufacturers.
  • gtin — UPC, EAN, or ISBN. Required for branded products. Set identifier_exists to false for custom/handmade items.
  • condition — "new", "refurbished", or "used".
  • google_product_category — Google's taxonomy ID or full category path.

Optional but recommended attributes for better performance: additional_image_link, sale_price, shipping, tax, color, size, material, gender, age_group, item_group_id (for variants), mpn, custom_label_0 through custom_label_4.

Implementing Structured Data

Since your store has no platform generating schema markup automatically, you must implement it in your templates.

Product Schema (JSON-LD)

Add a <script type="application/ld+json"> block to every product page. The schema must include:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Product Title",
  "image": "https://yourstore.com/images/product.jpg",
  "description": "Product description",
  "sku": "PROD-123",
  "brand": {
    "@type": "Brand",
    "name": "Brand Name"
  },
  "gtin13": "1234567890123",
  "offers": {
    "@type": "Offer",
    "url": "https://yourstore.com/products/product-123",
    "priceCurrency": "USD",
    "price": "29.99",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  }
}

This schema must be generated dynamically from your product data. The price, availability, and other attributes must match your feed and your visible page content exactly. Any mismatch between schema, feed, and page content is a compliance violation.

Additional Schema Types

Beyond product schema, add:

  • Organization schema on your homepage — includes your business name, logo, contact information, and social profiles
  • BreadcrumbList schema on product and category pages — helps Google understand your site structure
  • AggregateRating schema on products with reviews — boosts visibility in search results

Validate all schema with Google's Rich Results Test before submitting to Merchant Center.

Technical Requirements

Custom stores must meet Google's technical standards. No platform handles these for you.

SSL Certificate

Your entire site must be served over HTTPS. Every page — product pages, policy pages, checkout, and the homepage — must have a valid SSL certificate. Google's crawler will flag any HTTP page or mixed content. Use services like Let's Encrypt for free certificates, or your hosting provider's SSL offering.

Page Speed

Google evaluates your page load time as a compliance factor. Custom stores are entirely responsible for their own performance. Target a Largest Contentful Paint (LCP) under 2.5 seconds on mobile.

Essentials: optimize and lazy-load images, enable compression (gzip/brotli), use a CDN for static assets, minimize JavaScript bundle size, implement server-side caching, and use efficient database queries for product pages.

Mobile Responsiveness

Google evaluates your site on mobile devices. Your product pages, policy pages, and checkout must render correctly and be fully functional on smartphones. Product images, prices, descriptions, and add-to-cart functionality must all work on mobile. Test with Google's Mobile-Friendly Test.

Crawlability

Google's crawler must be able to access all pages you submit in your feed. Ensure:

  • No robots.txt rules block product pages or policy pages
  • Product pages return a 200 status code (not redirects or soft 404s)
  • Your server can handle Google's crawl rate without returning errors
  • Pages do not require JavaScript to render critical content (or use server-side rendering / pre-rendering)

Scan your store now → — Our scanner checks technical requirements, policy pages, and feed compliance.

Policy Pages for Custom Stores

You must create, host, and link every required policy page yourself.

Required Pages

  • Return and Refund Policy — Return window, eligible items, process, refund timeline, and who pays return shipping. Must describe your actual process, not generic placeholder text.
  • Shipping Policy — All shipping methods, costs, delivery estimates by region, and handling times. Must match what customers experience at checkout.
  • Privacy Policy — What personal data you collect, how you store it, who you share it with, cookie usage, and how customers can request data deletion. Must comply with applicable regulations (GDPR, CCPA, etc.).
  • Terms and Conditions — Legal agreement covering purchases, liability, intellectual property, and dispute resolution.
  • Contact Information — At least two contact methods: email, phone, contact form, or physical address. Must be clearly visible, not hidden in fine print.

Navigation Requirements

All policy pages must be linked from your site's header or footer navigation. Google's crawler discovers pages by following links from your homepage. A policy page that exists at a URL but is not linked from your navigation may not be found during compliance review.

Implement footer links to every policy page in your site's global template. Verify that Google can reach each page by checking your site's crawl in Google Search Console.

Common Issues for Custom Stores

Feed-to-Page Mismatches

The most common issue for custom stores. Your feed generation logic and your frontend rendering logic pull from the same database but may apply different transformations (tax calculations, currency formatting, sale pricing). Ensure both systems produce identical output for price, availability, and product titles.

JavaScript-Rendered Content

If your store uses client-side JavaScript frameworks (React, Vue, Angular) without server-side rendering, Google's crawler may not see your product data. Google can execute JavaScript, but rendering is delayed and unreliable for commerce pages where price and availability accuracy are critical. Implement server-side rendering (SSR) or static site generation (SSG) for product pages.

Inconsistent URL Structures

Custom stores sometimes have inconsistent URL patterns — product pages accessible at multiple URLs, URL parameters that create duplicates, or URL changes during site updates. Use canonical tags (<link rel="canonical">) on every page and ensure your feed uses the canonical URL as the link attribute.

Missing Error Handling

When a product is deleted from your database but still exists in your feed, Google encounters a 404 when crawling. Your feed generation must exclude deleted and unpublished products. Implement a product lifecycle that removes items from the feed when they are deactivated in your system.

No Monitoring

Platforms like Shopify send you alerts when products are disapproved. Custom stores have no built-in monitoring. Check Merchant Center's Products > Diagnostics regularly. Consider building automated alerts that notify your team when disapproval rates increase.

Custom Store GMC Compliance Checklist

  1. Choose a feed submission method: Content API (recommended), XML file, or Google Sheets
  2. Implement feed generation covering all required attributes
  3. Schedule feed updates to run after every product data change
  4. Add Product JSON-LD schema to every product page
  5. Add Organization schema to your homepage
  6. Verify SSL across your entire site
  7. Optimize page speed (target LCP under 2.5s on mobile)
  8. Ensure mobile responsiveness on all pages
  9. Implement server-side rendering if using JavaScript frameworks
  10. Create all required policy pages
  11. Link policy pages in your footer navigation
  12. Set canonical URLs on all product pages
  13. Configure shipping and tax in Merchant Center
  14. Test with Google's Rich Results Test and Mobile-Friendly Test
  15. Run a compliance scan to catch remaining issues

For the complete list of requirements, see the Website Requirements Guide. For feed attribute details, see the Feed Errors Guide. If you are considering a platform migration for easier GMC management, the WooCommerce GMC Guide and Magento GMC Guide cover self-hosted options with better built-in support.

Scan your store now → — Works with custom-built stores, Shopify, WooCommerce, and every other platform.

Frequently Asked Questions

What is the best way to create a Google Shopping feed for a custom-built store?+

The Google Content API for Shopping is the best option for custom stores with active development teams. It pushes product data to Merchant Center in real time via REST API calls, eliminating synchronization lag. For simpler setups, generate an XML or TSV feed file from your database via a cron job and host it at a URL for Merchant Center to fetch on a schedule.

Do I need structured data markup on a custom e-commerce store?+

Yes. Google uses Product schema markup (JSON-LD) to verify your feed data against your website. Since custom stores have no platform generating schema automatically, you must implement it in your product page templates. Include name, image, description, SKU, brand, GTIN, and an offers block with price, currency, and availability. Validate with Google's Rich Results Test.

What technical requirements does Google have for e-commerce websites?+

Google requires HTTPS across your entire site, fast page load times (target LCP under 2.5 seconds on mobile), mobile-responsive design, and crawlable pages that do not require JavaScript to render critical product data. Your server must handle Google's crawl rate without errors, and product pages must return 200 status codes with accurate, current product information.

How do I prevent feed-to-page price mismatches on a custom store?+

Ensure your feed generation code and your frontend rendering code apply identical transformations to product prices — same tax logic, same currency formatting, same sale price calculations. Run your feed generation after every price update. Use the Content API for real-time updates, or schedule XML feed generation to run frequently. Monitor Merchant Center diagnostics for mismatch alerts.

Does my custom store need server-side rendering for Google Shopping?+

If your store uses a client-side JavaScript framework (React, Vue, Angular) without server-side rendering, Google's crawler may not see your product data reliably. Implement server-side rendering or pre-rendering for product pages so that price, availability, and product details are in the initial HTML response. This ensures Google can verify your feed data against your live pages.

Check your store now

Free compliance scan — 47 rules checked in minutes.

Run compliance check