About Tracking

Services

Google Ads Management Meta Ads Management Website Design & Build Local SEO Social Media Management Tracking & Conversions

Ad Platform Tracking

Meta Pixel + CAPI TikTok CAPI LinkedIn CAPI Snapchat CAPI Pinterest CAPI Quora Pixel Bing + UET Tag

Google Ecosystem

Google Ads Tracking GA4 Setup & Audit Google Tag Manager

Advanced Solutions

Server-Side Tracking Looker Studio Offline Conversion
Case Studies Blog Free Checklist Book Free Audit →
TikTok CAPIEdTech SaaS · Gen Z MarketUSA

TikTok app and web both counting signups — 44% of conversions were not real

-44%Inflation removed — 1,800 reported vs 1,250 actual, now 1,240
99.2%Accuracy rate after switching to server-side single source
TrueAcquisition cost now calculable — was inflated by 44%

The situation

An EdTech SaaS targeting Gen Z students was running TikTok campaigns. Their app ran on iOS and Android. Their web landing page also had signup. TikTok Ads Manager was reporting 1,800 signups per month. Their backend database showed 1,250 actual accounts created.

The problem

The TikTok pixel was firing a CompleteRegistration event on the web confirmation page. The TikTok App Events SDK was also firing a Registration event when users completed in-app signup. Users who discovered the product via TikTok often opened the website, then downloaded the app, then signed up in-app — TikTok counted this as two conversions. Without shared event_id across web and app, deduplication was impossible.

What we did

  1. Mapped user journey: TikTok ad → web landing page → App Store download → app signup — dual event firing confirmed
  2. Implemented server-side signup event via TikTok Events API triggered only on backend account creation — single source of truth
  3. Disabled web CompleteRegistration pixel event (replaced by server-side)
  4. Disabled in-app Registration SDK event (replaced by server-side)
  5. Validated against backend: TikTok now showing 1,240 signups/month vs 1,250 actual — 99.2% accuracy

Why it worked

Multi-surface products (web + app) create natural deduplication problems with TikTok because the pixel (web) and SDK (app) have no shared user identity unless you implement a server-side solution that uses your own user ID as the event_id. The only clean solution is a single server-side event fired on account creation in the backend, replacing all client-side events.

“TikTok was showing 1,800 signups but our database had 1,250. Saifur traced it to users hitting our web page and then signing up in-app — both events firing and no dedup between web pixel and app SDK. Moving everything to server-side CAPI from our backend gave us 99% accuracy. Now we know our real CAC.”
Jasmine R.
Growth Lead · EdTech SaaS · USA · Dec 2025