Geocoding — deferred (no current need); CF-IPCountry covers geo-routing today
Geocoding — deferred (no current need); CF-IPCountry covers today
Decision
The family adopts no geocoding service in 2026-06-20. No
account at OpenStreetMap Nominatim, no Mapbox account, no
Google Geocoding key. The CF-IPCountry header that Cloudflare
attaches to every request at the edge — free, included with the
existing Cloudflare Pages
zone, requires no third-party account — is sufficient for every
geo-shaped need the family has today.
When a future site lands a feature that needs address ? coordinate translation (forward or reverse geocoding), the swap target is documented as OpenStreetMap Nominatim or Mapbox — picked at adoption time based on volume, neither requires a card on the free tier.
Why
- No current geocoding-shaped need. None of the 11 sites have a map view, a "find nearby" feature, an address-input form, or a coordinate-display surface. The user direction was "confused; recommend skip as deferred" — the family takes that recommendation.
CF-IPCountrycovers every current geo-routing need. The consent-banner default is geo-routed by country code (per consent-management-multi-category); payment routing splits Indian vs international buyers (per max-payment-methods); ad-network selection differs by region. All three readCF-IPCountry, none need a coordinate or street address.- Adopting today fights the never-hit-quotas rule. Free tiers exist (Nominatim 1 req/sec OSS, Mapbox 100K loads/mo) but signing up before there's a feature to use it burns a swap-cost slot for no benefit.
- Deferred is honest — documents the swap targets and the trigger conditions so the next agent doesn't re-derive the shortlist when the feature lands.
Implications
What we don't do
- No Nominatim account, no Mapbox key, no Google Geocoding account today. Not in.
- No
<Map>or<Geocoder>component in. When the first site needs one, it lands in the kit at adoption time. - No reverse-geocoding fallback in any consent / payment /
i18n path.
CF-IPCountryis enough for country-level routing; city / coordinate-level routing is not a current need.
When this flips — promote deferred ? active
Promote when any one of these holds:
oriz-financelands a map view (e.g. "where my brokers are" / "regional regulator map") that needs forward / reverse geocoding for office addresses.oriz-melands a "visited cities" / "lifestream geo-tagging" feature that needs reverse-geocoding GPS coordinates from JSONL events to city / country names.- Any future site lands an "address input" form that needs to validate and standardise addresses (e.g. shipping, event venues).
- A consent-banner surface needs sub-country geo-targeting
that
CF-IPCountrycannot serve.
Swap targets — pick at adoption time
| Provider | Free tier | Card | When to pick |
|---|---|---|---|
| OpenStreetMap Nominatim (public) | 1 req/sec, no auth | No | Low volume, OSS-friendly, attribution-on-page acceptable |
| Mapbox | 100K geocoding requests / month, 50K map loads / month | No | Moderate volume, polished map tiles, brand-mark acceptable |
The picked provider must:
- Not require a card on file at sign-up — keeps no-card-on-file intact.
- Have a documented swap path back to the other in this table — fail-closed parity per never-hit-quotas.
- Land in
as
<Map>/<Geocoder>so swapping providers is one prop flip across the family, not 11 fixes.
What stays
CF-IPCountryheader — used by the consent banner geo defaults, payment-route gateway selection, and ad-network geo-switch. Free, edge-injected, no third-party.- No geo-IP city DB — city-level GeoIP is a separate capability and not currently needed; if a feature lands, it comes through the same evaluation as geocoding.