Nothing reaches a carrier until your rules post it.
You choose the filter
Filter loads in the integration layer before they reach Cargado, or filter them in Cargado.
Synced is not posted
A synced load stays private until your posting rules or your reps put it on the board.
Deleted on request
Anything never posted or shared is deleted when you ask.
Access
One API-only user. Never admin.
No UI seat and no admin rights, in sandbox or production.
Scoped to the objects the integration needs, so you can audit everything it does.
What we write
New records. Never edits.
Bids come back as carrier quotes. Live on McLeod, Tai, Turvo and Revenova.
Prefer to start read-only? Turn on write-back later.
Who runs it
Cargado builds, hosts and runs it
Queues and flow control
Dead-letter queues
Change data capture
Backfills
Vaulted secrets
Retries with back-off
Health view you can check
From kickoff to live
Included with your Cargado subscription.
1Kickoff
A 30-minute call on your TMS, lanes and how reps post today.
Ops + IT
2IT grants access
Takes minutes. On Revenova, under 30 minutes for your Salesforce admin.
IT, once
3Ops maps and approves
Statuses, trailer types, coverage owners and posting rules, tested in a sandbox. About a week, depending on how fast your team answers.
Ops
4Go live
Start with your Mexico or Canada lanes. Add more later.
Ops turns it on
On the public API? Your engineers build your side against our sandbox and docs.
Deep dive · Field mapping and API
Mapped once at setup. Your TMS stays the source of truth.
McLeod integration
Built, hosted and run by CargadoBids write back as new recordsYou call the API. We give you a sandbox.
01What syncs, in each direction
Into Cargado, from McLeod
Carriers and their status with you: active, needs review or do not use, and whether they are onboarded.
Loads and every status change.
Load details that make a posting bookable: stops, appointment windows, equipment, crossing and reference numbers.
Target rate and max buy, which your posting rules can use.
Who covers each load, so postings are assigned to the right rep or team.
Back to McLeod
Back to your system
Bids and the carrier behind each one, as new records.
Nothing edited. Your existing records stay as they are.
Bid events by webhook: submitted, accepted, rejected, revoked, closed, countered, and the counter outcomes.
Your offer ID on each bid, stored with POST /bids/update.
Market rates: a Low, Mid and High band (25th, 50th and 75th percentile) with a confidence label.
02Field mapping
Every connection fills the same Cargado load model. We map your McLeod fields to it during setup.
Field names from the load sync API. Money is in the smallest currency unit, so $4,125.00 is 412500.
On your load
Cargado field
Notes
Synced to Cargado
Origin and destination
stops[]
PICKUP first, DELIVERY last, with each stop’s time zone. Up to 64 stops.
Border crossing
borderCrossings[]
For example LAREDO_INTL_BRIDGE. If your TMS has none, the matching lane fills it in.
Equipment
trailerRequirements
For example DRY_VAN_53 or REEFER.
Pickup and delivery windows
stops[].appointment
A window, an exact time, first come first served, or to be set.
Reference numbers
referenceNumbers[]
PO #, BOL # or PRO #, on the load and on each stop.
Rate
targetRate, maxBuy
Guides your team and can drive posting rules.
Load and customer IDs
externalId, externalCustomerId
Never shown outside your organization.
Status
status
ON_HOLDAVAILABLEASSIGNEDBOOKEDCANCELLEDCOMPLETED
Back from Cargado
Bid amount
bid.rateDetails
A total plus line items: all-in, or the Mexico leg, crossing fee and U.S. leg.
Carrier
carrier
Name, DOT, MC, RFC, CVOR, NIR, NSC, SCAC, contact, and your TMS’s carrier ID.
Bid status
bid.status
ACCEPTED, REJECTED, COUNTERED and others.
McLeod: equipment types, status codes and deduct codes are matched once, during setup. Charge codes such as DET carry over on the carrier’s price.
Turvo: each charge line keeps its Turvo line item ID, so prices reconcile line by line.
03Which loads sync and post
Pick your scope: sync everything and filter in Cargado, drop non-cross-border loads in the integration layer, or send only cross-border loads yourself.
Border commercial zones such as Laredo, El Paso and San Diego are geofenced.
An optional “Post to Cargado” field gives load-by-load control.
Nothing posts by default. A load posts when it is available and matches a rule your team sets.
Fields set by your TMS show as “Set in TMS” in Cargado, so an edit in the app can’t overwrite them.
04Carrier status and takedown
DO_NOT_DISPATCHNever sees your freight and can’t be assigned to it.
NEEDS_REVIEWReviewed by your team before being assigned.
ACTIVECan be assigned the moment a load posts.
NEEDS_TO_ONBOARDGets an onboarding link on its first match.
The posting comes down when you accept a bid on Cargado, the load is assigned, booked or canceled in your TMS, or it is no longer eligible (for example LTL).
Running your own TMS?
05Access, sandbox and endpoints
Production
https://api.cargado.com
Sandbox
https://api.sandbox.cargado.com, with a broker and a carrier test organization. No real freight posts.
Authentication
An Api-Key header, one key for production and one for the sandbox.
Webhooks
Signed to the Standard Webhooks spec. After a secret rotation, the old secret works for 24 hours.
POST /loads/sync
Create or update a load and its status.
POST /carrier-relationships/upsert
Carrier statuses from your TMS, including do not use.
POST /rates/history
Market Rates for up to 64 lanes per request. Metered.
POST /bids/update
Store your TMS offer ID on a bid.
POST /webhooks/endpoint/register
Register an endpoint for bid events.
06API samples
POST/loads/syncCreates the load, or updates it if the externalId exists
{
"load": {
"id": "load_6e4cf1d1-b776-4401-a326-e43df6107e17",
"externalId": "TMS232423",
"externalCustomerId": "CUST-1042",
"status": "AVAILABLE",
"trailerRequirements": { "allowedTypes": ["DRY_VAN_53"] },
"stops": [ /* pickup, delivery */ ]
}
}
// Synced loads do not post on their own.
// A load posts when it matches a posting
// rule you set in Cargado.
//
// Takedown: send status BOOKED or
// CANCELLED, or set assignedCarrier.
// Sending assignedCarrier: null cancels
// the booking in Cargado.
Field names and enums from the Cargado OpenAPI 3.1 spec (Sync a load). The request is an example we assembled from that schema; the docs do not publish one.
Copied from the Look up the rate for freight guide (values from its 2025 example). Confidence is STRONG, MEDIUM or LOWER. Leave out the crossing and Cargado picks the recommended one.
POST/carrier-relationships/upsertDo-not-use carriers never see your freight
// Returns the relationships in the same
// order and length as the input.
// If a carrier is not found, its
// relationship comes back as null.
//
// status: ACTIVE | NEEDS_REVIEW
// | DO_NOT_DISPATCH
// onboardingStatus: ONBOARDED
// | NEEDS_TO_ONBOARD
//
// Optional: carrierExternalId, your ID
// for the carrier in your TMS.
// Verify the signature against the RAW
// body before parsing. Reject timestamps
// outside a few minutes.
//
// Dedupe on eventId: a retry can deliver
// the same event twice.
//
// Other types: bid.submitted, bid.rejected,
// bid.revoked, bid.closed, bid.countered,
// bid.counter_accepted,
// bid.counter_revoked,
// bid.counter_rejected
Shape from the Bid events reference and the Webhooks guide. Values are placeholders; the docs do not publish a full example.