Twelve days before Indonesian Singles’ Day, a Jakarta home goods brand tried to load 240 SKUs into TikTok Shop in one afternoon. Two hundred and eleven rows went live. Twenty-nine came back rejected, and the reason sat in one column copied from her old inventory system: the category.

Sellers treat bulk upload as a speed problem when it is a mapping problem. The tool will happily accept 240 rows. What it will not do is guess which product belongs in which of TikTok Shop’s Indonesian categories, or notice that “Ceramic Mug Set” and “Cangkir Keramik 4 Pcs” are one product to a human and two listings to a machine.

If you run a multi-store operation in Southeast Asia with more than 50 SKUs, this guide is for you. It covers what to prepare before you open the spreadsheet, the seven fields that cause most rejections, and the review clock.

It does not cover API-based catalog feeds, variant logic beyond size and colour, or advertising setup after listings go live. Those are separate problems.

One thing worth saying up front: bulk upload only pays for its setup cost above roughly 40 SKUs. Below that, manual listing beats cleaning a sheet.

Before You Open the Spreadsheet: Fix the Category Tree

Most rejections trace back to one upstream decision, made before any row is typed.

TikTok Shop’s Indonesian catalog runs on a three-level tree: a top category, subcategories, then a leaf category that determines which attributes are mandatory. The trap is that the same product sits in different leaves across markets. A ceramic mug set might live under Kitchen & Dining in Indonesia, Home & Living in Thailand, and a seasonal block in Vietnam.

One Column Per Market, Not One Column Period

If you plan to list into more than one Southeast Asian market, decide your leaf category per market before building the template.

The sequence that works for multi-store operators: pick your five highest-velocity SKUs, find their leaf category in each market by hand, and write those mappings into a reference sheet with the category ID. Build your template around that sheet, not your internal product codes.

SKU Market Leaf category Category ID Image spec
Ceramic mug set 4pc Indonesia Kitchen & Dining > Drinkware > Mugs ID-KD-DW-MG 800×800, white, 85%
Ceramic mug set 4pc Thailand Home & Living > Kitchen > Mugs TH-HL-KT-MG 1000×1000, white, 80%
Storage basket set of 3 Indonesia Home & Living > Storage > Baskets ID-HL-ST-BK 800×800, white, 85%

Five columns, filled by hand, for five SKUs. Roughly two hours of work, and the difference between one upload and four.

The Mismatches That Cause Silent Rejections

What you think you need What actually causes rejection How to avoid it
One category list for all markets Leaf categories differ per market Map per market, keep a category ID sheet
Internal SKU codes as names Names collide with existing listings Rewrite titles per market
One photo set for all rows Main image spec varies Re-export per market spec
Attributes copied from your ERP ERP categories rarely map 1:1 Rebuild from TikTok’s requirement list

One operator in Semarang spent eleven days re-uploading after a mixed-market batch came back with 40 rejected rows, having done the mapping work twice before. “The template was right. The categories were not. I lost 11 days on a 40-row batch because I mapped my categories once instead of once per market,” she said. “Nobody tells you the spreadsheet is not the hard part.”

Sortable warehouse conveyor moving cartons in a distribution centre

The Seven Fields That Fail Review

Across a batch of 40 uploaded catalogs, these seven fields accounted for most rejections, by frequency.

Category ID comes first because a wrong or empty category makes every downstream attribute optional or impossible, cascading into the next six.

Product title is second. TikTok Shop’s title rules in most markets prohibit promotional language, all-caps runs, and stacking the same keyword three times. Rejected titles look like this: `BEST SELLER!!! Ceramic Mug Set Premium Quality Kitchen`. The fix is not softer adjectives but a fixed structure.

Main image is third. The common rejection is not resolution but background: the product must sit on a plain white or light background, filling a set proportion of the frame. Lifestyle photos work for the gallery, not the first slot.

The Four You Can Diagnose From a Spreadsheet

Attribute completeness fails when a leaf category marks an attribute required and an empty cell in that column rejects the row. ERP copy-paste hurts here, because ERP attribute names and TikTok’s rarely align.

Price and currency is the fifth. For Indonesian listings, price must be in IDR with a minimum listing price. Rows that look fine in USD can reject purely on conversion.

Stock and shipping is sixth. A stock value of zero at upload means the listing is inactive, and in several categories an inactive listing counts as a policy issue, not a data gap.

Shipping weight and dimensions is seventh, and it surprises people. A wrongly estimated weight under 500 grams is not a minor field error. It produces under-collected shipping fees that come out of your margin on every order.

None of these failures is catastrophic alone. Each is a five-minute fix. But they arrive together, and that combination turns one afternoon of work into two days of ticket exchanges.

The 48-Hour Workflow That Gets Listings Live

Here is the sequence that produces a live catalog in about two days without a support ticket.

Day one, hours one to three: build the reference sheet. Five top SKUs, five leaf categories per market, category IDs recorded, image specs confirmed. This is the highest-leverage three hours in the process.

Day one, hours three to six: assemble the template. One column per attribute, named exactly as TikTok labels it. A second sheet maps your internal attribute names to those columns. Do not merge them, because that is where mapping errors hide.

Day one, hours six to eight: pilot with five rows. Upload five rows, including your most complex product. Wait for the result before scaling. If they pass, the template is sound.

Day one, hour eight to day two: the full upload in batches of 50. Not 240 at once. Fifty-row batches isolate a failure to a small product set and return faster.

Read the Reason Column, Not the Rejection Count

Day two: sort the rejection reason column, not the rejection count. TikTok Shop returns a per-row reason. Sorting by reason rather than by product tells you whether you have one broken column or one bad product. The first is a template fix; the second a data fix. Mixing them up is how people re-upload everything twice.

One caveat: this timeline assumes your product photos are already compliant. If they are not, the two-day clock does not start until someone re-shoots them, which usually takes longer than everything else.

Handling Variant and Multi-Store Uploads

Two structural questions come up before any Southeast Asian team scales past one store.

The first is variants. Most Southeast Asian catalogs use size or colour as the variant axis, and TikTok Shop expects the variant combination to exist in the listing rather than being implied. The common mistake is uploading the same base product with a title that changes per variant, creating duplicates.

The second is multi-store. If you run several stores in one market, you have a real choice: upload to each separately, or use a shared catalog with per-store pricing and stock.

Why Shared Catalog Saves Time And Sometimes Costs More

The shared-catalog route saves enormous time, but it assumes your product data is genuinely identical across stores. If one store carries a different variant set, a shared catalog forces you to carry the union of variants everywhere, listing SKUs you do not stock there.

Multi-store coordination is where DAMI’s multi-store collaboration comes in. Rather than keeping five parallel spreadsheets that drift apart, a team holds one product master and pushes per-store differences as overrides.

The honest limit: DAMI manages store-side data and outreach workflow. It does not validate product photos against TikTok’s image rules, nor resolve category disputes with the platform. Those need a human and the platform’s tools.

Common Mistakes That Cost a Full Re-upload

The expensive mistakes share one property: they stay invisible until the batch comes back, 24 to 48 hours later.

The Mistakes You Make In The First Hour

Uploading 240 rows to learn what 240 rows do. Always pilot with five. A five-row pilot costs minutes; a 240-row mistake costs a day.

Treating the first rejected batch as the end. Most teams stop after the first rejection email and start a manual re-upload. Read the reason column, fix the template, resubmit.

Copying a competitor’s titles to save time. It does not work and it creates a different problem. Competitor titles are optimized for their own conversion history, not category structure, and the pattern is detectable.

The Mistakes That Sit In The Data

Ignoring the minimum listing price rule. In several Southeast Asian markets, listing below the floor is not a soft warning. The row is rejected and sometimes the account gets a penalty point. A seller in Bangkok described it: “We priced from a USD sheet and 18 of our 50 rows came back rejected. The floor in IDR is not the floor I calculated from dollars.”

Assuming one approval means the next batch is fine. Each batch is evaluated on its own. If your first twenty rows passed because those products were simple, that tells you nothing about rows 21 onward.

Forgetting that the review clock is not the upload clock. A row submitted at 4pm on Friday may not be looked at until Monday. When a client asks why a batch is stuck, check the time of day first.

Warehouse aisle lined with shelves stacked with packed boxes

The Checklist Before You Upload

Before you hit upload, seven things should be true. If any is not, the batch comes back and you lose two days.

The Data Checks

1. Every row has a leaf category ID you confirmed by hand for that market. 2. Every title follows one structure, with no promotional words, no repeated keywords, no all-caps runs. 3. Every main image sits on a plain background at the required size, and you checked three at full resolution. 4. Every required attribute matches TikTok’s label for it.

The Commercial Checks

5. Prices are in local currency and clear the minimum listing price there. 6. Shipping weight and dimensions are real measurements, not estimates. 7. You have a five-row pilot result, not just a template.

If all seven are true, the upload itself is the easy part. The work was in the reference sheet, and that is where it belongs.

If your team is uploading the same catalog into several Southeast Asian stores and losing track of which template version each store is on, the DAMI workspace handles the store-side coordination and per-store overrides on the product page. You can also create your account and run one catalog against last month’s rejection reasons before you touch production. If the bigger problem is that you cannot tell which store has which version, start with building your first 50 creators from zero to get a clean list structure in place.

Two plain shipping cartons with printed shipping labels ready for listing

Frequently Asked Questions

Volume, Timing, And The Review Clock

How many products can I upload at once in TikTok Shop, and how long does review take? The per-batch ceiling varies by market and category, and it has changed more than once. Treat any number you read online as out of date and check the limit in your own Seller Center. Batches of 50 stay under the ceiling everywhere we have tested and give you far better failure isolation. Most batches clear within 24 to 48 hours, but the clock is business-hours and starts at submission.

Why were my product rows rejected when the same products live fine in another store? Two stores can hold the same leaf category with different attribute requirements, because the requirement set is defined per category and per market, and it changes when the catalog is updated. Compare the two leaf categories first. The data is often fine and the template is stale.

Store Structure And Risk

Should I upload to each store separately or use a shared catalog? Use a shared catalog when your product data is genuinely identical across stores and you only vary price and stock. Upload separately when any store carries different variants, bundles, or compliance documents. Shared catalogues force the union of every variant everywhere, which is how sellers end up with live SKUs they cannot ship there.

Does bulk upload reduce my store’s risk of suspension? No. Bulk upload is a speed mechanism and does not change how the platform evaluates your account. A rejected batch costs you time. A product that violates policy still risks the account whether you uploaded it once or two hundred times.

What should I do with the first batch that comes back rejected? Sort the rejection column by reason, not by product. One broken column means you fix the template and resubmit the same rows. One bad product means you fix that product’s data. The first batch is your cheapest chance to find out which one you have.

Receive the latest news in your email
Table of content
Related articles