An IP in the target city is useful evidence for ad verification, but it is not the only delivery signal. Device location, connection type, language, browser state, consent, account history, frequency caps, page context, and scheduling can all affect the observed creative.
Treat the job as a matrix.
const matrix = {
region: ["target", "adjacent", "excluded", "control"],
device: ["desktop", "mobile"],
session: ["fresh", "returning"],
window: ["active", "boundary"]
};
This already produces 32 cells. Add browsers, locales, or connection types only when campaign settings or risk justify them.
Keep location fields separate
const observation = {
requestedRegion,
observedExit: { ip, asn, country, region, city },
platformOutcome: { creativeId, language, price, landingUrl },
browser,
device,
locale,
timezone,
sessionProfile,
consentState,
capturedAt,
expected,
result: "pass" // pass | fail | inconclusive | not_eligible
};
Do not collapse requested location, exit geolocation, and platform outcome into one field. Their disagreement is often the actual finding.
Define bounded evidence collection
async function verifyCell(cell, { maxAttempts = 5, cooldownMs = 30000 }) {
const observations = [];
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
observations.push(await captureAuthorizedObservation(cell));
if (hasDecisiveResult(observations)) break;
await delay(cooldownMs);
}
return classify(observations);
}
Repeated refreshes can change frequency caps or trigger abnormal-traffic controls. Use fixed limits, do not click ads, and never manipulate auctions.
Each evidence package should contain a redacted run ID, UTC timestamp, route and exit, browser/device/session state, placement and creative identifiers, screenshot hash, landing-page redirects, consent state, expected result, observed result, and reason.
Public Google guidance notes that location targeting may combine IP, device, Wi-Fi, cellular, and other signals, and is not guaranteed to be perfectly accurate. Carrier routes can provide coarser location evidence. Build uncertainty into the result model.
I work with 98IP. For authorized regional route comparisons: https://en.98ip.com/?k=dev
Disclosure: Follow advertising-platform rules, privacy and consent requirements, applicable law, contracts, publisher terms, and rate limits. Never generate invalid traffic or use proxies to evade controls.
Top comments (0)