Home › Blog › Diagnostics
Diagnostics

Why Your TikTok Bulk Import Failed: Every Error and What It Actually Means

October 29, 2026 9 min read ADoky Team

A failed bulk import tells you a row is wrong and leaves you to find out why. Most of the causes are mechanical and most of them repeat. This is the full list, in the order worth checking — the first three explain the majority of failures.

Check these three first

1. The template does not belong to this account

Bulk templates are account-scoped. TikTok changes the column set over time and it is not identical across accounts, so a template exported from a different account — or from the same account months ago — can fail wholesale even though every row looks correct.

The fix is always the same: export a fresh template from the account you are importing into. Covered in detail in the template article.

2. Header language does not match the interface language

The column headers in the file have to be in the same language as the one set in Ads Manager. Export a template with the interface in English, switch the interface to another language, import, and the headers no longer resolve. This one is unintuitive enough that it survives a lot of debugging.

3. Columns were renamed, deleted or reordered

Deleting a column you are not using feels like tidying. It is the fastest way to fail an import. Leave every column in place and leave the header text exactly as exported — including the asterisks that mark required fields.

Opening the file in the wrong tool

If you are working with CSV, it has to be CSV UTF-8, and spreadsheets should be prepared in Excel 2016 or later. Older tools and some editors rewrite the encoding on save, which corrupts non-ASCII text and sometimes the headers themselves.

Campaign and ad group IDs

The ID columns are where intent gets expressed, and getting them wrong produces results that look like a bug but are not.

  • Creating a new campaign — leave Campaign ID empty. A value here means “edit this existing campaign”.
  • Editing existing ads — leave the IDs exactly as exported. Deleting an ad ID during an edit is read as a request to create something new.
  • Adding a creative to an ad group that already runs — keep the ad group ID, leave the ad ID blank.
  • The ID format matters. Some ID fields carry an id: prefix in the export. Where the export has it, keep it. Where a field is documented as taking the bare number — Instant Page ID is the common one — strip it.
Blank ad group ID, matching names

If the ad group ID is blank and the ad group name matches one that already exists, the platform can attach your ads to the existing group instead of creating a new one. If you meant to create a new group, give it a distinct name.

Formatting rules that fail rows silently

These do not announce themselves in a useful way. They are worth internalising once.

  • Case sensitivity. Enumerated values are case-sensitive. Enable is not enable.
  • Extra spaces. A double space between words, or a trailing space a spreadsheet added on copy-paste, is enough.
  • Decimal places. On a USD account, budget and bid fields expect two decimal places.
  • No currency symbols. 50.00, never $50.00.
  • Campaign names must be unique within the account. Duplicates are the usual cause of a result that imported “successfully” but landed somewhere you did not expect.

Ad-level causes

Creative names that do not resolve. The name in the file has to match what the account’s asset library holds. Depending on the account, that is either the original filename or the filename with an identifier appended. Both are normal — see the naming article.

Image ads without a Music ID. Image creatives need music. An otherwise valid row with an image and an empty Music ID will not produce a running ad.

Sales objective without an optimisation event. The platform needs to know which pixel event it is optimising towards. Leaving it blank on a Sales campaign is a hard stop.

Bid and budget combinations the account is not cleared for. Campaign Budget Optimisation with a cost cap is not enabled on every ad account, and for CBO it has been limited to the Traffic objective. The file is structurally fine; the account will not accept the combination. Clearing the bid field falls back to lowest cost, which every account accepts.

A symptom-to-cause table

What you seeUsual causeFix
Whole file rejected immediatelyTemplate from another account or versionExport a fresh template from this account
Headers not recognisedInterface language changed, or a column renamedMatch the UI language; restore the header text
Non-ASCII text mangledSaved as the wrong encodingSave as CSV UTF-8
Ads landed in the wrong ad groupBlank ad group ID plus a matching nameGive the new group a distinct name
Imported but nothing is deliveringDuplicate campaign namesMake every campaign name unique
Media did not attachCreative name does not match the libraryCheck the stored name; adapt if the account renames
Rejected on bid or budgetCBO with cost cap not enabled on the accountClear the bid, or switch to ad-group budgets
Generic error, retries also failOften transient on TikTok’s sideReload and import once more before suspecting the file
Use auto-fix before you debug

The import dialog can correct a small set of fields on the way in — a start time already in the past becomes the current time, and a billing method that is no longer supported is switched. Enable it in the import module. It will not rescue a broken file, but it removes a few avoidable round trips.

And one that is not your file

A meaningful share of bulk import errors are transient. The endpoint fails, reports something generic, and succeeds on the next attempt with the identical file. Before you start bisecting rows, reload the page and import the same file once more. If the first attempt partially imported, check what landed before retrying, so you do not create duplicates.

The short version

  • Fresh template, from this account, with the interface in the same language
  • Never delete, rename or reorder columns
  • Campaign ID empty for new, untouched for edits, ad ID blank to add a creative
  • Two decimals, no currency symbols, exact case, no stray spaces
  • Unique campaign names
  • Images need a Music ID; Sales needs an optimisation event
  • Reload and retry once before blaming the file
Support