Choose a provider
The provider applies to every Map element in every flow for this app. It sits next to the keys
because it selects between them: picking a provider you have no key for is the one mistake that
produces a placeholder on every device with nothing to explain it, so the settings page warns you
inline when the two disagree.
Both keys are yours. Maps are fetched directly by the device and by the flow editor’s preview,
so usage bills to your own Mapbox or Google account. There is deliberately no shared AppDNA key:
Mapbox’s Product Terms forbid us serving their imagery on another account’s behalf, and Google
bills map requests to whoever owns the key.
Mapbox public token
Create one under Account → Tokens at mapbox.com, then paste it into the Mapbox field. It must be a public token — it starts withpk.. It travels inside every map image URL, so it
is public by design; restrict it by URL in the Mapbox dashboard rather than trying to keep it
secret. A secret sk. token is rejected by the image API and must never be shipped to devices.
Google Maps API key
In the Google Cloud console, create an API key and enable the APIs you need:
Paste the key (it starts with
AIza) into the Google Maps field.
The API restrictions dropdown only lists APIs that are already enabled in the project. If it
looks empty, enable the ones above in the Library first, then come back to the key — the list
refreshes. Key changes can take a few minutes to take effect, so an immediate
403 is not
necessarily a mistake.Google Places key — a different key
The Google Places API key on the same page is not the same credential and is entirely optional. It powers place search when you add stops to a map in the editor. It is used only by the console, never shipped to devices, and stored encrypted — so it is never displayed again after you save it. Without it you can still enter coordinates by hand.Pan & zoom
Turning on Pan & zoom for a Map element gives the user a real, draggable map instead of a still image. It needs the Google provider, and on Android it also needs one line in your app’s manifest, because the Maps SDK for Android reads its key at build time:When a map shows “Map unavailable”
That placeholder is the deliberate, labelled fallback: a map with no key degrades to a caption, never to a blank box. It appears when:
The flow editor’s preview uses the same keys and the same provider as the device, so whatever you
see on the canvas is what your users will see.

