Генерация фида товаров для TikTok Catalog

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

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

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Генерация фида товаров для TikTok Catalog
Средняя
от 1 рабочего дня до 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

Генерация фида товаров для TikTok Catalog

TikTok Shop и TikTok Ads Catalog — два разных продукта с разными требованиями к фиду. TikTok Ads Catalog используется для динамической рекламы в формате Video Shopping Ads и Catalog Ads, TikTok Shop — отдельная торговая платформа с более жёсткими ограничениями по регионам (доступна в США, Великобритании, Юго-Восточной Азии). В данном материале речь о TikTok Ads Catalog, доступном в большинстве рекламных рынков.

Форматы фида

TikTok принимает:

  • CSV/TSV — наиболее простой вариант для начала
  • XML — гибче при сложной структуре вариантов
  • Google Shopping feed — TikTok умеет импортировать фиды GMC напрямую, что упрощает старт

Обязательные поля TikTok Catalog

Поле Требование
sku_id уникальный идентификатор, строка до 50 символов
title до 255 символов
price число, без символа валюты
currency ISO 4217 (USD, EUR, RUB)
availability in_stock / out_of_stock / preorder
link URL страницы товара, HTTPS
image_link URL основного изображения, мин. 500×500 px
condition new / refurbished / used

Дополнительные поля для Performance

  • brand — бренд. Влияет на релевантность аудиторных матчей
  • google_product_category — TikTok использует ту же таксономию, что Google
  • description — до 5000 символов; используется в автоматических текстах объявлений
  • sale_price + sale_price_effective_date — отображается как скидка в карточке товара
  • additional_image_link — до 10 дополнительных изображений через запятую
  • video_link — ссылка на mp4-видео товара (до 30 сек) — критически важно для Video Shopping Ads

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

class TikTokCatalogFeedGenerator
{
    public function generate(string $outputPath): void
    {
        $headers = [
            'sku_id', 'title', 'price', 'currency', 'availability',
            'condition', 'link', 'image_link', 'additional_image_link',
            'description', 'brand', 'google_product_category',
            'sale_price', 'sale_price_effective_date',
            'color', 'size', 'age_group', 'gender', 'material',
            'video_link',
        ];

        $fp = fopen($outputPath, 'w');
        fputcsv($fp, $headers);

        Product::with(['images', 'brand', 'variants', 'video'])
            ->active()
            ->chunk(500, function ($products) use ($fp, $headers) {
                foreach ($products as $product) {
                    $rows = $product->variants->isNotEmpty()
                        ? $this->rowsFromVariants($product)
                        : [$this->rowFromProduct($product)];

                    foreach ($rows as $row) {
                        fputcsv($fp, $row);
                    }
                }
            });

        fclose($fp);
    }

    private function rowFromProduct(Product $p, ?ProductVariant $v = null): array
    {
        $price     = $v?->price ?? $p->price;
        $stock     = $v?->stock ?? $p->stock;
        $skuId     = $v ? $p->sku . '_' . $v->sku : $p->sku;
        $salePrice = '';
        $saleDates = '';

        if ($p->sale_price && $p->sale_ends_at?->isFuture()) {
            $salePrice = number_format($p->sale_price, 2, '.', '');
            $saleDates = $p->sale_starts_at->toIso8601String()
                . '/' . $p->sale_ends_at->toIso8601String();
        }

        $additionalImages = $p->images->skip(1)->pluck('cdn_url')->take(9)->implode(',');

        return [
            $skuId,
            mb_substr($p->name . ($v ? ' ' . $v->option_label : ''), 0, 255),
            number_format($price, 2, '.', ''),
            'RUB',
            $stock > 0 ? 'in_stock' : 'out_of_stock',
            'new',
            route('products.show', $p->slug) . ($v ? '?v=' . $v->id : ''),
            $p->mainImage()?->cdn_url ?? '',
            $additionalImages,
            mb_substr(strip_tags($p->description), 0, 5000),
            $p->brand?->name ?? '',
            $p->google_category_id ?? '',
            $salePrice,
            $saleDates,
            $v?->color ?? $p->color ?? '',
            $v?->size ?? '',
            $p->age_group ?? 'adult',
            $p->gender ?? '',
            $p->material ?? '',
            $p->video?->cdn_url ?? '',
        ];
    }

    private function rowsFromVariants(Product $p): array
    {
        return $p->variants->map(fn($v) => $this->rowFromProduct($p, $v))->toArray();
    }
}

Pixel Events для динамического ретаргетинга

TikTok Pixel должен передавать content_id, совпадающий с sku_id в каталоге:

ttq.track('ViewContent', {
  contents: [{ content_id: 'SKU-12345', content_type: 'product', quantity: 1, price: 4990 }],
  currency: 'RUB',
  value: 4990,
});

ttq.track('AddToCart', {
  contents: [{ content_id: 'SKU-12345', content_type: 'product', quantity: 1, price: 4990 }],
  currency: 'RUB',
  value: 4990,
});

Ограничения TikTok Catalog

  • Максимум 10 млн товаров на каталог
  • Максимальный размер файла фида — 4 ГБ (CSV) или 2 ГБ (XML)
  • Изображения без фона (белый фон) показывают лучший CTR в Shopping Ads
  • URL фида должен быть доступен без авторизации и возвращать фид менее чем за 30 секунд — при больших каталогах стоит предгенерировать файл, а не генерировать на лету

Сроки

Генератор фида и настройка каталога в TikTok Ads Manager — 2–4 рабочих дня. Если используется импорт Google Shopping feed — 1 рабочий день.