Генерація фіду товарів для Google Merchant Center

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Генерація фіду товарів для Google Merchant Center
Середня
~2-3 робочих дні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Генерація каталогів товарів для Google Merchant Center

Google Merchant Center приймає дані тільки в суворо регламентованому форматі — XML (RSS 2.0 або Atom 1.0) або через Content API. Будь-яке відхилення від специфікації призводить до відхилення товарів і втрати трафіку зі Shopping-реклами. Розробляємо генератор каталогу, який проходить валідацію з першої спроби та автоматично залишається актуальним.

Що входить до роботи

  • Аналіз структури каталогу та маппінг полів на атрибути GMC
  • Генерація XML-каталогу за специфікацією Google Product Data Specification
  • Налаштування cron-задачі або webhook-триггера для оновлення каталогу
  • Реєстрація каталогу в аккаунті Merchant Center та первинна діагностика помилок

Обов'язкові та рекомендовані атрибути

Атрибут Обов'язковість Примітка
id обов'язковий унікальний SKU, не змінюється
title обов'язковий до 150 символів, без великих букв
description обов'язковий до 5000 символів
link обов'язковий канонічний URL товару
image_link обов'язковий HTTPS, мін. 100×100 px
price обов'язковий формат 19.99 USD
availability обов'язковий in_stock / out_of_stock / preorder
brand рекомендований обов'язковий для одягу, електроніки
gtin рекомендований підвищує Quality Score
google_product_category рекомендований числовий ID з таксономії Google
custom_label_0..4 опціональний сегментація в Smart Shopping

Структура XML-каталогу

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
  <channel>
    <title>Назва магазину</title>
    <link>https://example.com</link>
    <description>Каталог товарів</description>
    <item>
      <g:id>SKU-12345</g:id>
      <g:title>Кросівки Nike Air Max 270 чоловічі чорні</g:title>
      <g:description>Бігові кросівки з технологією Air Max...</g:description>
      <g:link>https://example.com/products/nike-air-max-270</g:link>
      <g:image_link>https://cdn.example.com/products/nike-270-black.jpg</g:image_link>
      <g:availability>in_stock</g:availability>
      <g:price>8990.00 RUB</g:price>
      <g:brand>Nike</g:brand>
      <g:gtin>0012345678905</g:gtin>
      <g:google_product_category>187</g:google_product_category>
      <g:condition>new</g:condition>
      <g:custom_label_0>sale</g:custom_label_0>
    </item>
  </channel>
</rss>

Генератор на PHP/Laravel

class GoogleMerchantFeedGenerator
{
    public function generate(): string
    {
        $products = Product::with(['images', 'category', 'brand'])
            ->where('is_active', true)
            ->where('stock', '>', 0)
            ->cursor(); // cursor() для великих каталогів — не навантажує RAM

        $xml = new \XMLWriter();
        $xml->openMemory();
        $xml->setIndent(true);
        $xml->startDocument('1.0', 'UTF-8');
        $xml->startElement('rss');
        $xml->writeAttribute('xmlns:g', 'http://base.google.com/ns/1.0');
        $xml->writeAttribute('version', '2.0');
        $xml->startElement('channel');

        foreach ($products as $product) {
            $this->writeItem($xml, $product);
        }

        $xml->endElement(); // channel
        $xml->endElement(); // rss

        return $xml->outputMemory();
    }

    private function writeItem(\XMLWriter $xml, Product $product): void
    {
        $xml->startElement('item');
        $xml->writeElement('g:id', $product->sku);
        $xml->writeElement('g:title', mb_substr($product->name, 0, 150));
        $xml->writeElement('g:link', route('products.show', $product->slug));
        $xml->writeElement('g:image_link', $product->mainImage()?->cdn_url ?? '');
        $xml->writeElement('g:price', number_format($product->price, 2, '.', '') . ' RUB');
        $xml->writeElement('g:availability', $product->stock > 0 ? 'in_stock' : 'out_of_stock');
        $xml->writeElement('g:brand', $product->brand?->name ?? '');
        $xml->writeElement('g:condition', 'new');
        $xml->endElement();
    }
}

Каталог кешується в сховищі файлів та видається через виділений маршрут з заголовком Content-Type: application/xml. При каталозі понад 100 000 позицій каталог розбивається на частини через механізм supplemental feeds у GMC.

Альтернатива: Content API for Shopping

Для інтернет-магазинів з частими змінами цін та залишків (кілька разів на день) XML-каталог незручний через затримку індексації. Content API дозволяє відправляти зміни в реальному часі:

// Google API Client Library for PHP
$service = new Google\Service\ShoppingContent($client);

$product = new Google\Service\ShoppingContent\Product([
    'offerId'     => 'SKU-12345',
    'title'       => $product->name,
    'link'        => $productUrl,
    'price'       => ['value' => '8990.00', 'currency' => 'RUB'],
    'availability' => 'in_stock',
    'channel'     => 'online',
    'contentLanguage' => 'ru',
    'targetCountry'   => 'RU',
]);

$service->products->insert('merchant-account-id', $product);

Підхід через API використовується, коли магазин оновлює ціни кілька разів на день або працює з динамічним ціноутворенням.

Типові помилки при первинному налаштуванні

  • Missing required attribute — найчастіше gtin для брендових товарів. Рішення: додати identifier_exists: no для товарів без штрихкода
  • Image not crawlable — CDN закритий robots.txt або вимагає авторизації. Рішення: відкрити Googlebot у налаштуваннях CDN
  • Price mismatch — ціна в каталозі не збігається з ціною на сайті. Рішення: синхронізувати джерело даних

Терміни

Налаштування генератора каталогу, первинна завантаження та усунення помилок валідації — 3–5 робочих днів. Планова індексація товарів Google займає ще 2–7 днів після успішної відправки каталогу.