{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Integration Options & Prerequisites","siteUrl":"https://docs.bettermile.com","jsonLd":{"@context":"https://schema.org","@type":"Organization","name":"Bettermile","url":"https://bettermile.com","logo":"https://docs.bettermile.com/images/logo.png"},"description":"Compare Better Route's two integration paths, the Bettermile Driver App and Deep Integration, plus the shared prerequisites for both."},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"integration-options--prerequisites","__idx":0},"children":["Integration Options & Prerequisites"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Better Route is modular. You can onboard quickly using the Bettermile Driver App, or integrate only the components you need to power your own driver application."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-one-shared-prerequisite-a-data-gateway-connector","__idx":1},"children":["The one shared prerequisite: a Data Gateway connector"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every integration needs a working connector into the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/overview/data-gateway"},"children":["Data Gateway"]},": it delivers your job data (master data, assignments, status changes) from your systems into Bettermile for optimisation. Even the lightest integration needs one before there are any jobs to sequence."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you start building:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Read ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/overview/data-gateway/resources/connector-design"},"children":["Connector Design"]}," to understand when your system should send master data, assignments, and status changes."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Read ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/overview/data-gateway/resources/data-delivery-format"},"children":["Data & Delivery Format"]}," for the JSON schema your connector needs to produce."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Decide between a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["simple setup"]}," (minimal data, sent shortly before the driver needs it, a good fit for a pilot) and a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["full dynamic setup"]}," (pre-advice, assignment, and status data sent in three phases, required for high parcel volumes and full feature support). Both are explained in Connector Design."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before going live, your connector is validated through automatic JSON schema checks plus a manual review, done jointly by your team and Bettermile."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"choosing-your-integration-path","__idx":2},"children":["Choosing your integration path"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Two approaches, each with an optional extension. Pick by how much of the driver experience you want to build yourself."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":""},"children":[]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Bettermile Driver App"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bettermile Driver App"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Deep Integration"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Deep Integration"]}]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["What it is"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Our app handles the driver experience."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You build the driver experience on the Better Route API."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["You build"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The connector, plus device setup."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The connector, plus backend, sequence logic, and driver UI."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bettermile handles"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tour setup, optimisation, navigation, job status."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optimisation."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Extend it with"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your own scanner or loading app on the same device (App-to-App Library, plus webhooks)."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Bettermile navigation and address formatting (Navigation SDK, plus Address Formatter Kotlin)."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Effort"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Hours, excluding the connector."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Weeks."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/integrationoptions.cbd0b399d121cd27bf2a8305d4a79b19460f3dc6c170094fcb8638f8e3af8aa7.1b3d29c4.svg","alt":"Better Route integration options"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authentication"]}," depends on the path: the Driver App uses provisioned driver accounts; Deep Integration uses a Better Route API key (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-api-key"]},"). Each path's own page covers the details."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"path-specific-prerequisites","__idx":3},"children":["Path-specific prerequisites"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each path adds requirements on top of the connector above."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"bettermile-driver-app","__idx":4},"children":["Bettermile Driver App"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Connector (see above)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A device to run the app: Bettermile-managed hardware, your own managed Android device, or an unmanaged device in Personal-Device mode. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/resources/bettermile-driver-app-index#choosing-a-deployment-mode"},"children":["Choosing a deployment mode"]}," for the Managed Device vs. Personal-Device distinction."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A driver account, so the app can log in and pull the assigned tour."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Tenant provisioning is not self-serve: Bettermile sets up your tenant, and grants your depot personnel access to their respective depot via Backoffice. From there, driver account creation is self-serve: depot personnel create the individual driver accounts used to log in to the Bettermile Driver App."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Extending to a shared device with your own scanner or loading app additionally needs the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/resources/app-to-app-library"},"children":["App-to-App Library (ScanLib)"]}," integrated into your app, and a webhook endpoint on your side to stay in sync with the driver's current stop order. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/resources/webhooks"},"children":["Webhooks"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/resources/bettermile-driver-app-index#enhancing-the-single-device-setup"},"children":["Enhancing the single-device setup"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/resources/bettermile-driver-app-index"},"children":["Driver App"]}," page for full setup details."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"deep-integration","__idx":5},"children":["Deep Integration"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Connector (see above)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Access credentials for the Better Route API, currently an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-api-key"]}," sent as a request header (see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/apis/ntc/tour-commander-api"},"children":["Better Route API"]}," reference). This is a separate credential from your Data Gateway connector credentials, issued independently."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Backend capacity to create tours, request sequences, and keep your driver-facing application in sync with the returned data."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Extending with in-house navigation and multi-country address handling additionally needs the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/sdks/navigation-sdk"},"children":["Navigation SDK"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/resources/address-formatter-kotlin"},"children":["Address Formatter Kotlin"]}," embedded in your custom Android driver app."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/resources/deep-integration-index"},"children":["Deep Integration"]}," page for the basic data flow and how to create your first tour and sequence."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"onboarding-checklist","__idx":6},"children":["Onboarding checklist"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm your integration path using ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#choosing-your-integration-path"},"children":["Choosing your integration path"]}," above."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Build and validate your Data Gateway connector. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/overview/data-gateway/resources/connector-design"},"children":["Connector Design"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Complete the path-specific setup from the section above.",{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bettermile Driver App"]},": install the app on your chosen device and confirm a driver can log in and receive a sequence."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Deep Integration"]},": create a test tour via the Better Route API and confirm a sequence is returned."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Talk to your Bettermile key account team about go-live timing and, for Deep Integration, moving from the dev environment to production."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":7},"children":["Next steps"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/overview/data-gateway"},"children":["Data Gateway"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/resources/bettermile-driver-app-index"},"children":["Driver App"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/route/resources/deep-integration-index"},"children":["Deep Integration"]}]}]}]},"headings":[{"value":"Integration Options & Prerequisites","id":"integration-options--prerequisites","depth":1},{"value":"The one shared prerequisite: a Data Gateway connector","id":"the-one-shared-prerequisite-a-data-gateway-connector","depth":2},{"value":"Choosing your integration path","id":"choosing-your-integration-path","depth":2},{"value":"Path-specific prerequisites","id":"path-specific-prerequisites","depth":2},{"value":"Bettermile Driver App","id":"bettermile-driver-app","depth":3},{"value":"Deep Integration","id":"deep-integration","depth":3},{"value":"Onboarding checklist","id":"onboarding-checklist","depth":2},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"title":"Integration Options & Prerequisites","rbac":{"anonymous":"read","authenticated":"read"},"seo":{"description":"Compare Better Route's two integration paths, the Bettermile Driver App and Deep Integration, plus the shared prerequisites for both.","title":"Integration Options & Prerequisites"}},"lastModified":"2026-09-09T10:54:18.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/route/resources/route-integration-options","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}