Complete 2026 reference for routing TikTok ad reviewers to a compliant safe page while delivering your real offer to qualified visitors. Covers BytePlus IP intelligence, ByteDance crawler signatures, in-app webview detection, and the Singapore reviewer pool.
By IPCloak.ai Engineering · Updated April 25, 2026 · 12 min read
Start Free Trial See PricingCloaking is the practice of serving different page content to ad-platform reviewers than to end users — typically a compliant "safe page" to TikTok's automated and human moderators, and your actual offer to real visitors. TikTok specifically requires cloaking for almost any campaign in a restricted vertical because its review pipeline combines ByteDance-operated crawlers, BytePlus-routed in-app traffic, and a large Singapore-based human moderation pool that scrutinises both creative and destination URL. Compared to Western ad networks, TikTok's review apparatus is faster, more aggressive about behavioural fingerprinting inside the in-app webview, and more likely to escalate a single disapproval to a Business Manager (BM) suspension. This document is the technical reference for deploying IPCloak.ai cloaking on TikTok Ads. It explains the platform's enforcement stack, the deployment workflow, and operational practices that keep BMs alive at scale. Cloaking is not without risk — the document is honest about that.
TikTok's Industry Entry Policy bans or heavily restricts a long list of verticals: cryptocurrency exchanges and tokens, prescription pharmaceuticals, CBD and cannabis derivatives, online gambling, "get-rich-quick" finance, weight-loss supplements with before/after claims, dating apps targeting minors, and unlicensed forex or CFD trading. Even where a vertical is conditionally allowed (for example, licensed sports betting in specific countries), the bar for creative compliance is high. Five recurring rejection reasons:
TikTok's ad-review pipeline is multi-stage. Understanding each stage is what makes a cloaking deployment durable rather than fragile.
Stage 1 — automated pre-flight. When a campaign is submitted, the creative (video, image, text) is run through ByteDance's content classifiers: object detection, OCR over on-screen text, ASR over the audio track, and a category model that maps the result to TikTok's policy taxonomy. The destination URL is fetched in parallel by a fleet of ByteDance crawlers. The most common user agents seen in production logs are Bytespider, ByteDance/MA, and the generic TikTokBot/1.0. These crawlers originate predominantly from Singapore and Hong Kong data-centre ranges operated under BytePlus AS136907, with smaller fleets routed through AS396982 (Google Cloud, used for distributed fetches) and Alibaba Cloud Singapore.
Stage 2 — Lighthouse-style functional audit. A headless Chromium instance loads the landing page with throttled network and CPU, captures performance metrics, and flags pages that exceed thresholds for LCP, CLS, or render-blocking script. The headless browser sets a recognisable User Agent containing HeadlessChrome, but newer reviewer fleets disguise this with stock Chrome strings — fingerprinting against navigator.webdriver, missing plugins, and canvas entropy is the more reliable signal.
Stage 3 — human moderation. Borderline campaigns are queued for a human reviewer. The Singapore moderation centre is the largest, with secondary pools in Dublin, Austin, and Kuala Lumpur. Reviewers operate inside the TikTok in-app webview on real Android and iOS devices, with traffic egressing via BytePlus residential proxy ranges that closely mimic genuine user IPs. Behavioural signals that betray the reviewer: dwell time under 3 seconds, no scroll past the fold, no mouse movement on desktop emulators, and a viewport size matching the standard QA device profile (Pixel 6 portrait, iPhone 14 portrait).
Stage 4 — post-impression sweep. Even after approval, TikTok periodically re-fetches landing pages and re-runs classifiers. A page that is approved on Day 1 can be disapproved on Day 7 if the offer behind it has been swapped for non-compliant content. This is why static cloaking based purely on first-fetch IP is insufficient — IPCloak.ai re-evaluates every visitor.
<head> on your existing landing page and makes the routing decision client-side — useful if you need to keep your own domain in the destination URL. The server-side API gives the lowest latency and the most control: call our edge from PHP/Node/Python/Go, get back a decision in under 80 ms p95, and render the right page server-side.Account warm-up. A brand-new BM with a single high-budget restricted-vertical campaign is the textbook trigger for instant suspension. Warm new BMs by running 3–5 days of low-budget compliant campaigns (any allowed vertical) before introducing the cloaked campaign. Use a residential payment method registered to the BM's billing country.
BM rotation specific to TikTok. TikTok's integrity graph is aggressive: a banned BM will frequently take down adjacent BMs sharing payment method, browser fingerprint, IP at the time of login, or even a creator account. Rotate BMs with separate payment methods, separate browser profiles (Multilogin, AdsPower, Dolphin), and separate residential proxies per BM.
Creative compliance. Even with cloaking the creative itself is not cloaked — it is uploaded directly to TikTok and reviewed for policy compliance. Keep creatives neutral: no overt offer, no claim, no brand of a banned product. Treat the creative as the "top of funnel" content and let the cloaked landing page deliver the actual offer.
Locale alignment. The ad's targeting locale, the safe page's Content-Language header, the offer page's language, and the payment method's billing country should align. TikTok's review system flags mismatches.
BytedanceWebview. Some routing rules accidentally block this UA and serve the safe page to real users on iOS/Android. Always test with the actual in-app browser.The server-side API is the lowest-latency integration. The example below shows the canonical Express middleware pattern: call the IPCloak.ai decision endpoint, render the safe page or offer page based on the verdict, and forward the original visitor's IP and UA so the decision is accurate.
// Express middleware: route reviewer traffic to safe page,
// real users to the offer page. Decision latency ~80 ms p95.
const fetch = require('node-fetch');
const IPCLOAK_ENDPOINT = 'https://api.ipcloak.ai/v1/decide';
const PROJECT_ID = process.env.IPCLOAK_PROJECT_ID;
const API_KEY = process.env.IPCLOAK_API_KEY;
async function tiktokRoute(req, res, next) {
const visitor = {
ip: req.ip,
ua: req.get('user-agent'),
referrer: req.get('referer'),
accept_lang: req.get('accept-language'),
// TikTok-specific: surface in-app webview hint
is_webview: /BytedanceWebview/.test(req.get('user-agent') || ''),
};
const r = await fetch(IPCLOAK_ENDPOINT, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ project: PROJECT_ID, visitor }),
});
const { route, confidence } = await r.json();
if (route === 'safe') {
return res.render('safe-page', { confidence });
}
return res.render('offer', { confidence });
}
module.exports = tiktokRoute;
Equivalent SDKs ship for PHP, Python, and Go with identical semantics. The decision endpoint is idempotent and safe to retry on transient network error. For the JS-snippet integration, the same decision is made client-side via a single fetch from a tag injected into <head>; the snippet is under 4 KB minified.
Every visitor decision is the result of a layered evaluation. The table below summarises the signal classes used in the default TikTok ruleset and the relative weight each contributes to the final route.
| Signal class | Examples (TikTok-specific) | Weight |
|---|---|---|
| ASN intelligence | AS136907 (BytePlus), AS396982 (GCE Singapore), Alibaba Cloud SG | High |
| User-Agent regex | Bytespider, ByteDance/MA, TikTokBot/1.0, HeadlessChrome |
High |
| Browser fingerprint | navigator.webdriver, missing audio context, canvas entropy, font set | High |
| Behavioural | Dwell time, scroll, mouse trail, touch entropy on mobile | Medium |
| Geo and TZ | Singapore residential vs Singapore data-centre, TZ-IP mismatch | Medium |
| In-app webview | UA contains BytedanceWebview, carrier IP vs proxy IP |
Medium |
| Visit history | First visit vs returning, cookie freshness, click-source consistency | Low |
Signals are combined into a confidence score; the route is "safe page" when the reviewer-confidence score crosses the configured threshold (default 0.65). Operators can tune the threshold per project to bias toward either fewer false-negatives (reviewer leakage to offer) or fewer false-positives (real users routed to safe page).
Before going live with a cloaked TikTok campaign, walk the operator checklist below. Each item is a guard against a class of failure observed in production.
BytedanceWebview. Real users frequently arrive via this webview.Cloaking is explicitly prohibited by TikTok's Ad Creatives & Landing Page policy. Even the best cloaking deployment carries a non-zero probability of detection, and the consequence of detection is account-level suspension that is rarely reversed on appeal. Operators should treat each BM as a single-use asset, maintain warm spares, and never run cloaked campaigns from accounts that hold material spend or brand equity. IPCloak.ai's role is to reduce — not eliminate — the probability of detection, and to do so with engineering rigour rather than marketing claims. Use this technology with realistic expectations of operational cost and risk.
BytedanceWebview from a carrier IP) should receive the offer; reviewer in-app sessions (BytePlus IP, short dwell, no scroll) receive the safe page.