Skip to Content

TikTok Ads

Upload Custom Audiences to TikTok Ads for targeted advertising. Zeotap builds a file of hashed identifiers from your audience and uploads it via TikTok’s file-based Custom Audience API, then creates or refreshes the audience.

For near-real-time membership (per-user add/remove as they qualify), use the separate TikTok Segment (Streaming) destination instead.

Prerequisites

  • A TikTok Business Center account
  • Your TikTok Ads Advertiser ID
  • Access to the TikTok Marketing API

Authentication

TikTok Ads uses OAuth 2.0 via TikTok Business Center.

  1. Click Connect with OAuth in Zeotap
  2. Sign in with your TikTok Business account
  3. Authorize the requested permissions

Configuration

FieldTypeRequiredDescription
Advertiser IDTextYesYour TikTok Ads advertiser ID (numeric). Example: 7012345678901234567

Target Settings

FieldTypeRequiredDescription
Audience NameTextYesName for the Custom Audience
Audience IDTextNoExisting Custom Audience ID. When set, it is used as is. Leave blank to find the Custom Audience named exactly Audience Name and reuse it; one is created only if none exists. If the lookup fails, the run fails instead of creating a duplicate.
Encryption / Identifier TypeSelectYesThe identifier type + hashing of the uploaded file. Must match the mapped identifier: EMAIL_SHA256 → Email, PHONE_SHA256 → Phone, GAID_SHA256 → Android MAID, IDFA_SHA256 → iOS MAID. A file holds one identifier type, so one type per sync.

With Audience Boost, the boosted members go to a separate Custom Audience named <Audience Name>_boosted, found or created the same way. Boost needs a fixed Audience Name; a sync that targets the Custom Audience by ID only runs without Boost.

How it works

Each sync builds an in-memory file of one hashed identifier per line (for the selected Encryption / Identifier Type), uploads it to TikTok (file/upload/), then creates the audience (new) or REPLACEs it (existing) with the uploaded file — a full refresh. Nothing is staged to disk or cloud storage. TikTok requires at least 1,000 matched entries for an audience to become usable, and audiences take roughly an hour to activate.

Supported Operations

Sync Modes: Mirror

Audience Sync Modes: Mirror (full refresh)

Custom Audience uploads are a full refresh — each run REPLACEs the audience with the current membership — so only mirror mode is offered. For incremental add/remove membership, use TikTok Segment (Streaming).

Features

  • Field Mapping: No
  • Schema Introspection: No

Match Keys

TikTok matches Custom Audience members on hashed identifiers. Map raw columns and Zeotap normalizes and hashes them at delivery, or map pre-hashed SHA-256 hex digests directly:

FieldTypeDescription
emailstringRaw email address — lowercased, trimmed, and SHA-256 hashed before upload
hashed_emailstringPre-hashed SHA-256 hex digest of the lowercase, trimmed email
phonestringRaw phone number — normalized to E.164 (digits with leading +) and SHA-256 hashed before upload
hashed_phonestringPre-hashed SHA-256 hex digest of the E.164 phone number
maidstringMobile advertising ID (GAID/IDFA) — uppercased and SHA-256 hashed before upload. Use with GAID_SHA256 / IDFA_SHA256.
hashed_maidstringPre-hashed SHA-256 hex digest of the uppercased MAID

Map the identifier that matches the chosen Encryption / Identifier Type (email for EMAIL_SHA256, MAID for GAID_SHA256/IDFA_SHA256, etc.). When both a raw field and its pre-hashed counterpart are mapped, the pre-hashed value wins. Values that are not valid 64-character hex digests are never uploaded — they are dropped (falling back to the raw column if mapped) and counted in the sync run logs. See Match Keys & Identifier Hashing for the full normalization contract, precedence, and validation rules.

Troubleshooting

Advertiser ID not found

Verify your Advertiser ID in TikTok Ads Manager. It is displayed in the account settings.

Audience upload failed

Ensure the data contains valid identifiers (email addresses, phone numbers, or advertising IDs). TikTok requires hashed data for audience matching.

Last updated on