
TikTok catalog feed for Shopify
A TikTok catalog powers Smart+ catalog ads and Video Shopping Ads, which show your products to people on TikTok and send them to checkout on your own site. Feedflock turns your Shopify catalog into the CSV that TikTok's Catalog Manager expects and regenerates it every hour, so the price and stock in your ads match the page TikTok checks them against.

A discount in the feed becomes a badge in the ad.
sale_price is what lets TikTok show a discounted-price overlay on the ad: the compare-at price goes to price, the discounted one to sale_price. The feed price must match the landing page (TikTok scrapes it), so the discount lives in the feed, not in campaign settings.
Catch feed issues before TikTok does.
Before every generation Feedflock checks that every field the channel requires is filled, and, on templates verified against the channel's own spec, that the values fit its rules. Most problems are fixed with one click, without editing products in Shopify.
Setup
Live in five steps
From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.
Create a catalog in TikTok Ads Manager
Under Assets, open Catalog and create one with a name, a default currency that matches your prices, and a targeting location, which will be the only location your catalog ads can target. TikTok Shop with in-app checkout is a separate product and isn't filled by a feed.
Install Feedflock
Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API.
Pick the TikTok template
Create a new feed and choose the TikTok Catalog (Ads) template. All nine required fields come mapped: sku_id, title, description, availability, condition, price, link, image_link and brand, with one row per variant.
Settle sku_id before the first import
sku_id defaults to the variant SKU and falls back to the variant ID when the SKU is empty. It's the one field TikTok never lets you edit later, and it has to equal the content_id your TikTok pixel sends, so decide now which one your pixel uses.
Register the feed URL
In the catalog, go to Products, choose Add Products and select Data Feed Schedule. Enter a name and the hosted URL, choose an upload frequency and an update method, then import. Check the Diagnostics tab after the first run.
https://feedflock.appfleece.com/f/demo-tiktok/tiktok.csv
The feed
What the channel receives
sku_id,item_group_id,title,description,availability,condition,price,sale_price,sale_price_effective_date,link,image_link,additional_image_link,video_link,brand,google_product_category,product_type,gtin,mpn,color,size,material,pattern,gender,shipping,shipping_weight,custom_label_0,merchant_brand SKU-2048,8812345678901,Linen shirt Sand,Soft linen shirt with a regular fit.,in stock,new,1290.00 CZK,,,https://shop.example/products/linen-shirt-sand?variant=46123456789012,https://cdn.shop.example/files/linen-shirt-sand.jpg?v=1718000000,,,Nordlin,Apparel & Accessories > Clothing > Shirts & Tops,Men's shirts,,SKU-2048,,M,,,,,,,

Nordlin
Linen shirt Sand
1 290 Kč
Feed fields
sku_id
SKU-2048
item_group_id
8812345678901
title
Linen shirt Sand
description
Soft linen shirt with a regular fit.
availability
in stock
condition
new
price
1290.00 CZK
link
https://shop.example/products/linen-shirt-sand?variant=46123456789012
brand
Nordlin
google_product_category
Apparel & Accessories › Clothing › Shirts & Tops
product_type
Men's shirts
mpn
SKU-2048
size
M
The channel
Retargeting built on viewed products
Catalog ads show people the exact items they looked at on your site. It works by matching the content_id your pixel sends to the sku_id in the feed, and TikTok reports the share of events it can match as your event match rate.
Products made for video placements
Video Shopping Ads build ads from your catalog. A vertical video per product in video_link (9:16, at least 720 × 1280) feeds the video placement directly from a Shopify metafield.
The feed is checked against your site
TikTok scrapes your product pages and reports any price or stock that disagrees with the feed as an error. Fresh data isn't cosmetic here. It decides whether your ads keep delivering.
The feed
- The TikTok Catalog template maps all nine required fields, with brand from your Shopify vendor and condition new by default
- One row per variant, all sharing item_group_id. Without it, TikTok delivers only one variant of each product
- Every link points to its own variant (?variant=), so the page TikTok scrapes shows the same price and stock as the row
- The compare-at price goes to price and the discounted price to sale_price, which TikTok needs for its discounted-price overlay. The sale ends when you remove the compare-at price
- Every cell is double-quoted, so a comma in a title or in the comma-separated additional_image_link never shifts a column
- A readiness check flags products missing a required field or a category, and fetch tracking warns you if TikTok stops downloading the feed, long before TikTok's own 7-day staleness warning
Deep dive
How the TikTok catalog feed works
- Data Feed Schedule imports a hosted file at the upload frequency you choose
- TikTok accepts
CSV,XML(RSSor Atom),TSV,ZIPor GZ, under 50 GB and 20 million products - Feedflock renders the
CSVon a stableURLand regenerates it every hour - A feed that hasn't been updated in 7 days is listed as a catalog issue
Technical details
Catalog Manager reads a hosted file through Data Feed Schedule. You give it a name, the URL, an upload frequency and an update method, and TikTok imports the file on that schedule. You can also request data from a product source by hand at any time. TikTok accepts CSV, XML in RSS or Atom layout, TSV, ZIP and GZ, as long as the file is under 50 GB and holds fewer than 20 million products.
Feedflock renders the CSV as UTF-8 with a header row of TikTok's column names, one row per variant and every cell double-quoted. It hosts the file on a stable URL and regenerates it every hour. You paste the URL once and never upload again. TikTok recommends refreshing the catalog daily, and a feed that hasn't been updated in 7 days shows up as a catalog issue.
The nine required fields
- sku_id, title, description, availability, condition, price, link, image_link and brand
- A product missing any of them gets an error in Diagnostics
- Availability takes five lowercase values and has to match the product page
- Price is a number, a space and an
ISOcurrency code, and it has to match the page too
Technical details
TikTok requires nine fields: sku_id, title, description, availability, condition, price, link, image_link and brand. Brand and condition are required outright, with no fallback. Availability takes five lowercase values, from in stock to discontinued, and has to match what the product page shows. TikTok scrapes the page and reports a mismatch as an error.
Price is a number, a space and an ISO currency code. Without the code, TikTok assumes the currency of the catalog's target country, which is why Feedflock always appends it. TikTok's best practices cap titles at 150 characters and descriptions at 20,000, as plain text with no emoji or control characters. Images need to be at least 500 × 500 px, JPG or PNG.
Catalog ads, not TikTok Shop
- The feed fills the Ads catalog for Smart+ catalog ads and Video Shopping Ads
- Ads send shoppers to checkout on your own site through the link column
- TikTok Shop's in-app checkout is a separate product with its own Seller
API - A feed
URLcan't fill TikTok Shop. This feed covers the ads side
Technical details
This feed fills the Ads catalog: Smart+ catalog ads and Video Shopping Ads that send shoppers to checkout on your own site through the link column. TikTok Shop, the in-app checkout, is a different product with its own Seller API and can't be filled by a feed URL.
If you sell through both, the feed covers the ads side: every product a video or a Smart+ ad can point to, with the price and stock your own checkout will honour.
Variants, the pixel and identifiers
- Variants share item_group_id, and each has its own sku_id
- When an ID repeats, only one product with that ID is kept
- sku_id has to equal the pixel's content_id and can't be edited after import
- google_product_category takes Google's path, read up to three levels
Technical details
Variants of one product share item_group_id, and each has its own sku_id. If an ID repeats, TikTok keeps only one product with it, so two variants with the same SKU lose one of them. A missing item_group_id is a diagnostics issue and means only one variant of the product is delivered in ads.
Keep sku_id equal to the content_id your pixel sends and retargeting holds together. It's also the one field TikTok won't let you edit after import. google_product_category takes a path from Google's taxonomy, and TikTok reads up to three levels of it. gtin comes from the Shopify barcode and mpn from the SKU.
The takeaway
One URL, an hourly refresh and a CSV that already speaks TikTok's catalog format, with IDs that match your pixel. Your Shopify catalog stays the single source of truth, and TikTok advertises its current state.
Claude · ChatGPT
Or set up your TikTok feed in chat
Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to TikTok's own tree and tells you what is still missing. You approve every change.
Create a TikTok feed for my store and map my categories.
I'll create it as a draft and show you each change before I make it.
FAQ
Get on every marketplace that matters this afternoon.
Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.