DAT – Convoy Marketplace Integration
The DAT – Convoy Marketplace integration helps you source carrier capacity when you're out of your own — posting loads directly to the Convoy marketplace and syncing the resulting carrier, tracking, documents, and billing back into Tai automatically.
Before You Start
Make sure you have:
- An active DAT – Convoy Marketplace account (or be ready to create one during setup).
- The DAT – Convoy Marketplace integration created/enabled in Tai.
- A valid
STAFFIDIntegration Source Parameter set to an active staff member with the right organization access (see Notification Contacts below). This is required — without it, inbound loads, tracking, and billing can't be assigned to your shipments.- The parameter name must be fully capitalized:
STAFFID. A mismatch likeStaffIdis silently ignored and causes "user does not have access" errors.
- The parameter name must be fully capitalized:
When you create an integration with DAT – Convoy Marketplace, you'll be redirected to the Convoy login / signup portal.
- If you already have a Convoy account, log in.
- If you don't, complete the Signup. At the end of signup, take the Onboarding Code and enter it in the Code section within Convoy. This links your TMS to the Convoy platform.
You can tell Convoy which staff member to contact for specific purposes by adding parameters to the integration's Integration Source Parameters. Each parameter's Value must be a valid, active StaffId.
| Parameter Name | Purpose |
|---|---|
STAFFID |
Required. The staff the integration acts as in Tai — used to assign inbound loads, carrier info, tracking, documents, and billing. Must have organization access to the relevant shipments. |
MATCHING |
Contact for load matching. |
LOAD_EXCEPTION |
Contact for load exceptions. |
DOCUMENT_REVIEW |
Contact for document review. |
INVOICING |
Contact for invoicing. |
ACCOUNTNAME |
Payment Account |
⚠️ Important — names are case-sensitive
Enter each parameter name exactly as shown above — all uppercase, with underscores (STAFFID, LOAD_EXCEPTION, DOCUMENT_REVIEW). A casing mismatch (e.g., StaffId) is silently ignored. For STAFFID specifically, this means the integration can't determine who it's acting as, and loads, tracking, and billing will fail to assign with a "user does not have access" error. The Value for each must be a valid StaffId.
Once connected, you can post loads to Convoy from the Truckload Quoting page.
A few requirements must be met for a posting to succeed:
- Pickup Ready Date/Time and Close Date/Time must exist.
- Delivery estimated Ready Date/Time and Close Date/Time must exist.
- Offer Rate and Max Buy Rate must be added.
- Equipment type must fall under one of these four categories:
- Van Dry– 53'
- Reefer – 53' (Min/Max temperature required)
- Flatbed – 48'
- Step Deck – 48'
Any other configuration will not post. If something is missing or invalid, you'll see red text on the page indicating the problem.
⚠️ Troubleshooting — load won't post / red text on the quote page
Confirm that both pickup and delivery have a Ready and Close Date/Time, and that the equipment type is one of the four supported above. For Reefer, make sure Min/Max temperature is set.
- Success: a shipment alert named "Convoy" is added.
- Failure: a Load Exception shipment alert is added.
In either case, open the Activity Log to see exactly what was missing or required after a posting attempt.
⚠️ Troubleshooting — Load Exception alert after posting
Open the shipment's Activity Log — it records the specific reason the post was rejected (e.g., invalid address, lead time, missing weight, rates). Fix the flagged item and repost.
As soon as a carrier is assigned to the load, Convoy pushes the carrier information to Tai and assigns it to the specific shipment:
- Driver information loads in as the Driver Contact Name and Driver Cell Phone Number.
- If a trailer number is provided, it's added as well.
- Buy Price + Convoy Tech Fee is set as your Total Buy on the shipment. You can adjust the Sell as needed.
New carriers
If the carrier is new to you, Tai generates a Carrier Profile marked "Imported from Convoy," and attaches:
- the Broker–Carrier Agreement, and
- the Insurance document from Convoy.
You can still run the carrier through your own Carrier Onboarding to collect packets yourself.
Canceling or Reassigning a Carrier- To cancel the load with the carrier, remove the carrier — this cancels the load on Convoy's side. If you'd like Convoy to rebook a new carrier, you'll need to repost.
- You can also manually reassign a different carrier, which also cancels the load with Convoy.
If you're happy with the assigned carrier and they're en route to pickup, you'll receive updates in Tai:
- Location updates on the shipment.
- When the carrier picks up, Actual Arrival Date/Times populate on the pickup location.
- GPS updates appear in Location History.
You can continue to use your own tracking in parallel if you prefer.
DeliveryOnce the shipment is delivered, the POD Date is set and the shipment moves into Delivered status.
DocumentsDocument Approval in the Convoy app attaches the documents to the load once they're approved on Convoy's side.
Billing & Payments- After Convoy invoices the load, Tai auto-approves a Bill for Convoy based on the charges provided.
- If you prefer to manually approve the Bill, payment will still apply correctly as long as the Bill Number matches the Bill Number on Convoy's end.
- Payments from Convoy are automatically uploaded to the approved Bill.
⚠️ Troubleshooting — Convoy payment didn't apply to the Bill
This almost always means the Bill Number doesn't match what Convoy has on record. Verify the Bill Number on your Bill matches Convoy's exactly, and the payment will reconcile.
What gets sent to Convoy (Field Mappings)
When Tai posts a load to Convoy, the following Tai shipment fields map to the Convoy load payload:
Load Level
| Convoy Field | Tai Source |
|---|---|
externalId |
Shipment ID |
postingStatus |
AVAILABLE on initial post, COVERED once a carrier is assigned, CANCELED when the load is cancelled |
referenceIds[] |
All shipment-level reference numbers (both standard and custom) — see Reference Numbers below |
Stops
Stops are sent in order: First Pick → any additional pickup/dropoff stops (by priority) → Last Drop.
| Convoy Field | Tai Source |
|---|---|
type |
PICKUP for First Pick, DROPOFF for everything else |
locationName |
Stop Company Name |
address.addressOne |
Stop Street Address |
address.addressTwo |
Stop Street Address 2 |
address.city / state / postalCode |
Stop City / State / Postal Code |
startTime / endTime |
See timing rule below |
isCutOffTime |
false if Appointment times are used, true if Scheduled times are used |
notes |
Stop Instructions. For stops flagged as both pickup and delivery, Tai automatically prepends: "This location may also have freight available for pickup. Please check with the customer before departing." |
pocDetails.name / phoneNumber |
Stop Contact Name / Phone |
referenceIds[] |
All stop-level reference numbers (standard + custom) |
Timing rule: if the stop has an Appointment Ready Date/Time, that's sent as startTime (with Appointment Close Date/Time as endTime). Otherwise, the Scheduled Ready/Close Date/Time is used and the stop is marked as a cut-off time window.
Load Details
| Convoy Field | Tai Source |
|---|---|
description |
Auto-generated: "{Trailer Type} from {Origin City} to {Destination City}" |
weightValue |
Shipment Weight |
weightUnit |
LBS if pounds, otherwise KG |
isHazardous |
Shipment Hazardous flag |
temperatureRequirement |
Derived from Min/Max Temperature (only sent when set — required for Reefer) |
Equipment
| Convoy Field | Tai Source |
|---|---|
trailerType |
Mapped from Tai Trailer Type — see mapping below |
trailerLength |
Mapped from Tai Trailer Type — see mapping below |
trailerNumber |
Shipment Trailer Number |
requiresLiftgate |
Requires Liftgate flag |
requiresTarp |
Requires Tarp flag |
Trailer type mapping:
| Tai Trailer Type | Convoy Trailer Type | Convoy Trailer Length |
|---|---|---|
| Van Dry – 53' (default) | DRY_VAN |
53' |
| Reefer – 53' | REEFER |
53' |
| Flatbed – 48' | FLATBED |
48' |
| Step Deck – 48' | STEPDECK |
48' |
Rates
| Convoy Field | Tai Source |
|---|---|
postingRates.maxBuyRateCents |
Max Buy Rate × 100 (converted to cents) |
postingRates.autoAcceptRateCents |
Offer Rate × 100 (converted to cents) |
Broker Contacts
Each Integration Source Parameter contact (MATCHING, LOAD_EXCEPTION, DOCUMENT_REVIEW, INVOICING) is sent as a brokerContacts[] entry with the staff member's Name, Phone, and Email. If the same staff member covers multiple roles, they're grouped into a single entry with all roles listed under contactFor.
STAFFID is not sent as a broker contact — it's used internally to determine which staff the integration acts as when creating loads, assigning carriers, and processing invoices.
Assigned Carrier
Only sent when a carrier is already assigned in Tai (e.g. when re-syncing an already-covered load):
| Convoy Field | Tai Source |
|---|---|
companyName |
Carrier Name |
mcNumber |
Carrier MC Number |
dotNumber |
Carrier DOT Number |
Reference Numbers
Both shipment-level and stop-level reference numbers are sent to Convoy — for both standard reference types and custom reference numbers:
- Standard reference numbers use the reference type's display name as the label (e.g. "Customer PO Number", "BOL Number").
- Custom reference numbers use the custom name you defined.
- All values are sent as-is.