Migrating One Endpoint from Google Maps
Problem: We geocode 400,000 addresses a month against Google. Move it to HERE without breaking anything.Why geocoding first
Six surfaces, migrated in order. Never two at once.
Smallest blast radius, largest saving. Start here.
Step 1 — the facade, shipped against Google
Introduce it before HERE exists in the codebase.Step 2 — the two adapters, side by side
Step 3 — request mapping
Step 4 — semantic differences that return 200
These are the ones that survive code review.
Failure is signalled differently.
Google returns HTTP 200 with status: "ZERO_RESULTS". HERE returns HTTP 200 with items: []. Neither raises.
Country codes.
Google: ISO 3166-1 alpha-2 (US). HERE: alpha-3 (USA). A naive port silently filters to nothing.
Two coordinates per result.
HERE returns position (the address) and access (where a vehicle arrives). Google returns one. Route to access. Routing to position may target the geometric centre of a building, or a point separated from the road by a car park.
Confidence is not comparable.
fieldScore has no Google equivalent.
queryScore: 0.95 with fieldScore.houseNumber: 0.4 matched the street confidently and the house number badly. That is a failed delivery. fieldScore.postalCode: 0.8 is not. A single aggregate number cannot express this.
Batch is a job lifecycle.
Create → start → poll → fetch errors → fetch results → delete. 429 on start = concurrency limit, queue it. 204 on /errors = zero errors, not a failure. 404 on /result = not ready yet.
403 ≠ 401.
401 is a bad key. 403 is a valid key without entitlement. Retrying 403 is patient, well-engineered, and permanently futile.
Step 5 — shadow write
Step 6 — compare against ground truth, not against each other
Two wrong answers can agree.Step 7 — rollback, tested before you need it
here_id onto a core record, rollback must not require unwinding it.
Keep both live for one full business cycle. Two invoices for a month is cheaper than one incident. You are not testing the happy path — you are waiting for the edge case that only occurs on the last Friday of the month.
Common mistakes
Migrating before optimizing. Designing the facade from Google’s capabilities. Truck constraints andaccess points have nowhere to live.
Porting the confidence threshold.
Country code alpha-2 → alpha-3. Silent empty results.
Comparing providers against each other.
Comparing means, not distributions.
Shadow calls on the response path.
Percentage rollout by user.
Migrating two surfaces at once. Ambiguous root cause on the first incident.
Untested rollback.
Retrying 403.
Treating Batch API as a bulk endpoint.
Revoking the old keys before a full business cycle completes.
Presenting savings without migration engineering cost. Your CFO will ask.
Related
Google Migration Architecture
Dual-running, shadow comparison, rollback mechanics.
Reducing Google Maps Costs
Optimize first. You may not need to migrate.
HERE Geocoding vs Google Maps
Where each genuinely wins, and how to benchmark.
Batch Address Cleanup
The one-million-address backfill.
HERE documentation
Need production HERE API keys or implementation support? Placematic is an official HERE Technologies reseller and implementation partner. Talk to us.