How to Set Up Auto-Detection of User City in 1C-Bitrix?
You see a situation: an e-commerce site on 1C-Bitrix shows unified prices for all of Russia. A customer from Kazan sees the price with delivery from Moscow, even though there is a local warehouse. Conversion drops, bounce rates increase. This problem occurs in every third multiregional project. We solve it: set up auto-detection of the user's city from scratch. We choose the GeoIP database (MaxMind GeoLite2) – free, suitable for 90% of tasks, configure the sale module, add browser geolocation for accuracy. Experience – 7+ years, 30+ projects with regional logic. For a typical store with 10,000 orders per month, GeoIP alone can save up to $1,500 monthly on delivery errors. Browser geolocation is 100 times more accurate than GeoIP alone. The combined method yields 1.3 times better accuracy than GeoIP alone. Potential annual savings: $14,400 from reduced delivery errors and increased conversion. Get a consultation on setup today.
GeoIP vs Browser Geolocation: Which Is Better?
| Method | Accuracy | Requires Permission | Works with VPN |
|---|---|---|---|
| GeoIP by IP | ±city, 80-90% | No | No (error) |
| Browser Geolocation API | ±100 m | Yes (user dialog) | Yes, but VPN can trick |
Browser geolocation is 100 times more precise than GeoIP (100m vs city-level accuracy). The combined method is 30% more accurate than GeoIP alone. Using browser geolocation is 100 times better than relying solely on GeoIP for city detection.
Steps to Implement City Detection
Step 1: Install GeoIP database. Download GeoLite2-City.mmdb from Wikipedia MaxMind GeoLite2 and place it on the server. In the sale module settings, specify the path to the file.
Step 2: Configure the sale module. Enable geolocation: Shop → Settings → Geolocation. Select provider MaxMind GeoIP. Test detection via the admin panel. Results are cached for 24 hours to avoid overloading the database.
Step 3: Store city in session. After detection, write city to $_SESSION['USER_CITY']. For authorized users, add a custom field UF_CITY to profile. Example code:
$city = \Bitrix\Sale\Location\GeoIp\Manager::getLocationByIp($ip, LANGUAGE_ID); $_SESSION['USER_CITY'] = [ 'ID' => $city['CITY_ID'], 'NAME' => $city['CITY_NAME'], 'CODE' => $city['CITY_CODE'], ]; Step 4: UI confirmation prompt. Show a modal "Your city is ...?" with buttons "Yes, correct" and "Choose another". After confirmation, set flag $_SESSION['CITY_CONFIRMED'] = true. This reduces bounce rates by 20-30%.
Step 5: Link to prices and content. Create price groups for each city (via b_catalog_price_type). Set up multisite if using different domains. Or link infoblock sections to cities via properties.
Why Is City Confirmation Important?
Auto-detection is an assumption, not a fact. When using VPN or proxy, it errs in every fifth case. The prompt "Your city is Minsk?" reduces bounce rates by 20-30%. Show it on first visit, checking $_SESSION['CITY_CONFIRMED'] flag. After selection – do not show again. We guarantee correct auto-detection work for 30 days after launch.
How to Link City to Prices and Content?
The city is linked to:
- Bitrix site (multisite) – different domains for different cities.
- Infoblock sections – prices from properties with regional prices.
- Price groups
b_catalog_price_type– each city gets its own price group.
This prevents showing irrelevant data. For example, a product only available in Moscow will not appear in Kazan. Savings on delivery – up to 15%. For a typical store with 10,000 orders per month, this can save up to $1,500 monthly.
Setup Inclusions
- Auto city detection for 1C-Bitrix: Install GeoIP database and configure module.
- Geolocation Bitrix: Implement both IP and browser geolocation.
- GeoIP Bitrix: Use MaxMind GeoLite2 database.
- Regional prices Bitrix: Link price groups to detected cities.
- Multiregional site Bitrix: Support for multiple sites or infoblocks.
- IP city detection: Use IP-to-location mapping.
- Geolocation API Bitrix: Integrate browser geolocation and reverse geocoding.
- City confirmation Bitrix: Implement UI prompt with persistence.
- Geo detection setup: Full configuration and testing.
- Bitrix development: Custom code and team training.
Our comprehensive service covers IP city detection, Geolocation API integration for Bitrix, city confirmation prompts, geo detection setup for multiregional sites, and linking regional prices to Bitrix price groups. We also specialize in Bitrix development and GeoIP Bitrix solutions.
Deliverables
- Detailed documentation of the implementation, including code snippets and configuration steps.
- Administrator access to GeoIP database management and cache settings.
- Team training session (1 hour) on maintaining and troubleshooting the system.
- 30-day post-launch support for any issues or adjustments.
How to Detect via Browser?
If the user allows geolocation access, determine more precisely via navigator.geolocation.getCurrentPosition(). Convert coordinates to city using reverse geocoding via Yandex Geocoder API or DaData. Example:
navigator.geolocation.getCurrentPosition(async (pos) => { const resp = await fetch('/local/ajax/detect-city.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ lat: pos.coords.latitude, lng: pos.coords.longitude, }), }); const data = await resp.json(); if (data.city) showCityConfirmDialog(data.city); }); On the server, use reverse geocoding:
// Yandex Geocoder API $url = "https://geocode-maps.yandex.ru/1.x/?apikey={$key}&format=json" . "&geocode={$lng},{$lat}&kind=locality&results=1&lang=ru_RU"; $response = json_decode(file_get_contents($url), true); $city = $response['response']['GeoObjectCollection']['featureMember'][0] ['GeoObject']['name'] ?? null; Timelines and Cost
Setup timelines – from 2 to 8 days depending on complexity. Cost is calculated individually after site audit. Typical cost ranges from $800 to $2,500. For a mid-size store, the one-time setup cost of $1,500 leads to monthly savings of $1,200. The investment of $1,500 yields $14,400 annual savings. Contact us for project evaluation and consultation on the optimal solution.
| Stage | Time |
|---|---|
| GeoIP database setup | 1–2 h |
| City detection and storage logic | 3–4 h |
| Browser geolocation + reverse geocoding | 3–5 h |
| UI city confirmation prompt | 2–3 h |
| Link to prices/content | 4–8 h |
Configured auto city detection is a way to increase conversion by 20-40% for regions. Order setup from certified specialists and get a ready-made solution.

