Complete 2026 reference for routing AdIdxBot, BingPreview, and Microsoft editorial reviewer traffic to a compliant safe page while serving real users your offer. Covers Search vs Audience Network differences, the MSN editorial team in Manila, and Microsoft Advertising's enforcement model.
By IPCloak.ai Engineering · Updated April 25, 2026 · 12 min read
Start Free Trial See PricingCloaking on Microsoft Advertising (formerly Bing Ads) is the practice of detecting Microsoft's ad-review infrastructure — the AdIdxBot crawler, the BingPreview snapshot service, and the human editorial team — and serving them a compliant safe page while real users see the actual offer. Microsoft is often viewed as a "lower-pressure" ad surface than Google or Meta, but its enforcement has tightened materially since the merger with LinkedIn data signals and the relaunch of the Microsoft Audience Network. Crucially, Microsoft Audience Network — the native and display surface across MSN, Outlook.com, Edge in-feed, and partner publishers — runs a separate enforcement layer from Search ads, with its own editorial review and its own crawler fingerprint. This document is the technical reference for deploying IPCloak.ai cloaking on Bing Ads. It covers both Search and Audience Network enforcement, the MSN editorial team in Manila, AdIdxBot internals, BingPreview behaviour, and the deployment workflow. As ever, this guide is honest about residual risk.
Microsoft's Disallowed Content Policies and Restricted Content Policies cover much the same surface as the other major networks: counterfeits, dangerous products, financial-services restrictions, healthcare, gambling, adult, and political. Five recurring rejection reasons:
Microsoft's review pipeline is less ML-heavy than Google's but more dependent on human editorial review than Meta's. Understanding the components is essential to a durable cloaking deployment.
Stage 1 — AdIdxBot crawler. When a campaign is submitted, the destination URL is fetched by Microsoft's AdIdxBot user agent. AdIdxBot identifies itself in the UA as Mozilla/5.0 (compatible; adidxbot/2.0; +http://www.bing.com/bingbot.htm). Its source IPs originate from Microsoft AS8075 and a small number of Azure ranges Microsoft uses for Ads infrastructure. AdIdxBot fetches the destination URL, evaluates the page body against the Microsoft policy classifier, and feeds output into the editorial queue.
Stage 2 — BingPreview snapshot service. In parallel, the BingPreview/1.0b agent fetches the page and renders it in a headless Chromium instance to produce the search-result snippet preview. BingPreview also generates the screenshot used by the editorial team. The fingerprint is detectable: deterministic viewport size (typically 1366×768), missing audio context, and the BingPreview UA string itself.
Stage 3 — MSN editorial team in Manila. The bulk of human ad review for Microsoft Advertising routes through the MSN editorial centre in Manila, with secondary capacity in Hyderabad and Reno. Reviewers operate on standardised Edge browser profiles inside Microsoft-controlled VDIs, which egress to the public internet via known Azure NAT ranges. Behavioural signals: sub-3-second dwell, no scroll past the fold, instant CTA-click followed by back-button, and viewport sizes matching the standardised Edge profile.
Stage 4 — Microsoft Audience Network separate enforcement. Audience Network campaigns route through a parallel review pipeline staffed by a different editorial team and using a different ML classifier tuned for native placements. A landing page that passes Search review can fail Audience Network review and vice versa. IPCloak.ai treats them as separate enforcement surfaces and ships separate rule profiles for each.
Stage 5 — periodic re-fetch and editorial appeal. Microsoft re-fetches landing pages on a slower cadence than Google or Meta — typically every 14–30 days under normal conditions, faster if the campaign exhibits anomalous CTR or if a third-party complaint is filed. Microsoft's appeal flow is more responsive than Google or Meta; legitimate-looking edge cases are sometimes reinstated on appeal.
<head> lets you keep your own domain. The server-side API gives the lowest latency. Critically, ensure the Microsoft UET tag continues to fire on the offer page so conversion tracking and Smart Bidding signals continue to flow.curl -A "Mozilla/5.0 (compatible; adidxbot/2.0; +http://www.bing.com/bingbot.htm)" https://your-link and confirm the safe page response. Repeat with the BingPreview UA. Open the URL from a residential IP in real Chrome and Edge — confirm the offer is served. Submit a parallel test campaign to Audience Network and check both routes independently.Account warm-up. Microsoft's warm-up requirement is more lenient than Google's, but a brand-new account with an immediate restricted-vertical campaign still risks rejection. Run 5–7 days of low-budget compliant search campaigns first. Maintain consistent admin login from the same residential IP and a clean Edge or Chrome browser fingerprint.
Account rotation specific to Microsoft. Microsoft's integrity graph links accounts via billing, login fingerprint, and admin email but is less aggressive than Meta's cascade. Still, separate billing instruments and separate browser fingerprints per account remain best practice. Microsoft also looks at LinkedIn-derived signals if the admin email matches a LinkedIn account — be aware of cross-product fingerprinting.
Editorial copy compliance. The ad copy is reviewed by humans more often than by an ML classifier. Avoid exclamation marks in headlines, avoid all-caps, avoid claim-words like "best", "guaranteed", "miracle". Microsoft is stricter on copywriting than Google; assume the editorial team will read every line.
Audience Network creative. If you target Audience Network, expect a stricter image-quality bar — high-resolution images, no overlay text covering more than 20% of the image, and no implied product claims. Cloaking the destination URL does not cloak the image, which is hosted by Microsoft directly.
msclkid URL parameters through routing.Microsoft's two enforcement surfaces (Search and Audience Network) can be flagged at decision time so the rule engine applies the right detector profile. The example below shows a canonical Go HTTP handler that calls the IPCloak.ai decision endpoint, surfaces the network hint, and preserves the msclkid URL parameter.
// IPCloak.ai server-side route for Microsoft Advertising.
// Decision latency ~80 ms p95.
package main
import (
"bytes"
"encoding/json"
"io"
"net/http"
"os"
"strings"
"time"
)
const ipcloakEndpoint = "https://api.ipcloak.ai/v1/decide"
type visitor struct {
IP string `json:"ip"`
UA string `json:"ua"`
Referrer string `json:"referrer"`
AcceptLang string `json:"accept_lang"`
Network string `json:"ms_network"` // "search" or "audience"
MSClkID string `json:"msclkid,omitempty"` // strong real-traffic signal
}
type decision struct {
Route string `json:"route"`
Confidence float64 `json:"confidence"`
}
func bingHandler(w http.ResponseWriter, r *http.Request) {
network := "search"
if strings.Contains(r.Referer(), "msn.com") {
network = "audience"
}
payload, _ := json.Marshal(map[string]any{
"project": os.Getenv("IPCLOAK_PROJECT_ID"),
"visitor": visitor{
IP: r.Header.Get("CF-Connecting-IP"),
UA: r.UserAgent(),
Referrer: r.Referer(),
AcceptLang: r.Header.Get("Accept-Language"),
Network: network,
MSClkID: r.URL.Query().Get("msclkid"),
},
})
req, _ := http.NewRequest("POST", ipcloakEndpoint, bytes.NewReader(payload))
req.Header.Set("Authorization", "Bearer "+os.Getenv("IPCLOAK_API_KEY"))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: time.Second}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var d decision
json.Unmarshal(body, &d)
if d.Route == "safe" {
renderSafePage(w, r)
} else {
renderOffer(w, r)
}
}
Equivalent SDKs ship for Node.js, PHP, and Python 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 the msclkid parameter so UET attribution continues to function on the offer page.
Every visitor decision is the result of a layered evaluation. The table below summarises the signal classes used in the default Microsoft Advertising ruleset and the relative weight each contributes to the final route.
| Signal class | Examples (Microsoft-specific) | Weight |
|---|---|---|
| ASN intelligence | AS8075 (Microsoft), Azure VDI NAT for MSN editorial pool | High |
| User-Agent regex | adidxbot/2.0, BingPreview/1.0b, Audience Network secondary classifier UA |
High |
| Browser fingerprint | BingPreview Chromium signatures, Edge VDI defaults, deterministic viewport (1366×768) | High |
| Network surface | Search vs Audience Network referrer, msclkid presence | Medium |
| Behavioural | Dwell, scroll, mouse trail, instant CTA-back pattern | Medium |
| Geo and TZ | Manila / Hyderabad / Reno reviewer-pool match, TZ-IP mismatch | Medium |
| Visit history | First visit, cookie freshness, click-source consistency with Bing referrer | 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).
Cloaking is explicitly prohibited by Microsoft's Disallowed Content policy. Even with Microsoft's somewhat slower re-fetch cadence and more responsive appeal flow, detection still results in account-level suspension that is rarely reversed once the violation is confirmed as cloaking. Operators should treat each Microsoft Advertising account as a separable asset, isolate billing and admin fingerprint state, and treat Search and Audience Network as independent enforcement surfaces. 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 dual-network risk.
msclkid URL parameter through the routing decision. IPCloak.ai's default integration handles parameter preservation; the UET tag itself simply needs to be installed on the offer page in the standard way.