Back to Blog

McLeod PowerBroker API Integration: What Works, What Doesn't, and What to Test First

TMS software API integration architecture diagram

McLeod PowerBroker is one of the dominant TMS platforms in mid-market freight brokerage. If you're building any kind of third-party integration with it — carrier matching, rate optimization, visibility, analytics — you're going to encounter the same set of API quirks that every integrator has hit before you. This article documents the most significant issues and what actually works in production environments.

Understanding the McLeod API Architecture

McLeod PowerBroker's external API surface has evolved across major versions. Older deployments (pre-2020) typically expose a SOAP-based Web Services layer. More recent deployments on PowerBroker version 6.x and later have added REST endpoints for certain operations, but the REST coverage is incomplete — many data entities and operations still require SOAP. If you're integrating with a customer who hasn't upgraded recently, assume you're writing SOAP code.

The practical consequence is that your integration layer needs to handle both protocols, or you need to know which McLeod version your customer is running before you design the integration. Discovering mid-integration that a key operation only exists in the SOAP layer when you've built a REST-only integration is an expensive surprise. The first conversation with a new McLeod customer should establish version number, which API modules are licensed, and which IT team controls API credentials and firewall rules for outbound API traffic.

McLeod's API access requires customer-side configuration that their IT team needs to complete. This includes creating API user credentials with appropriate permissions, opening inbound network access if you're using webhook callbacks, and in some cases installing or configuring the McLeod Integration Services module. That module licensing is a commercial question, not just a technical one — some customers have PowerBroker licenses that don't include Integration Services, which restricts what's available via API.

Load Status Sync: The Most Common Failure Point

The operation that breaks most often in McLeod integrations is real-time load status synchronization. When a load status changes in PowerBroker — from Pending to Tendered, from Tendered to Covered, from In Transit to Delivered — you want that status to appear in your connected system within a reasonable latency window. McLeod provides a webhook mechanism for status change events, but its reliability in production varies significantly by customer environment.

The most common failure mode is webhook delivery timeout. McLeod's webhook implementation sends a POST request to your endpoint and expects an HTTP 200 response within a configured timeout window. If your endpoint doesn't respond within that window — due to server load, processing time, or network issues — McLeod may not retry reliably, depending on version and configuration. Status changes that happened while your endpoint was slow can be silently dropped. Production integrations should treat McLeod webhooks as advisory, not authoritative, and implement a polling fallback that periodically queries load status via the API to catch any dropped webhook events.

Load status polling via the GetOrders or GetOrderStatus endpoints works reliably but requires careful rate management. McLeod's API has rate limits that aren't always clearly documented, and a high-frequency poll from multiple customer environments can trigger rate limit responses that your integration needs to handle gracefully. The standard approach is to poll every 60–90 seconds for active loads and reduce frequency for loads in stable states (e.g., Delivered loads awaiting settlement).

EDI 204/990: The More Reliable Path for Tender Operations

For the core broker workflow of tendering loads and receiving acceptance/rejection from carriers, EDI transactions (204 Load Tender, 990 Response to Load Tender) are often more reliable than API operations in McLeod environments. EDI infrastructure has been in production in freight operations for decades; McLeod's EDI module is mature and well-tested. The API surface, particularly for tender operations, is newer and has more behavioral variation across versions.

If your integration primarily needs to push carrier tender decisions back into McLeod after carrier matching — "this load has been accepted by Carrier X" — EDI 990 into McLeod's trading partner configuration is often the right architecture, even if it feels less modern than a REST API call. The EDI path requires setting up trading partner relationships in McLeod, which again requires customer IT involvement, but once configured it's stable.

The EDI option becomes less practical for read-heavy operations — pulling load data, pulling carrier information, querying rate history — where API queries are more appropriate. The typical McLeod integration for a carrier matching or optimization system uses API queries for data reads and EDI for tender outcome writes. This hybrid approach plays to the strengths of both integration paths rather than forcing everything through whichever is weaker for the specific operation.

Carrier Data: What's Available and What Isn't

McLeod stores carrier data in its Carrier File module. Via API, you can typically read carrier basic information — MC/DOT numbers, contact details, payment terms — and historical load activity for those carriers. What McLeod doesn't provide natively is carrier capacity or location data; that comes from separate sources like ELD visibility providers or capacity posting boards.

One common integration challenge is carrier ID consistency. McLeod customers often have internal carrier IDs that don't map one-to-one with FMCSA MC numbers. Carriers who operate under multiple authorities, or who've changed names or been acquired, may have multiple records in McLeod with different internal IDs. When you're importing carrier performance data from an external system back into McLeod — for example, pushing carrier risk scores or compliance flags — matching on internal carrier IDs is more reliable than matching on MC number if the customer's data is inconsistent.

The carrier merge/dedup issue is particularly common in brokerages that have been operating for 10+ years. Over time, the same physical carrier entity may have been entered into McLeod multiple times by different dispatchers or after operational changes. Addressing this before deploying a carrier scoring integration is worth the effort — scores applied to the wrong carrier record or distributed across multiple duplicate records won't surface correctly in the dispatcher interface.

Rate and Revenue Data: What to Pull and How

For rate benchmarking and margin analysis, the most useful data in McLeod is load-level revenue and cost data — what the broker billed the shipper, what the broker paid the carrier, and the net margin per load. This data is available via API for most McLeod deployments, but the field structure varies by how the customer has configured their load and invoice records.

Accessorial charges — detention, layover, fuel surcharge adjustments, lumper fees — are often stored in separate charge line items attached to the load record rather than in the primary revenue/cost fields. An integration that only reads the primary rate fields will undercount total revenue and total cost on loads with significant accessorial activity. This systematically understates margin on high-accessorial loads and overstates margin on loads without accessorials, distorting any analysis you build on top of the data.

Always query the full charge detail for load records, not just the primary rate field. The API response is larger, but the margin calculations will be accurate. As we discussed in our article on TMS data quality for AI routing models, incomplete accessorial records are one of the most common causes of production model underperformance.

Sandbox and Testing Environment Considerations

McLeod does offer a sandbox/test environment for integration development, but its availability and configuration depend on the customer's McLeod support contract level. Some customers don't have a properly maintained test environment — the sandbox is either stale (not matching current production configuration) or unavailable. This makes integration testing in a realistic environment difficult.

The safest approach for McLeod integrations is to build comprehensive mock server infrastructure that simulates McLeod API responses for your integration tests. Don't depend on customer sandbox availability to validate integration behavior. Mock the full range of response scenarios — rate limits, timeouts, malformed responses, webhook delivery failures — so your integration handles the full failure space before production deployment.

When you do get access to a test environment, prioritize testing the load status sync path and the carrier data consistency issues discussed above. These are the areas where production behavior most frequently diverges from what the API documentation suggests. The SOAP endpoint behaviors and edge cases in McLeod's webhook delivery are particularly worth stress testing before you claim the integration is production-ready.

HaulCortex's Approach to McLeod Integration

HaulCortex's McLeod integration has been through four production deployments with PowerBroker customers across different version levels. The integration layer handles SOAP and REST operations, implements a polling fallback behind the webhook stream, normalizes carrier IDs against FMCSA data to handle internal duplicate records, and pulls full charge detail on load records for accurate margin calculation.

The onboarding process for McLeod customers requires two to three IT-level sessions to configure API credentials, open network access, establish EDI trading partner relationships, and validate data quality in the carrier file. That upfront investment pays off in a stable integration that doesn't require ongoing intervention. The broker team doesn't need to maintain the integration; it runs in the background and surfaces carrier scoring in their existing PowerBroker interface.

If you're evaluating whether your McLeod environment can support a carrier matching or optimization integration, the right first step is a data quality assessment — not an API connectivity test. Connectivity is usually solvable; data quality issues in the carrier file and historical load records take longer to address and have a bigger impact on model performance.

Integrate HaulCortex With Your McLeod TMS

HaulCortex has production-tested McLeod PowerBroker integrations. Request a demo to see how carrier matching surfaces inside your existing TMS workflow without a platform migration.

Request a Demo