Connect Motive for telemetry and trip evidence
Motive is a carrier-owned ELD provider. You supply the credentials, Conterminal stores them encrypted per workspace, and from then on your drivers carry duty status, hours, timecards and trip evidence into Conterminal. The whole setup lives on one screen: Admin, then Integrations.
10 minute setup · Updated July 27, 2026
Tenant admin only, and one workspace at a time.
The Integrations screen is reachable only by a carrier workspace tenant admin. A manager or a user in the same workspace does not see the Integrations entry in the account menu and cannot open the URL directly. Credentials are scoped to the workspace that saved them, so a carrier running two Conterminal workspaces sets Motive up twice.
What the integration provides
Once Motive is enabled and an API key is saved, four things start happening on their own.
- A roster poll every 15 minutes
- Conterminal reads your Motive driver roster and scores each unlinked Motive driver against your Conterminal drivers. The results land in the driver-link queue on this same screen.
- Hours and duty status
- For every linked driver, the poll writes available HOS minutes and last duty status onto the Conterminal driver record.
- ELD timecards
- Motive driving periods for the trailing business-day window become Conterminal time entries: inserted, updated when they drift, and removed when they vanish from a complete fetch.
- Trip evidence receipts
- A Trip Evidence PDF can be generated against an operation job — delivery order, cartage job, or custom job — from the driver's Motive trip for that day.
Webhooks add a real-time layer on top of the poll: duty-status changes and vehicle locations arrive as they happen rather than waiting for the next 15-minute cycle. Webhooks cannot be switched on from the screen, though — see the last section before troubleshooting.
This has nothing to do with container tracking. LongShorty is the worker that signs into terminal, rail, and steamship-line systems to update your containers, and it is configured separately under tracking adapters. Motive only ever tells Conterminal about your trucks and drivers.
Prerequisite: platform provisioning
Motive is provisioned in two layers. Conterminal enables the provider for your workspace; you own the actual credential material. Until the first layer is done, nothing on the screen works. Open the account menu and select Integrations, or go directly to Carrier Integrations. The Motive card carries four status badges:
- Platform Enabled / Platform Disabled
- Whether Conterminal has provisioned the Motive provider for your workspace. This is the gate everything else sits behind.
- API Key Ready / API Key Missing
- Whether a Motive API key is stored. This is the credential that drives the roster poll, timecards, geofences, and receipt generation.
- Photos Enabled / Telemetry Only
- Whether a Motive web session token is stored. Photos on a trip receipt come from that session, not from the API key.
- Web Login Ready / Web Login Missing
- Whether both a Motive web user email and a web password are stored. Both are required — one without the other still reads Web Login Missing.
Underneath the badges, Current mode summarizes the same state in one line: Provisioning disabled, Credentials required, Telemetry-only trip receipts, or Trip receipts with photos.
If provisioning has not happened, an amber banner says: “Platform provisioning has not enabled Motive for this tenant yet. Ask a platform admin to enable Carrier Integrations from the company detail page or the carrier provisioning workspace.” That is a request to Conterminal, not something you can action yourself.
The screen also tells you “Platform access is disabled, so saved values will not become active until a platform admin enables the provider for this tenant.” Read that carefully — it implies you can save credentials now and have them switch on later. You cannot. Save Credentials, Test Credentials and Refresh Photo Session are all disabled while the provider is off, and the server rejects the attempt with “Platform access for Motive has not been enabled yet.” Get provisioning done first, then come back with your key.
Saving credentials
The Tenant Credentials block has eight fields. Everything is stored encrypted and nothing is ever displayed back to you — a field holding a saved value shows the placeholder Stored value preserved unless replaced. The rule printed above the fields is the one to remember: Leave a field blank to keep the currently stored value.
- Paste the Motive API Key. This is the only field that is genuinely required. It authenticates every Motive API call Conterminal makes — roster, hours, driving periods, geofences, and trips.
- Add the web login if you want photos. Fill Web User Email and Web Password with a Motive web account Conterminal may sign in as. Both are needed before Refresh Photo Session becomes usable.
- Or paste a session token directly. Web Session Token takes a Motive X-Web-User-Auth token, and Web Session Expires At takes an ISO timestamp in the shape 2026-04-10T18:00:00Z. This is the manual alternative to letting Conterminal log in for you.
- Select Save Credentials. On success the screen shows “Motive credentials updated.”, the badges re-evaluate, and every field is cleared. The cleared fields do not mean the values were lost — they mean the form has no reason to hold secrets any longer.
The three OAuth fields — OAuth Access Token, OAuth Refresh Token, and OAuth Expires At — are stored and encrypted, but no part of Conterminal currently authenticates with them. Every Motive request is made with the API key. There is not even a badge for the OAuth state. Leave them blank unless support asks for them specifically.
Because blank means “keep”, there is no way to erase a stored credential from this screen — pasting an empty value is indistinguishable from not touching the field. To retire a credential, replace it with a new one, or ask support to clear it.
Testing
Test Credentials makes a single live request to Motive for one driver record. It is fast, safe to repeat, and writes nothing. Read the sentence it returns carefully, because each one describes a different level of readiness:
- “API key is valid. A Motive web session token is already stored for photo retrieval.”
- Fully configured. Receipts can include breadcrumb photos.
- “API key is valid. Motive web login credentials are stored. Use Refresh Photo Session to bootstrap or renew photo access.”
- The key works and Conterminal can log in for you, but no session token exists yet. Run the refresh.
- “API key is valid. No Motive web session or web-login material is stored, so receipts will generate without photos.”
- Telemetry-only. Everything except photos works: roster, hours, timecards, geofences, receipts.
- “No Motive API key is configured for this tenant.”
- Nothing is stored yet. Paste the key and save before testing again.
A failed key reports the raw HTTP status, for example “Motive API key test failed with status 401.” A 401 or 403 means the key is wrong or revoked in Motive; a 5xx means Motive itself is having a problem and the key may well be fine. The test only exercises the API key — it never checks whether a stored web session token is still accepted by Motive.
Refreshing the photo session
Motive's breadcrumb photos are not exposed through the API key. They are read with a web session token — the same credential a person holds after signing in to Motive in a browser. Rather than making you extract that token by hand, Conterminal drives a headless browser sign-in against Motive's login page with the stored web email and password, and keeps the resulting token.
- Confirm Web Login Ready. Refresh Photo Session is disabled unless the provider is enabled and both a web user email and a web password are stored. A disabled button here is nearly always a missing password, not a broken integration.
- Select Refresh Photo Session. The button reads Refreshing while the sign-in runs. This is a real browser session against Motive, so it takes noticeably longer than the credential test.
- Answer the verification prompt if it appears. If Motive asks for multi-factor verification, a dialog headed Complete Motive Verification opens with the field One-Time Verification Code. Paste the current authenticator or SMS code and select Verify And Continue.
- Read the result. Success reports “Motive web session refreshed successfully.” and the Photos Enabled badge lights up.
The one-time code is submitted into the login session that is already open and is never stored. Conterminal pauses that same session while it waits for you, which is why Cancel Refresh exists in the dialog — cancelling closes the browser session cleanly instead of leaving it hanging.
If Motive rejects the login outright you get its own visible error text, or “Motive rejected the supplied web login credentials.” if nothing readable was shown. A wrong or expired code returns “Motive did not accept the one-time code. Try the current code again.” and leaves the dialog open so you can enter the next code without restarting.
The Photos Enabled badge does not mean the session still works.
That badge only reports that some token is stored. It does not check the expiry, and it cannot know that Motive has invalidated the session at its end. Worse, a token saved with Web Session Expires At left blank is treated as valid indefinitely. If receipts suddenly come out without photos while the badge still reads Photos Enabled, run Refresh Photo Session rather than assuming the session is fine.
Linking terminals to geofences
The Friendly Terminal Geofence Linking block ties Conterminal's terminals to the geofences you already maintain in Motive. Receipt correlation uses those links to replace terminal dwell that would otherwise have to be inferred from split Motive trips.
- Save an API key first. Without one, an amber banner reads “Save a Motive API key above before loading geofences for terminal linking.” and Load Motive Geofences stays disabled.
- Select Load Motive Geofences. Conterminal pages through your Motive geofences and reports how many it found, for example “Loaded 42 Motive geofences.” An empty account returns “No Motive geofences were returned for this tenant.”
- Pick a Friendly Terminal. The dropdown lists Conterminal's canonical terminals. Underneath, the screen shows which underlying terminal backs it, its address, and how many terminal rows roll up into it.
- Pick a Motive Geofence and save. The geofence dropdown stays disabled until you have loaded the list — it reads Load Motive geofences first until then. The button reads Save Link for a new mapping and Replace Link when the terminal is already mapped. Success confirms “Friendly terminal geofence mapping saved.”
You map each terminal family once, not each row. In Conterminal's own words: “Child terminal rows such as 88 OOCL roll up to the same friendly terminal, so you only need to map each terminal family once.” Everything already mapped appears under Current Friendly Terminal Links with its geofence name and ID, and a Clear Link button that reports “Friendly terminal geofence mapping cleared.”
One geofence maps to exactly one friendly terminal per workspace. If you try to reuse it you get “This Motive geofence is already linked to another friendly terminal for this tenant.” Clear the existing link first. Likewise, a geofence that was deleted in Motive since you loaded the list is refused at save time with “The selected Motive geofence is no longer available to this tenant.” — reload the geofences and try again.
The driver-link queue
Telemetry only reaches a driver record once that driver is linked to a Motive ID. The Motive Driver Linking panel is where you do the linking. It is fed by the 15-minute poll, which scores each unlinked Motive roster driver against your Conterminal drivers on email, phone, and name.
Each row shows the Motive display name, a confidence chip, the Motive ID, and whatever email, phone, and status Motive returned. Confidence is a plain threshold on that score:
- high
- An exact email match on its own clears the bar, as does a name match backed by a matching phone number or by several shared name tokens. These are the rows Accept All acts on.
- medium
- Real but partial evidence — an exact name match with nothing corroborating it, or a matching phone number alone. Read the row before accepting.
- low
- Only fragments overlap, typically one shared name token. Treat the suggestion as a hint, not an answer.
- none
- Nothing matched at all, so no driver is suggested. Pick one yourself, create a new driver, or dismiss the row.
- Accept a suggested match. When the poll found a candidate, the row reads Suggested: followed by the Conterminal driver name. Select Accept to link them.
- Choose your own. With no suggestion, the row shows a Choose a driver dropdown listing your active, not-yet-linked drivers. Pick one, then Accept.
- Create the driver. If the Motive driver has no Conterminal counterpart, select Create New. The inline form takes Driver Name — prefilled from Motive — and Employment Type, then Create Driver creates the driver and links it in one step.
- Dismiss what does not belong. Dismiss hides a row for good; the poll will not re-surface it.
- Clear the easy ones in bulk. Accept All High-Confidence carries a count in its label and links every high-confidence row that still has a valid target. It reports back, for example, “Linked 7 drivers (2 skipped).”
Skipped rows in a bulk accept are not failures. Conterminal skips a row whose target driver was linked to something else in the meantime, whose Motive ID is already held by another driver, or that would double-link one driver in the same pass — it links what it safely can and leaves the rest for you.
An empty queue is normal and says so: “No unlinked Motive drivers — the roster poll will surface new ones here.” Every accepted link is written to the driver's change history, so the driver record shows when and by whom it was linked.
Stale Motive Links
A second panel appears only when there is something to report. It lists drivers whose linked Motive ID has dropped off the live roster — deactivated or removed in Motive — with a Needs Recheck chip and the date it went stale. Conterminal never auto-unlinks. Re-check the driver in Motive, and unlink from the driver page if the link is genuinely dead.
Telemetry-only vs photos
Trip evidence works at two levels, and it is worth being clear about which one you are running before you promise a customer photos.
- Telemetry-only
- Needs the API key alone. The Trip Evidence PDF publishes the matched Motive trip and its timing. This is the default and it is not a degraded mode — it is the evidence most disputes actually turn on.
- With photos
- Needs a working web session on top of the API key, and needs the matched trip to carry a vehicle. Breadcrumb photos captured around the trip's phase anchors are embedded in the PDF.
Receipts are generated from the trip evidence panel on the job, not from this screen — see cartage and custom jobs for that workflow. Photo outcome is recorded per receipt, and a receipt generated with none is explicitly marked as published without photos rather than being silently downgraded.
When the photo fetch is refused because the stored web session is no longer accepted, the receipt still generates — telemetry-only, with the photo state recorded as unavailable. Nothing on the integrations screen turns red when that happens. A run of photo-less receipts is your signal to re-run Refresh Photo Session.
Receiving Motive webhooks
There is no self-serve webhook URL.
Nothing on the Integrations screen shows, generates, or lets you copy a webhook address. Both halves of the configuration — the opaque per-workspace route key in the URL and the shared signing secret — are set by Conterminal for you. If you want webhooks, email support and ask; you cannot turn them on yourself.
The receiver lives at a per-workspace address of the form /api/webhooks/motive/v2/<key>. That key is an unguessable token that identifies your workspace; it is never derived from your organization ID, and support will give you the finished URL to paste into Motive. Every delivery is signed with HMAC-SHA1 over the raw body in the X-KT-Webhook-Signature header, and Conterminal verifies that signature before storing anything.
Once it is live, three event types matter:
- Duty status updates
- Written straight to the linked driver's last duty status, ahead of the next poll cycle.
- Vehicle location updates
- Written to the driver's last known coordinates, address, and vehicle, with the sync timestamp.
- User created or updated
- Never creates or relinks a driver. A new Motive roster driver reaches you through the driver-link queue on the next poll, where you decide.
Events for a Motive driver you have not linked are kept in raw form but change nothing, so a webhook that appears to do nothing usually means the driver-link queue still has work in it. Redeliveries are deduplicated, and Motive retries a delivery Conterminal could not store, so a brief outage does not lose events.
Motive checks that a destination responds before it will activate a webhook, and that check arrives unsigned. Conterminal answers it successfully on purpose — otherwise the webhook could never be activated. The probe reads nothing, writes nothing, and reveals nothing about whether the key in the URL is real. A signed request that fails verification is rejected outright.
Troubleshooting
“Platform provisioning has not enabled Motive for this tenant yet.”
Conterminal has not provisioned the provider for your workspace. Every button on the card is disabled until it does, including Save Credentials — the note about saved values becoming active later is misleading. Email support to get the provider enabled, then save your key.
“Platform access for Motive has not been enabled yet.”
The same condition, returned by the server rather than shown as a banner. It means a save, test, or photo-session refresh was attempted while the provider was still off. Nothing was stored.
I do not see Integrations in the menu at all
The screen is limited to tenant admins in a carrier workspace. A manager or user in the same workspace has no entry and no access to the URL. Ask an admin in your workspace to do the setup, or see the article on why a page is not visible to you.
Refresh Photo Session is greyed out
It requires the provider to be enabled and both a Web User Email and a Web Password to be stored. A password saved without an email — or the other way round — still reads Web Login Missing and still leaves the button disabled. Save both, then reload the page.
“Motive rejected the supplied web login credentials.”
The stored web email and password did not sign in. Confirm them by signing in to Motive yourself in a browser. If Motive has locked the account or forced a password reset, fix that first, then save the new password here and refresh again.
“Motive did not accept the one-time code. Try the current code again.”
The code was wrong or had already rolled over. The dialog stays open — wait for the next code and submit it. If codes keep failing, cancel the refresh and start it again so the login session is fresh.
“The Motive photo-session bootstrap expired. Start Refresh Photo Session again.”
The paused login session timed out while it waited for your verification code. Nothing was saved and nothing was broken. Select Refresh Photo Session again and have the code ready.
“This Motive geofence is already linked to another friendly terminal for this tenant.”
One geofence can back only one friendly terminal per workspace. Find the terminal that currently holds it under Current Friendly Terminal Links, select Clear Link, then save the new mapping.
“The selected Motive geofence is no longer available to this tenant.”
The geofence list you are looking at is stale — the geofence was renamed or deleted in Motive after you loaded it. Select Load Motive Geofences again and pick from the refreshed list.
“Save a Motive API key above before loading geofences for terminal linking.”
Geofences are read with the API key, so the key has to be saved first. Save it, confirm the badge reads API Key Ready, then load the geofences.
“Motive API key test failed with status 401.”
The key is wrong, revoked, or belongs to a different Motive account. Reissue it in Motive and paste the new value. A 5xx status in the same message points at Motive, not at your key — retry in a few minutes.
“<driver> is already linked to Motive driver <id>.”
Another driver in your workspace already holds that Motive ID. Unlink it from that driver's page first, or accept the suggestion against the driver that already holds it. A Motive ID belongs to exactly one Conterminal driver.
“This suggestion has already been resolved.”
Somebody else accepted or dismissed the row while your page was open, or you double-submitted. Reload the page to get the current queue.
“A driver with that name already exists. Rename before creating from this suggestion.”
Create New refuses to add a second driver under an existing name. Either accept the suggestion against the driver you already have, or change the name in the form before creating.
Receipts keep generating without photos
Check three things in order: that the Photos Enabled badge is on, that Refresh Photo Session still succeeds, and that the trip you selected has a vehicle. A stored session token that Motive no longer accepts leaves the badge on and produces telemetry-only receipts silently.
A linked driver stopped updating
Look for the driver in Stale Motive Links. If it is listed, the Motive ID has dropped off the live roster — deactivated or removed in Motive. Conterminal never auto-unlinks; re-check the driver in Motive and unlink from the driver page if the link is dead.