Skip to main content
Ad Attribution

TikTok Conversions API Setup: Fix Inflated Ad Tracking

TikTok’s default browser pixel uses a 1-day view-through attribution window that claims credit for sales it had nothing to do with, inflating ROAS by 40–60%. The TikTok Conversions API sends hashed purchase data directly from your server to TikTok — no browser involved, no inflated numbers.

Video walkthrough

Full architectural breakdown of how TikTok’s view-through attribution inflates ROAS and how to fix it with a server-side integration.

TikTok Conversions API Setup video thumbnail

Scaling TikTok ad spend without server-side tracking is like reading a speedometer that adds 40% to every reading. You think you’re doing 60 mph. You’re doing 40. The TikTok browser pixel has the opposite problem from Meta’s — instead of losing data, it invents data by crediting itself for conversions it never influenced.


Why the TikTok pixel over-reports

TikTok’s browser pixel applies a 1-day view-through attribution window by default. That means any user who sees your ad — including someone who scrolled past it for half a second — gets attributed to your campaign if they buy something within 24 hours, even if they found your product through a Google search, a friend’s recommendation, or direct memory.

A user scrolls past your ad at 7am. They search Google for your product at 4pm and buy it. The TikTok pixel claims that sale as a conversion.

The result: your ROAS dashboard shows numbers that look real but reflect a mix of genuine paid conversions and organic sales the pixel borrowed credit for. Campaigns that are actually losing money appear profitable. You scale them. Ad spend increases. Real returns do not.

The only reliable fix is to stop using browser signals for attribution entirely and replace them with payment-confirmed, server-originated data.


What the TikTok Conversions API actually is

The TikTok Conversions API (sometimes called the Events API) is a direct connection between your backend server and TikTok’s data infrastructure. Instead of waiting for a browser to fire a pixel tag after a purchase, your server sends a verified conversion event — including the buyer’s hashed email and the TikTok Click ID (ttclid) — directly to TikTok’s endpoint.

Because the data comes from your payment processor and not from a browser, it is not affected by ad blockers, iOS privacy restrictions, or cookie loss. More importantly, it only fires when a real transaction completes — there is no view-through inflation.


Browser pixel vs. Conversions API

Comparison of TikTok browser pixel versus TikTok Conversions API
FactorBrowser pixelConversions API
Attribution model1-day view-through (default)Post-click only
Affected by ad blockersYesNo — server-side
Affected by iOS privacy changesYesNo
Data sourceBrowser (unreliable)Payment processor (verified)
ROAS accuracyInflated 40–60%Deterministic
Setup complexityLow — paste a tagMedium — requires webhook + hashing

How the Make.com integration works

Make.com handles the entire routing sequence without requiring you to write or host custom server code. The flow runs automatically every time a payment completes.

Payment webhook fires

Stripe or Shopify sends a webhook to Make.com the moment a transaction is confirmed. The raw JSON payload contains order value, customer email, and any URL parameters captured at checkout.

Make.com extracts and hashes the data

Make.com pulls the ttclid from the payload, normalises the customer email to lowercase, removes whitespace, and applies SHA-256 hashing before any data leaves your system.

Verified payload sent to TikTok Events API

Make.com posts the formatted JSON to TikTok’s Events API endpoint. TikTok receives a confirmed purchase tied to a real click — no view-through credit, no inflated ROAS.


Payload formatting requirements

The TikTok Events API documentation enforces strict rules on the JSON structure you send. Getting any of these wrong causes the server to reject the payload silently.

  • Capture the ttclid on your landing page. The TikTok Click ID appears as a URL parameter when a user arrives from a TikTok ad. Your landing page must read this value and pass it through to the order object at checkout. Without it, TikTok cannot match the conversion to the correct campaign.
  • Normalise email before hashing. Convert the customer email to lowercase, remove any leading or trailing spaces, then hash the result with SHA-256. Sending an un-normalised string produces a hash that does not match TikTok’s own hashing of the same address, breaking match rates.
  • Use the correct event name. For purchase events the required string is CompletePayment. Using a non-standard event name causes the payload to be accepted but not attributed to the right conversion goal.
  • Include value and currency. Both fields are required for revenue reporting. value should be a decimal number (e.g., 49.00), and currency should be a three-letter ISO 4217 code (e.g., USD).

Troubleshooting payload rejections

If your JSON payload is rejected by TikTok’s endpoint, the diagnostic logic is nearly identical to Meta’s CAPI. The guide to formatting server-side payload parameters for Meta covers the same field-level syntax errors that cause TikTok rejections — missing required fields, incorrect data types, and malformed hash strings.


The TikTok Offline Tracking Program

For retailers who need to connect physical store sales to TikTok ad spend, the Conversions API extends into the TikTok Offline Tracking Program. This is designed for businesses where a meaningful share of conversions happen in-store rather than online.

How it works

Retailers connect point-of-sale data to TikTok via an infrastructure partner such as LiveRamp. The connection uses OAuth authorisation and a 28-day lookback window, matching hashed loyalty card emails and transaction records against historical TikTok ad views. The result is an omnichannel view of true ROAS — not just the share of revenue that came through a browser.

This is not a tool for most direct-to-consumer operators. It requires an enterprise-level data agreement and a live POS integration. For digital-first businesses, the standard Conversions API via Make.com covers all the ground you need.


Build your full attribution stack

Server-side TikTok tracking is one piece. The complete Make.com attribution blueprint covers Stripe webhooks, pixel deduplication, and CRM routing in a single connected workflow.

Get the complete Make.com attribution blueprint →

Frequently asked questions

Why is my TikTok pixel over-reporting sales?

The TikTok browser pixel applies a 1-day view-through attribution window by default. Any user who saw your ad — even briefly, without clicking — gets credited if they purchase within 24 hours, regardless of how they actually found your product. This inflates ROAS and makes losing campaigns look profitable.

What is the TikTok Conversions API?

It is a server-to-server connection that sends hashed, payment-verified conversion data directly from your backend to TikTok’s Events API. Because it bypasses the browser, it is not affected by ad blockers or iOS privacy restrictions, and it only records genuine post-click purchases.

Can Make.com handle the TikTok Conversions API setup?

Yes. Make.com’s HTTP modules can receive Stripe or Shopify webhooks, extract the ttclid, apply SHA-256 hashing to customer emails, and POST the formatted payload to TikTok’s endpoint — all without custom server code.

Do I still need the browser pixel if I set up the Conversions API?

You can run both in parallel during a transition period to compare data. Once you confirm the API is recording accurately, disabling or reducing the pixel’s attribution window (from view-through to click-through only) prevents double-counting and removes the inflation from your dashboard.

What is the TikTok Offline Tracking Program?

An enterprise extension of the Conversions API for retailers who need to connect physical point-of-sale data to TikTok ad views. It uses a 28-day lookback window and an OAuth-secured connection via data partners like LiveRamp to prove omnichannel ROAS.


Scroll to Top