Three layers, from broad to precise
Each layer targets a different mechanism, and they compose. You can use one, two, or all three on the same region object.1
Country exit — the residential IP's country
country places the capture behind a residential exit IP in that country.
This is the only required field in a region object and the coarsest layer.2
State / city exit — a city-level residential IP
state and city narrow the residential exit to a sub-national region and a
city, so the request egresses from an IP that actually resolves to that
locality. This applies to every browser-captured surface.3
Locality — a Google geotarget via uule
location is a Google Ads geotarget canonical name applied as a uule
parameter on the four Google surfaces (google_search, google_news,
google_ai_overview, google_ai_mode). It pins the answer to one of
~100,000 named localities — cities, ZIPs, boroughs — independent of the
exit IP. Names come from Google’s public geotargets
list.These layers are independent. The residential exit (
country/state/city)
works on every browser-captured surface; the location geotarget only affects
the Google surfaces, where it stacks on top of the exit IP. On a
non-Google surface, location is simply ignored.A local rank-tracking request
Combine all three to capture what a searcher in a specific locality sees across the Google surfaces. Because every surface × region pair is a separate child, one request captures the same query across as many localities as you list (up to 10 regions per request).Verifying what was localized
Every Envelope reports what geo was actually applied underprovenance.region,
so you can trust the result rather than assume it. Alongside the residential
requested/effective region keys, two fields cover the location geotarget:
The Google geotarget canonical name you asked for (or
null when you sent no
location).The name a
uule was actually applied for. It is null — paired with a
location_not_applied warning — whenever the
name could not be encoded, so a wrong locality is never claimed.Choosing the right layer
National or regional market coverage
National or regional market coverage
Use
country (optionally state/city) alone. The residential exit is
enough when you care about country- or region-level differences, and it
works across every browser-captured surface, not just Google.Precise local rank tracking on Google
Precise local rank tracking on Google
Add
location with the Google geotarget canonical name for the exact
locality. This is the layer that gives you ZIP- and borough-level precision
on the Google surfaces, independent of which residential IP the capture
egressed from.Both, for maximum fidelity
Both, for maximum fidelity
Set the residential
state/city and the location geotarget
together. The IP resolves to the city while the uule pins the Google
answer to the named locality — the closest match to what a local searcher
actually sees.Next steps
Regional availability
The full
regions array reference — every field, country coverage, and
requested-vs-effective semantics.Output formats
Where
provenance.region and the location_not_applied warning live in the
Envelope.