Complete 2026 reference for routing AdsBot-Google, Lighthouse, and human reviewer traffic to a compliant safe page while serving real users your offer. Covers AdsBot signatures, Quality Score interaction, MCC-wide propagation, and reverse-DNS verification.
By IPCloak.ai Engineering · Updated April 25, 2026 · 12 min read
Start Free Trial See PricingCloaking on Google Ads is the practice of detecting Google's ad-review infrastructure — the AdsBot crawler family, automated Lighthouse audits, and human policy reviewers — and serving them a compliant safe page while real users see the actual offer. Google's review pipeline is the most technically sophisticated of the major ad platforms: it combines reverse-DNS-verified crawlers, ML-driven destination quality scoring, the Quality Score system that ties landing-page experience to bid economics, and Manager Account (MCC) propagation that can suspend dozens of linked client accounts off a single violation. This document is the technical reference for deploying IPCloak.ai cloaking on Google Ads. It covers the AdsBot architecture, Lighthouse interactions, Quality Score implications, the MCC propagation model, and the deployment workflow. As with every other platform, cloaking on Google has real risk — this guide is honest about it and recommends a conservative posture.
Google's Advertising Policies are extensive: prohibited content (counterfeits, dangerous products, dishonest behaviour), restricted content (alcohol, gambling, healthcare, financial services, political), trademark policy, editorial standards, and destination quality. Five recurring rejection reasons:
Google's review pipeline is multi-stage and re-runs continuously across the lifetime of a campaign. Understanding each stage is what allows a cloaking deployment to remain durable.
Stage 1 — AdsBot crawler family. When a campaign is submitted, the destination URL is fetched by Google's AdsBot user agent family: AdsBot-Google (desktop landing-page check), AdsBot-Google-Mobile (mobile parity check), AdsBot-Google-Mobile-Apps (app destinations), and the related Google-Lighthouse agent that runs synthetic audits. AdsBot identifies itself honestly in the UA but Google publishes a reverse-DNS verification procedure — legitimate AdsBot traffic resolves to a hostname under googlebot.com or google.com on reverse lookup. IPCloak.ai performs this reverse-DNS verification by default to avoid being spoofed by competitors injecting fake AdsBot UA strings.
Stage 2 — Lighthouse-style functional audit. Google runs a headless-Chromium Lighthouse audit against the destination URL, capturing performance (LCP, CLS, INP), accessibility, best practices, and SEO. A page that fails LCP under 2.5 s or has high CLS is penalised in destination quality scoring even if otherwise compliant. The Lighthouse audit user agent is recognisable but the underlying Chromium fingerprint (navigator.webdriver=true on legacy Chromium versions, missing audio context, deterministic canvas) is even more reliable.
Stage 3 — destination quality and Quality Score. Google's Quality Score combines expected CTR, ad relevance, and landing-page experience. The landing-page-experience component is calculated from Lighthouse output, mobile-friendliness, dwell time, and bounce rate captured via the in-search-results click telemetry. A cloaker that serves a fast compliant safe page to AdsBot but a slow heavy offer page to users will see Quality Score remain high but real-user behaviour metrics drag it down over weeks. IPCloak.ai recommends serving a page to real users that is structurally similar (load time, basic UX) to the safe page.
Stage 4 — human policy review. Borderline campaigns escalate to Google's policy team. Human reviewers operate from internal Google IPs and from a controlled set of residential ranges Google provisions for QA. They typically open the destination URL in Chrome on Linux with an incognito window — fingerprinted by absence of standard extension hashes, default font set, and consistent viewport dimensions.
Stage 5 — MCC-wide propagation. A confirmed circumvention violation on a client account managed under an MCC propagates to the MCC, which can in turn propagate to other client accounts under that MCC. This is why operational hygiene at the MCC level — separate MCCs per risk tranche, separate billing per MCC, separate login fingerprint per MCC — is essential.
<head> on your own domain or the server-side API for the lowest latency. Crucially, ensure the {gclid} URL parameter is preserved through the routing decision so that conversion tracking and Smart Bidding signals continue to flow to Google.curl -A "AdsBot-Google (+http://www.google.com/adsbot.html)" https://your-link and confirm the safe page is returned. Then run a real Lighthouse audit against the URL — confirm safe-page response. Finally, open the URL from a residential IP in real Chrome with a real user fingerprint — confirm the offer is served.Account warm-up. A new Google Ads account with a fresh billing instrument and an immediate restricted-vertical campaign is the textbook trigger for instant suspension. Run 7–14 days of low-budget compliant search campaigns first. Build conversion history. Maintain consistent admin login from the same residential IP and browser fingerprint during warm-up.
MCC rotation specific to Google. Treat each MCC as a single-purpose container. Use one MCC per vertical and one client account per active campaign cluster. Separate billing instruments, separate domains, separate Google Tag Manager containers, separate conversion-action sets per MCC.
Creative and ad copy compliance. The ad copy itself is not cloaked — it is reviewed against Google's editorial standards. Avoid superlatives without substantiation, exclamation overuse, all-caps text, and any phrase the trademark or restricted-content classifier flags. Keep ad copy aligned with the safe page's content rather than the offer.
Conversion tracking. Cloaking that breaks conversion tracking destroys Smart Bidding's optimisation. Maintain a conversion ID that fires on the offer page, ideally via server-side gtag or the Enhanced Conversions API, so that the client account continues to learn from real conversion data.
googlebot.com or google.com.Google requires reverse-DNS verification of the AdsBot UA to avoid being spoofed. The example below shows a canonical Flask integration that calls the IPCloak.ai decision endpoint, preserves the gclid URL parameter, and renders the appropriate page server-side.
# Flask route: IPCloak.ai server-side decision for Google Ads.
# Decision latency ~80 ms p95.
import os
import requests
from flask import Flask, request, render_template
app = Flask(__name__)
IPCLOAK_ENDPOINT = "https://api.ipcloak.ai/v1/decide"
PROJECT_ID = os.environ["IPCLOAK_PROJECT_ID"]
API_KEY = os.environ["IPCLOAK_API_KEY"]
@app.route("/lp")
def landing():
visitor = {
"ip": request.headers.get("CF-Connecting-IP", request.remote_addr),
"ua": request.headers.get("User-Agent", ""),
"referrer": request.headers.get("Referer", ""),
"accept_lang": request.headers.get("Accept-Language", ""),
# Google-specific: gclid is a strong real-traffic indicator
"gclid": request.args.get("gclid"),
# Ask the edge to perform reverse-DNS on AdsBot claims
"verify_googlebot": True,
}
r = requests.post(
IPCLOAK_ENDPOINT,
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={"project": PROJECT_ID, "visitor": visitor},
timeout=1.0,
)
decision = r.json()
template = "safe.html" if decision["route"] == "safe" else "offer.html"
return render_template(template, gclid=visitor["gclid"])
Equivalent SDKs ship for Node.js, PHP, and Go with identical semantics. The decision endpoint is idempotent and safe to retry on transient network error. The JS-snippet integration injects a sub-4 KB tag in <head> that runs the same routing logic client-side and preserves all URL parameters by default.
Every visitor decision is the result of a layered evaluation. The table below summarises the signal classes used in the default Google ruleset and the relative weight each contributes to the final route.
| Signal class | Examples (Google-specific) | Weight |
|---|---|---|
| ASN intelligence | AS15169 (Google), Google internal-IP ranges, Google-Lighthouse fetcher pool | High |
| User-Agent regex | AdsBot-Google, AdsBot-Google-Mobile, Google-Lighthouse |
High |
| Reverse-DNS verification | UA matches AdsBot AND PTR resolves to googlebot.com / google.com |
High (mandatory) |
| Browser fingerprint | Lighthouse-Chromium signatures, navigator.webdriver, deterministic canvas | High |
| URL parameters | gclid presence, utm_source consistency with Google referrer | Medium |
| Behavioural | Dwell, scroll, mouse trail, instant CTA-back pattern | Medium |
| Visit history | First visit, cookie freshness, conversion-history alignment | 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 Google Ads campaign, walk the operator checklist below. Each item is a guard against a class of failure observed in production.
googlebot.com or google.com.Cloaking is explicitly prohibited by Google's Circumventing Systems policy. Detection on Google is particularly costly because of MCC propagation — a single confirmed violation can suspend the manager account and propagate to linked clients, freezing budgets and trapping conversion history. Operators should treat each MCC as a single-purpose container, maintain warm spares per risk tranche, isolate billing instruments, and never run cloaked campaigns under an MCC that holds clean clients. 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 MCC-propagation risk.
googlebot.com or google.com. IPCloak.ai performs this check on every request to avoid responding to spoofed UA strings.