🛒 Bringo

Integrations

Google Maps

Maps power address pickers, store locations and live order tracking. You'll create keys in the Google Cloud Console and use them in two places.

Enable these APIs first — the complete list

In Google Cloud → APIs & Services → Library, enable all six of the following on the project that owns your keys. Each one powers a different feature — a missing one doesn't break everything, it silently breaks just that feature, which makes it easy to miss:

1. Maps JavaScript API
Website + admin maps: checkout address picker, deliverable-area drawing, store map. Uses the admin Map API Key.
2. Maps Static API
The order-tracking / live-route map image in the Customer and Delivery apps. Uses the admin Map API Key. If this one is off, everything else works but every tracking screen in the apps shows a map error.
3. Places API
Address autocomplete — the website/admin map loader requests the places library, and the Customer app calls Place Autocomplete + Place Details directly.
4. Geocoding API
Address ⇄ coordinates ("use my location" reverse-geocoding in the website/admin pickers).
5. Maps SDK for Android
Native in-app maps: Customer app address/parcel pickers, Seller app store-location picker. Uses the build-time key in each app's AndroidManifest.
6. Maps SDK for iOS
Same native maps on iOS builds. Uses the build-time key in AppDelegate.swift.
⚠️
Most common mistake: enabling the JavaScript/SDK APIs but forgetting Maps Static API. Symptom: address pickers and website maps work fine, yet the tracking screens in the apps show “Map preview unavailable”. Google is rejecting the static-map image with “This API is not activated on your API project”.
🔔
Not a Maps API, but in the same console: the Firebase Cloud Messaging API (v1) must be enabled on your Firebase project for push notifications. It's normally enabled automatically when you create the Firebase project — check it only if pushes fail. See Push Notifications. Google social login needs an OAuth client, not an API toggle.

Where the key goes

Admin Website + Static map
Admin → Settings → Google APIGoogle Maps API Key. This key is also sent to the Customer app for its order-tracking map.
App Native map SDK
Set per app at build time (Android manifest / iOS). See Customer App → API URL & Maps.
🗺️
The native map inside the apps must use a key embedded at build time — Google verifies it against the app's package name + signing certificate, so it can't be served from the admin panel. The static tracking map and the website map both use the admin Map API Key.
Map API key setting
Admin → Settings → Google API → Google Maps API Key.

Restrict your keys (important)

Unrestricted keys can be abused and run up your bill. In Cloud Console → Credentials, restrict each key:

Website key
HTTP referrers → your domain(s).
Android key
Android apps → package name + SHA-1.
iOS key
iOS apps → bundle id.
💳
Google Maps requires a billing account. There's a generous monthly free tier, but add billing or maps will show an error watermark.

Troubleshooting

Tracking map errors in the apps
Almost always Maps Static API not enabled on the admin Map API Key's project. Enable it in APIs & Services → Library, and if the key uses API restrictions, add Maps Static API to its allowed list. Takes effect within minutes — no rebuild or redeploy needed.
Test a key yourself
Open https://maps.googleapis.com/maps/api/staticmap?size=200x200&markers=color:red%7C21.17,79.65&key=YOUR_KEY in a browser. A map image = key OK; a text error names the exact problem (API not activated, referrer blocked, billing).
Autocomplete returns nothing
Places API not enabled, or the key's API restrictions exclude it.
Map shows “For development purposes only” watermark
Billing not enabled on the Google Cloud project.
Works on the website, not in apps (native map)
The native in-app map uses the build-time key, not the admin one — check Maps SDK for Android/iOS is enabled and the key's package-name + SHA-1 / bundle-id restriction matches your build.
👉
Next: Analytics.