<!--
AppSprint docs markdown
Canonical HTML: https://appsprint.app/docs/tiktok-ads
Markdown URL: https://appsprint.app/docs/tiktok-ads.md
Docs index: https://appsprint.app/docs.md
Sitemap: https://appsprint.app/sitemap.xml
LLM guide: https://appsprint.app/llms.txt
-->

# TikTok Ads

A TikTok Signal Campaign uses an AppSprint Signal link as the Website URL in TikTok Ads Manager. AppSprint routes users to the store, forwards selected post-install events to TikTok's web Events API, and reports spend beside attributed installs and revenue.

## Requirements

- The AppSprint SDK installed and sending installs/events for this app.
- Admin or Operator access to the TikTok advertiser. Standard access is not enough.
- A Web Pixel in TikTok Business Center, linked to that advertiser.
- Advertiser/reporting access approved during the TikTok OAuth connection.

## Available metrics and definitions

| Metric | Definition |
|--------|------------|
| Spend | Amount spent on the TikTok Signal Campaign over the selected window. |
| Installs | Installs attributed by AppSprint. Falls back to TikTok's reported conversions when AppSprint has no match. |
| CPI | Cost per install. Spend divided by attributed installs. |
| IPM | Installs per 1,000 impressions. |
| Impressions | Times the ad was shown, reported by TikTok. |
| CPM | Cost per 1,000 impressions. |
| Clicks | Ad clicks, reported by TikTok. |
| CPC | Cost per click. |
| CTR | Click-through rate. Clicks divided by impressions. |
| CTI | Click-to-install rate. Installs divided by clicks. |
| ROAS | Return on ad spend. Attributed revenue divided by spend. |
| Revenue | Revenue from in-app events attributed to this Signal Campaign. Falls back to TikTok's reported value when AppSprint has no match. |

## Available in-app events and default mapping

The dashboard shows primary optimization events first and keeps less common rows collapsed below. Leave a row blank to disable forwarding for that event.

> **Web Events API only:** AppSprint maps app lifecycle signals to TikTok web events: installs use `Download` and sessions use `ViewContent`. Lower-signal events stay under "See more events" and default to off.

| SDK event | TikTok event | Dashboard |
|-----------|--------------|-----------|
| install | Download | Primary row |
| session_start | ViewContent | Primary row |
| sign_up / register | CompleteRegistration | Primary row |
| start_trial | StartTrial | Primary row |
| subscribe | Subscribe | Primary row |
| purchase | Purchase | Primary row |
| initiate_checkout | InitiateCheckout | See more events |
| add_payment_info | AddPaymentInfo | See more events |
| add_to_cart | AddToCart | See more events |
| add_to_wishlist | AddToWishlist | See more events |
| view_content / view_item | ViewContent | See more events |
| search | Search | See more events |

## Setup

### 1. Connect TikTok Ads

OAuth lets AppSprint load advertisers and Signal Campaign reporting. It is separate from the Events API token used for server-side event forwarding.

1. In AppSprint, open your app and go to **Integrations → TikTok Ads**.
2. Click **Connect TikTok Ads** and sign in with a TikTok For Business account.
3. Approve access, then click **Load accounts** and select the advertiser.

### 2. Configure the Pixel ID and Events API token

> **Use one Pixel for the whole setup.** The Pixel ID and access token must come from the same Pixel, and that Pixel must be linked to the advertiser selected in AppSprint. Wrong values will send events to the wrong destination.

To create a new Pixel:

1. Open [TikTok Business Center](https://business.tiktok.com/) and go to **Assets** at the Business Center level.
2. Click **Add a pixel**, choose **New pixel**, then continue.
3. Enter your website URL, then continue.
4. Choose **Manual setup**, then select **Events API** only.
5. Name the Pixel and create it.
6. In **Set up your business funnel**, choose the **E-commerce** template.
7. Copy the **Pixel ID**.
8. Generate an **Events API access token** and copy it.
9. Click **Finish**.
10. Go back to **Business Center → Assets** and open the Pixel you just created.
11. Click **Link accounts**, select the advertiser you selected in AppSprint, then confirm.
12. Paste the Pixel ID and Events API token in AppSprint and save.

Already have a Pixel? Find its values:

1. In [TikTok Business Center](https://business.tiktok.com/), go to **Assets** and open the Pixel linked to your advertiser.
2. Click **Open in Events Manager**.
3. Copy the **Pixel ID** at the top of the page.
4. Click **Settings** → **Events API** → **Generate access token** and copy it.
5. Paste both values in AppSprint and save.

### 3. Map your in-app events

In **Integrations → TikTok Ads → Event mapping**, keep the events your TikTok Signal Campaign can optimize for and disable the rest.

> **Match events to your Signal Campaign objective.** Use **Sales** for Purchase or Subscribe. Use **Lead generation** for StartTrial or Sign-up. TikTok Ads Manager controls which events are selectable for the objective, so confirm the event is available before launch.

TikTok can take up to 2 hours after receiving production event data before the Pixel and optimization-event statuses update in campaign setup. Test events are useful for debugging, but they do not unlock campaign optimization.

TikTok unlocks **value-based optimization** once you have 20 unique attributed Purchase events in any 7-day window. AppSprint already sends value and currency on Purchase events, so nothing else to enable.

### 4. Test the Events API (optional)

Copy the test code from TikTok's Test Events panel, paste it in **Integrations → TikTok Ads → Test Events API**, then send one ViewContent test event to confirm delivery.

### 5. Copy the Signal Campaign link and launch

1. In AppSprint, copy the generated TikTok Signal link. The URL already includes TikTok macros for campaign, ad, placement, callback parameter, IP, and user agent, plus AppSprint browser-side click enrichment.
2. In TikTok Ads Manager, click **+ Create** in the top-left corner to start a new campaign.
3. Choose **Lead generation** when you want TikTok to optimize for StartTrial or Sign-up. Choose **Sales** when you want it to optimize for Purchase or Subscribe. Use **Website** as the destination, not App.
4. At the ad set level, use **Website** as the optimization location, select the same Pixel you configured in AppSprint, then pick the mapped optimization event.
5. Keep placement on TikTok only, target one operating system per ad set, and choose Conversion or Value bidding depending on the event you are optimizing for. If TikTok does not show OS targeting, switch to manual targeting and use **Device** to select only iOS or only Android.
6. At the ad level, paste the AppSprint Signal link into the **Website URL** field. Do not paste the URL parameters again in TikTok's Tracking section.
7. Launch the campaign. First conversions usually appear within 30 to 90 minutes.

## Troubleshooting

| Problem | What to try |
|---------|-------------|
| OAuth connection expired or lost advertiser access | Disconnect TikTok Ads in AppSprint and reconnect with an account that still has advertiser access. |
| Campaigns do not load | Reconnect TikTok Ads and approve advertiser/reporting access. The Pixel Events API token does not grant campaign reporting by itself. |
| Events API token rejected | Generate a new Events API access token in Business Center, then disconnect and reconnect TikTok Ads in AppSprint with the new credentials. |
| Some events are not sent | Copy the generated TikTok Signal link before sending production traffic, keep the mapping enabled, and make sure SDK requests include a real client IP and user agent. |
| Events aren't appearing in Events Manager | Allow 30 to 90 minutes after the first event. Then confirm the Signal link is the one pasted into the TikTok ad's Website URL and that the Pixel ID matches the Events API token. |
| Signal Campaign objective rejected an event | StartTrial is for Lead generation in this setup. If it appears but is disabled under Sales, create a Lead generation Website campaign, confirm the Website URL domain matches the Pixel event URL, and allow 30 to 90 minutes after the first production StartTrial event. |
| Reporting numbers don't match TikTok Ads Manager | AppSprint reports use AppSprint attribution. TikTok reports use the Pixel's view. They differ for users without a TikTok click. AppSprint uses its own number whenever it has one. |

---

## Docs navigation

Use the Markdown URLs when reading the docs programmatically. Use the HTML URLs when you need the interactive docs UI.

- [Overview](https://appsprint.app/docs) ([Markdown](https://appsprint.app/docs.md)) — Introduction to AppSprint
- [Quickstart](https://appsprint.app/docs/quickstart) ([Markdown](https://appsprint.app/docs/quickstart.md)) — Get up and running in 5 minutes
- [React Native](https://appsprint.app/docs/react-native) ([Markdown](https://appsprint.app/docs/react-native.md)) — React Native / Expo SDK reference
- [iOS (Swift)](https://appsprint.app/docs/ios-swift) ([Markdown](https://appsprint.app/docs/ios-swift.md)) — Native Swift SDK reference
- [Android (Kotlin)](https://appsprint.app/docs/android) ([Markdown](https://appsprint.app/docs/android.md)) — Native Android SDK reference
- [Flutter](https://appsprint.app/docs/flutter) ([Markdown](https://appsprint.app/docs/flutter.md)) — Flutter plugin reference
- [RevenueCat](https://appsprint.app/docs/revenuecat) ([Markdown](https://appsprint.app/docs/revenuecat.md)) — Webhook integration for subscription attribution
- [Superwall](https://appsprint.app/docs/superwall) ([Markdown](https://appsprint.app/docs/superwall.md)) — Webhook integration for paywall attribution
- [Apple Search Ads](https://appsprint.app/docs/apple-search-ads) ([Markdown](https://appsprint.app/docs/apple-search-ads.md)) — Keyword and ad attribution
- [Google Ads](https://appsprint.app/docs/google-ads) ([Markdown](https://appsprint.app/docs/google-ads.md)) — Reporting and offline conversion upload
- [TikTok Ads](https://appsprint.app/docs/tiktok-ads) ([Markdown](https://appsprint.app/docs/tiktok-ads.md)) — Events API server-side event forwarding
- [Meta Ads](https://appsprint.app/docs/meta-ads) ([Markdown](https://appsprint.app/docs/meta-ads.md)) — In review
