# Use location conditions

You'll find how to match a visitor's detected country or city, how missing location data affects a rule, and where IP-based location can be inaccurate.

Available on the Grow, Scale, and Pro plans.

You can show a regional offer based on a visitor's detected country or city. RightMessage's built-in **Location** conditions don't need a separate geolocation service or a browser permission prompt.

## What it checks

**Location** uses the country or city supplied with RightMessage's IP-based location data. That's the visitor's detected network location, not the country they entered in a question or the address on their contact record.

## When to use it

Use these conditions for country or city targeting when an estimated location is enough. If you need a location someone supplied, [input-question answer conditions](https://rightmessage.com/help/conditions-answers) cover country, phone country, and address answers.

[Browser data conditions](https://rightmessage.com/help/conditions-browser-data) cover custom location data your own site already exposes. Those sources have different accuracy and lifetime rules.

## Options

### Country

**Country** has an operator and a searchable country multi-select. It starts with **include any of** and no countries selected. The picker shows country names and stores country codes.

| Operator                 | What matches                                                                      |
| ------------------------ | --------------------------------------------------------------------------------- |
| **include any of**       | The detected country is in your selection. An empty selection doesn't match.      |
| **don't include any of** | The detected country isn't in your selection. Missing country data can also pass. |
| **matches any**          | Your configured country selection is nonempty.                                    |
| **doesn't match any**    | Your configured country selection is empty.                                       |

The last two operators inspect your configured list, not whether the visitor has a detected country. **include any of** checks for a match with a selected country.

### City

**City** has a text comparison and a city-name field. It starts with **Equals** and an empty value.

The operators are **Equals**, **Does not equal**, **Contains**, **Does not contain**, **Starts with**, **Ends with**, **Wildcard match**, **Is set**, and **Is not set**.

Text matching is case-sensitive. **Contains** with `New York` checks the returned city text for that exact spelling. **Is set** and **Is not set** don't need a comparison value, even if the editor keeps the city field visible.

City uses the shared [text comparison rules](https://rightmessage.com/help/condition-builder-reference#text-operators), including comma-separated alternatives. A city rule doesn't accept a radius, postal-code region, or distance from a location.

## Examples

The rule below matches the United States or the United Kingdom. [WorkForge](https://workforge.rightmessage.com) could use it for a regional offer, with a separate default offer for visitors who don't match.

![Country condition matching visitors from the United States or United Kingdom](https://rightmessage.com/help/screens/segmentation-country.light.webp)

## Things to know

### Missing location data

When RightMessage's runtime data object is entirely unavailable, location conditions don't match.

When that object exists but the city is missing, **City** compares the missing value as empty. **Is not set** can match it. **Does not equal** or **Does not contain** with a nonempty value can also match missing city data.

A missing country can't pass a positive selected-country comparison. It can pass **don't include any of**. A negative rule alone doesn't establish that someone has a known location outside your selected countries.

### Accuracy and lifetime

IP location is an estimate. VPNs, mobile networks, corporate gateways, and network routing can make it differ from the visitor's physical location. City targeting isn't a precise address or GPS location.

The condition reads the location supplied for the current runtime. It doesn't read a permanent visitor preference or the first location ever observed. Another connection or a later load can supply a different value. The **Location** editor has no history selector or retention period.

The picker offers only **Country** and **City**. It doesn't offer region, coordinates, postal code, radius, or HTML5 browser geolocation as additional triggers.
