All articles

How-to guides

How to connect your other tools

Who this is for: owners and admins.

Everything on this page lives at Settings → Integrations. Nothing here is switched on for you, and nothing you connect is visible to any other company on the platform — credentials are stored against your company alone and encrypted.

There are four tabs, and they have four different audiences. Read the one you need.


Connections — your ELD and your TMS

Connect an ELD (Motive or Samsara)

This is the one worth doing first. It pulls hours of service straight from the truck, so the hours on a driver's card are the real ones rather than the last ones somebody typed in.

  1. Settings → Integrations → Connections, find your provider, click Connect.
  2. Paste the API token from your provider's own admin:
    • Motive: web admin → Admin → API. The token needs read access to Users and HOS.
    • Samsara: dashboard → Settings → API Tokens. It needs the Read Drivers and Read HOS scopes. A token missing a scope connects and then returns nothing, and the page will tell you so.
  3. Click Save and connect, then Check connection. You should see a count of the drivers your provider can see.

Then map each driver: Drivers → open a driver → ELD driver ID. The dropdown is populated from your provider. Until a driver is mapped, their hours stay manual.

If hours stop updating

Look at the provider's row on the Connections tab. A credential that has stopped working shows the reason there, in the provider's own words — almost always a token that was regenerated or revoked on their side. Reconnect with a fresh token and the hours resume.

Connect a TMS

If you already keep your book of record in another system, connecting it means a booked load only gets keyed once.

Two things to know before you start:

  • A TMS connection is switched on per customer. If your provider shows as unavailable, that is why — contact support rather than assuming it is broken.
  • We stop being the source of truth once a load is dispatched. Up to that point the load is ours; after that yours is the copy that counts. We keep sending status forward as your driver reports in, and we never reach back to overwrite something you changed on your side.

Once connected, push a load with Loads → open a load → Push to TMS, and use Dry run the first time. It shows you exactly what we would send without sending it. Field names differ between accounts, and it is much easier to spot a rate landing in the wrong box before real freight goes through it than after.

After the first push, the load is linked. Pushing again updates the same order rather than creating a second one.


Loads in and out — spreadsheets

A spreadsheet is a real integration, and this is the tab most people actually need.

Export

Export loads (CSV) gives you every load with its broker, lane, dates, miles and rate — the file to hand a bookkeeper or an accountant.

Import

Bringing loads over from whatever you used before:

  1. Click Download blank template if you want to see the exact columns. You usually will not need it — the importer already recognises the column names other systems use, like Customer, Origin City, PU Date, Linehaul and Total Miles.
  2. Choose your file.
  3. Fill in Where is this file from? — anything you like, but keep it the same for repeat imports of the same source. This is how we recognise a load we have already seen.
  4. Click Check the file first. Nothing is written. You get told exactly what would happen, row by row.
  5. Fix anything flagged, then Import for real.

Reading the check report

  • Columns we ignored is the first thing to look at. If something you need is in that list, rename that column to one from the template.
  • A row that could not be read names the cell and the reason. The usual culprit is a date we cannot interpret — "ASAP" or "call me" in a date column fails the row rather than being quietly dropped, so you can fix it.
  • A warning means the row imported but something was tidied. "Florida" instead of "FL" comes in as-is and is flagged.

Two things the importer will not do

  • It will not assign drivers or trucks. Those columns come out in an export for reference and are ignored on the way in. Assigning a driver texts them and starts their pay accruing; a spreadsheet paste should not do that.
  • It will not guess a status it does not recognise. Your old system's status names probably differ from ours, and putting a load in the wrong bucket on the board is worse than telling you the cell needs changing.

Avoiding duplicates

Give each row an external_ref — your old system's ID for that load. With one, re-importing the same file updates the same loads. Without one, we have nothing to match on and every re-import creates a fresh copy. The check report warns you about rows in that position before you commit.


API keys — letting another system in

For a developer, or a tool you use, that needs to read or write your freight here.

  1. New key, and name it after the system that will hold it — not after yourself. When something needs revoking in a hurry, the list has to say what breaks.
  2. Tick only what it needs. Reading loads and writing loads are separate.
  3. Copy the key immediately. It is stored only as a fingerprint and cannot be shown again. Lose it and you revoke it and make another.

Give each system its own key. Then revoking one does not break the others.

An expiry is optional and we do not force one — a key that stops working unannounced breaks an integration at an awkward hour. If you set one, set a date you will remember.

Keys reach loads, load offers, documents and invoices. They cannot reach your settings, your team, your billing, or your other keys — and they cannot assign a driver, because that is a decision about somebody's day.


Webhooks — telling another system what happened

Instead of another system asking us every few minutes whether anything changed, we tell it. Useful for a tracking dashboard, an accounting sync, or a partner who wants your load offers in their own tool.

  1. Add endpoint, paste the https URL your developer gives you.
  2. Tick the events that matter. New load opportunity came in is the one most integrations want — that is a load offer off a phone call or an email, before anyone has looked at it.
  3. Copy the signing secret. Your developer needs it to confirm a delivery really came from us, and like an API key it is shown once.
  4. Click Send test and check the result. It reports exactly what your server answered.

Reading the delivery list

Every attempt is listed with what your server said back.

  • DELIVERED — accepted.
  • FAILING — the attempt failed and we will try again. Retries back off: 30 seconds, then 2 minutes, then 8, then 32, then a couple of hours.
  • DEAD — we have stopped. Either we ran out of attempts, or your server refused the request outright. A refusal is not retried, because the same request will be refused the same way in two hours.

Use Retry on a dead delivery once the other end is fixed.

If an endpoint switches itself off

After twenty failures in a row we disable it and put a notice in your bell. That is deliberate: an endpoint nobody is listening on any more would otherwise queue up retries forever. Fix the receiver, then Turn on — the failure count resets, so it gets a clean run.


What to send support

If a connection will not work after you have re-checked the credential, send:

  • the provider name and which tab you were on,
  • the exact message shown on the row,
  • for an import, the check report and the file's header row (not the whole file),
  • for a webhook, the delivery ID from the list.

Do not send us an API token or a signing secret. We never need one, and anything you paste into a support thread should be assumed to need rotating afterwards.

Still stuck?

Email support@dynamanic.io with your company name, what you did, what happened — quoting any message on screen — and when, with your timezone.