Platform Guide 5 min read

TikTok Offline Conversions: Complete Guide to Events API Integration

A complete guide to setting up offline conversion tracking for TikTok Ads using the Events API. Learn how The Upload Offline Conversions App uploads booked jobs, revenue, and CRM events to TikTok for campaign optimization.

Last verified: 2026-11-07

TikTok’s advertising platform has grown rapidly for service businesses, and offline conversion tracking is essential to prove that TikTok Ads drive real revenue. This guide from The Upload Offline Conversions App (TUOCA) covers everything you need to set up TikTok offline conversions using the Events API.

Why TikTok Offline Conversions Matter

TikTok’s default optimization targets are engagement metrics — views, clicks, and form fills. Without offline conversion data, TikTok’s algorithm optimizes for the cheapest interactions, not the most profitable customers.

Without Offline DataWith Offline Data
Optimizes for video views and clicksOptimizes for booked jobs and revenue
CPA based on form fillsCPA based on actual conversions
No ROAS visibilityReal ROAS from uploaded revenue
“TikTok doesn’t work for us”“TikTok delivers 4x ROAS for HVAC”

Setup Overview

Prerequisites

  • ✅ TikTok Business Account
  • ✅ TikTok Ads Manager access
  • ✅ Pixel created (for Events API authentication)
  • ✅ Access token generated
  • ✅ TTCLID auto-tracking enabled

Step 1: Create a Pixel

  1. Go to TikTok Ads Manager → Assets → Events → Web Events
  2. Click Create Pixel
  3. Select Manual Setup (not automatic)
  4. Name your pixel (e.g., “TUOCA Offline Events”)
  5. Note the Pixel ID

Step 2: Generate Access Token

  1. In your pixel settings, click Generate Access Token
  2. Copy and securely store the token
  3. This token authenticates all Events API requests

Step 3: Enable TTCLID Auto-Tracking

  1. Go to Assets → Events → Web Events → your pixel → Settings
  2. Enable Auto-tracking or Auto Advanced Matching
  3. This appends ttclid= to ad click URLs

Step 4: Configure Events

Define which events you’ll track. For service businesses:

Event NameFunnel StageWhen to Send
ContactTopPhone call received
SubmitFormTopLead form submitted
PlaceAnOrderMiddleJob/service booked
CompletePaymentBottomJob completed, invoice paid

Sending Events via the Events API

API Endpoint

POST https://business-api.tiktok.com/open_api/v1.3/event/track/

Use event_source offline and an Offline Event Set ID for in-person or CRM conversions. Use web and a Pixel ID for events that happened on the website. The v1.3 in the path is the current Events API 2.0 endpoint, not the retired Events API 1.0 /offline/track/ route.

Headers

Content-Type: application/json
Access-Token: YOUR_ACCESS_TOKEN

Event Payload

{
  "event_source": "offline",
  "event_source_id": "YOUR_OFFLINE_EVENT_SET_ID",
  "data": [
    {
      "event": "CompletePayment",
      "event_time": 1714502400,
      "event_id": "job-2026-04-001",
      "user": {
        "ttclid": "E.C.P.AbCdEf123GhIjKl456",
        "email": ["a8b14f04b2be6c5f..."],
        "phone": ["d4f5c3b1e72a9f8d..."],
        "external_id": ["customer-12345-hash"]
      },
      "properties": {
        "value": 4500.00,
        "currency": "USD",
        "content_type": "product",
        "description": "HVAC Installation"
      }
    }
  ]
}

Response

{
  "code": 0,
  "message": "OK",
  "data": {
    "events_received": 1
  }
}

User Data Requirements

TikTok matches events using the TTCLID and hashed user data:

FieldTypeFormatRequired
ttclidStringRaw TTCLID valueRecommended
emailArray of stringsSHA-256 hashed, lowercaseRecommended
phoneArray of stringsSHA-256 hashed, E.164Recommended
ipStringRaw IPv4/IPv6Optional
user_agentStringRaw browser user agentOptional
external_idArray of stringsSHA-256 hashed CRM IDOptional

Hashing rules:

  • Email: lowercase → trim → SHA-256
  • Phone: E.164 format (+1XXXXXXXXXX) → SHA-256
  • External ID: SHA-256

Use the SHA-256 Hasher and E.164 Formatter to verify your data formatting.

How long to keep the click ID

TikTok asks you to keep the click ID for at least 28 days and expires it on the attribution window you set, so keep the ID from a March 1 click through at least March 29 and send the job while that window is still open. There is no second rule that throws the event out at 28 days. A click-attribution window you pass on a web event is measured in hours, and one of the documented examples is 720 hours, which is 30 days.

Meta is a different clock. Meta rejects a Conversions API request when the event happened more than 7 days before you send it, so a booking from Monday has to be uploaded by the next Monday, unless it is a physical-store sale, which Meta asks you to send within 62 days. A job that closes on day 20 can still go to Meta if you upload it within 7 days of the close.

Deduplication

TikTok deduplicates events using the event_id field:

  • Same event_id with same event name → Counted once
  • Same event_id from both pixel and Events API → Counted once
  • No event_id → Each submission counted separately

Always include event_id to prevent double-counting.

TikTok Bidding Optimization

Once offline conversions flow consistently:

Available Optimization Goals

GoalData NeededBest For
Complete Payment50+ events/weekRevenue optimization
Place an Order50+ events/weekBooking optimization
Contact50+ events/weekLead volume

Minimum Data Requirements

TikTok requires approximately 50 events per week for stable optimization. This is higher than Google’s threshold, which is why combining online and offline events helps reach the threshold faster.

Common TikTok Events API Errors

Error CodeMessageFix
40001Invalid access tokenRegenerate token in pixel settings
40002Invalid pixel IDVerify pixel ID
40101Permission deniedCheck token scope
40103Rate limit exceededReduce request frequency
40200Invalid event formatCheck event name and field types

How TUOCA Handles TikTok

  1. Authentication — Stores pixel ID and access token securely
  2. Event mapping — Maps your conversion types to TikTok events
  3. User data hashing — SHA-256 hashes email, phone per TikTok’s rules
  4. TTCLID inclusion — Sends TTCLID when available from call tracking
  5. Batch optimization — Keeps each request at or under 1,000 events
  6. Rate limiting — Keeps each request at or under 1,000 events
  7. Deduplication — Generates consistent event_ids
  8. Click-ID age — Warns when a stored click ID is getting close to the 28 days TikTok asks you to keep it

Next Steps

  1. ✅ Create a TikTok pixel and generate access token
  2. ✅ Enable TTCLID auto-tracking
  3. ✅ Configure TUOCA with TikTok as a destination
  4. ✅ Send test events and verify in Events Manager
  5. ✅ Monitor for 30 days before optimizing for offline events

Frequently Asked Questions

Yes. TikTok supports offline conversion tracking through the Events API (server-side). You send conversion events with the TTCLID and/or hashed PII to TikTok's Events API endpoint. TikTok matches the event to the original ad click and uses it for campaign optimization.

TikTok asks you to keep the click ID for at least 28 days and expires it on the attribution window you set, so keep the ID from a March 1 click through at least March 29 and send the job while that window is still open. There is no second rule that throws the event out at 28 days.

TikTok's Events API 2.0 accepts up to 1,000 events per request. TikTok recommends sending events as they happen rather than holding them for a large batch. TUOCA batches only as far as the limit allows and manages rate limiting.

Yes. TikTok is increasingly effective for local service businesses, especially those targeting younger homeowners (millennials). Video-first ad formats work well for before/after showcases, and CPMs are generally lower than Google or Meta. Offline conversion tracking is essential to prove ROI for these campaigns.

Stop Guessing. Start Proving ROI.

TUOCA connects your CRM and call tracking data directly to your ad platforms. Set up in minutes.