HitKeep 2.6.0 adds city, provider, ASN, and ASN organization reporting to accepted hits. The new dimensions appear in dashboards, filters, Opportunities, shared reports, MCP responses, takeouts, and the public API.
The privacy boundary stays the same. HitKeep resolves visitor IP addresses transiently, stores derived analytics metadata, and still does not store raw visitor IP addresses on hit records.
This release also replaces the old country-only iploc dependency with embedded lookup data generated from IP2Location LITE country, city, and ASN datasets. Runtime lookup does not download data.
HitKeep uses the IP2Location LITE database for IP geolocation. See IP2Location and IP2Location LITE.
What Changed
- City and network metadata: accepted browser and server-side hits can store region, city, provider, ASN, and ASN organization fields beside country.
- Dashboard filters: country and city live under Location. Provider and ASN live under Network. Clicking a row applies the same reversible filter behavior as other metric cards.
- More report context: dashboard, events, goals, funnels, ecommerce, Web Vitals, AI visibility, and chatbot analytics can show the new dimensions where the report has matching data.
- Opportunities: traffic quality, ecommerce, Web Vitals, and AI visibility Opportunities can cite aggregate city, provider, and ASN evidence without storing raw IP addresses, user agents, or visitor rows.
- MCP and shared dashboards: governed read-only surfaces can expose aggregate city/provider/ASN context without visitor-level data.
- Lifecycle coverage: takeout, hit exports, retention archives, deletion/reset, and backup/restore include the new hit metadata consistently.
- Country traffic exclusions: site and instance exclusions support country rules beside IP/CIDR rules. Country exclusions affect new incoming traffic only.

Dashboard Groups
Metric-card reports now use the same information architecture:
| Group | Typical cards |
|---|---|
| Content | Pages, landing pages, exit pages, paths, event names, chatbot surfaces, AI resource types |
| Acquisition | Sources, referrers, campaigns, UTM source, medium, campaign, content, and term |
| Audience | Devices, browsers, and languages |
| Location | Countries and cities |
| Network | Providers and ASNs |
City stays with country because both answer “where.” Provider and ASN stay together because both answer “which network.” Empty groups are hidden.
Data And Attribution
HitKeep’s embedded lookup assets are generated from IP2Location LITE data. They keep country lookup quality aligned with the previous iploc source and add city, provider, and ASN lookup for IPv4 and IPv6 addresses.
Maintainers refresh the embedded assets before public release:
IP2LOCATION_DOWNLOAD_TOKEN=... go run ./cmd/ipmeta-generateThe generator downloads upstream data, writes compressed runtime lookup assets, and discards the raw ZIP/BIN payloads. Production binaries embed only the runtime assets.
Privacy And Lifecycle
City, provider, and ASN fields are derived analytics data. They follow the same lifecycle as hits:
- site takeout and user takeout include the fields
- filtered hit exports include the fields
- retention archives keep the fields in archived hit rows
- site deletion, site reset, and analytics cleanup remove the fields with the hit rows
- backup and restore preserve the fields because they are normal database columns
HitKeep still does not add raw visitor IP storage.
Compatibility Notes
API compatibility
Most JSON analytics response changes in 2.6.0 are additive. API clients with strict schemas should still review these compatibility-impacting changes before upgrading:
- Exclusion rule responses are now typed.
GET /api/admin/exclusionsandGET /api/sites/{id}/exclusionscan return CIDR rules withtype: "cidr"andcidr, or country rules withtype: "country"andcountry_code. ExistingPOSTrequests that send onlycidrstill work and are treated as CIDR rules, but list clients should stop assuming every row has acidrvalue. - Hit exports and takeouts add geo/network fields. Hit rows can now include
region,city,provider,asn, andasn_org. JSON clients that ignore unknown fields should keep working. Fixed-column CSV/XLSX readers and strict Parquet, JSON, or NDJSON schema consumers should update their mappings. - AI chatbot export now recognizes audience filters.
/api/sites/{id}/ai-chatbots/exportaccepts repeatablefilter=type:valuehit-dimension filters. Clients that previously sent unrelatedfilter,filter_type, orfilter_valuequery parameters should rename or remove them because invalid filter input can now return400.
Hit metadata migration
There is also a schema migration for hits. Historical rows are not backfilled, so old rows may have country-only or empty city/network metadata. New accepted hits receive derived metadata when the resolved IP has a matching lookup row.
Trusted proxy accuracy
If you self-host behind a reverse proxy, review Trusted Proxies. Correct trusted-proxy configuration affects rate limiting, IP exclusions, spam checks, and derived country, region, city, provider, and ASN accuracy.
Release metadata refresh
Operators who mirror release workflows should set the IP2LOCATION_DOWNLOAD_TOKEN secret before running the metadata refresh workflow. Runtime deployments do not need the token.