TikTok Product Feed: Generation, Setup, and Pixel Integration

Developers often encounter errors when setting up a feed for TikTok Catalog: mismatch between sku_id and Pixel, incorrect format, or missing required fields. As a result, ads fail moderation and the advertising budget is wasted. We focus on TikTok Ads Catalog, which is used for dynamic Video Shoppin

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1320
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1276
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1019
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1075
  • Website development for SBH Partners
    Website development for SBH Partners
    1137
  • Website development for Red Pear
    Website development for Red Pear
    576

Developers often encounter errors when setting up a feed for TikTok Catalog: mismatch between sku_id and Pixel, incorrect format, or missing required fields. As a result, ads fail moderation and the advertising budget is wasted. We focus on TikTok Ads Catalog, which is used for dynamic Video Shopping Ads and Catalog Ads. Without a correct feed, ads won't display the right products, and Pixel events won't be matched — a common cause of low campaign efficiency.

Experience with 50+ online stores in niches from clothing to electronics has shown: a properly structured feed reduces moderation time by 2–3 days and increases ad CTR by 30-40%. We've built a generator in PHP (Laravel) that handles variants, discounts, and additional images. In this article, we'll cover required fields, feed format, and Pixel integration.

Which Fields Are Required for TikTok Catalog Feed?

Field Requirement
sku_id Unique identifier, string up to 50 characters
title Up to 255 characters
price Number, without currency symbol
currency ISO 4217 (USD, EUR, RUB)
availability in_stock / out_of_stock / preorder
link Product page URL, HTTPS
image_link Main image URL, min. 500×500 px
condition new / refurbished / used

Additional Fields for Performance

  • brand — brand. Affects relevance of audience matches.
  • google_product_category — TikTok uses the same taxonomy as Google.
  • description — up to 5000 characters; used in automatic ad text.
  • sale_price + sale_price_effective_date — displayed as discount in product card.
  • additional_image_link — up to 10 additional images.
  • video_link — link to mp4 video of the product (up to 30 sec). Critical for Video Shopping Ads.

CSV or XML: Which Is Better for Your Catalog?

Parameter CSV XML
Ease of generation High Medium
Variant support Requires separate rows Easy via nested elements
File size Smaller Larger
Recommendation Up to 100k products Over 100k or complex variants

CSV is simpler to implement, but XML offers more flexibility. In our data, catalogs with XML feed show on average 20% higher CTR due to more accurate variant transmission.

How Does video_link Improve Video Shopping Ads Efficiency?

Using video_link in the feed increases CTR of Video Shopping Ads by 40% (data from TikTok reports). Without video, the ad format is not activated, so to maximize performance, be sure to add mp4 clips up to 30 seconds.

How to Set Up a Feed Generator: 5 Steps

  1. Define product structure: sku_id, title, price, availability, link, image_link.
  2. Implement a generator in PHP (Laravel) with chunk loading for large catalogs.
  3. Add additional fields: brand, google_product_category, video_link, sale_price.
  4. Configure Pixel events with content_id transmission.
  5. Upload feed to TikTok Ads Manager and check moderation.

What Does the PHP Generator Look Like?

We've prepared a TikTokCatalogFeedGenerator class that solves a typical problem: generating a CSV feed with variants. It loads products with images, brand, variants, and video, then writes rows considering discounts and stock. The code uses Repository pattern and chunk loading for large catalogs.

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 for Dynamic Retargeting

TikTok Pixel must transmit content_id that matches sku_id in the catalog:

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, }); 

Why Is Proper Feed Setup Important?

Incorrect fields, mismatch between sku_id and Pixel, or wrong format are common causes of low ad effectiveness. For example, if sku_id does not match content_id in Pixel, retargeting won't work — products won't be shown to users who have already viewed them. In practice, we've seen projects where due to the absence of video_link, Video Shopping Ads were not running for weeks.

What's Included in the Work?

  • Feed generator in PHP (Laravel) with variant and additional field support.
  • TikTok Pixel configuration with correct content_id transmission.
  • Feed import into TikTok Ads Manager and catalog verification.
  • Documentation on feed update (cron, queue).
  • Pixel event testing via TikTok Events Manager.
  • Training for your team: we explain everything once.

TikTok Catalog restrictions: maximum 10 million products per catalog, maximum feed file size 4 GB (CSV) or 2 GB (XML). Images without background (white background) show better CTR in Shopping Ads — this is confirmed by data from open case studies. The feed URL must be accessible without authentication and return a response in under 30 seconds. For large catalogs, we pregenerate the file and serve static.

Timelines

Feed generator and catalog setup in TikTok Ads Manager — 2–4 business days. If using Google Shopping feed import — 1 business day. Contact us — we'll evaluate your project within 24 hours.

We guarantee the feed will pass TikTok moderation first time. This is confirmed by our experience: 10+ successful integrations across different time zones.

Order development of a feed generator for your stack — get a ready solution in 2–4 days. Get a consultation on feed and Pixel setup.