Skip to main content

February 2, 2026 Release Notes, Version 26.01

An overview of new features and bug fixes released on February 2nd, 2026 for Shipwell version 26.01

S
Written by Shipwell TMS Support
Updated over 2 weeks ago

Support for Ton Weight Unit

What's New

Shipwell now supports Tons (TON) as a weight unit option across the platform. This enhancement enables customers in industries like mining, agriculture, and bulk commodities to work directly in their preferred unit of measure without manual conversion.

Key Updates

Weight Unit Addition

  • Tons (TON) is now available as a weight unit option alongside pounds (LBS) and kilograms (KG)

  • 1 Ton = 2,000 lbs (US short ton)

Availability Tons can be selected when creating or editing:

  • Shipments

  • Orders

  • Contracts

Automatic Conversion

  • The system automatically converts between tons and other weight units (LBS, KG) for accurate calculations

  • Contract rating now uses a 1:1 conversion when both the shipment and contract are configured in tons

  • All weight validations and calculations work seamlessly with the ton unit

What This Means For You

If you ship commodities measured in tons, you can now:

  • Enter weights directly in tons without manual conversion

  • View shipment and order weights in your preferred unit

  • Set up contracts using tons for accurate rate calculations

All existing shipments, orders, and contracts using other weight units remain unchanged and fully functional.

Additional Group Support

Groups are being added across the platform incrementally and in backwards ways. In this release we have added groups to the following component:

Order Dashboard

A groups filter is now visible in the dashboard filters for orders

Settlements Dashboard

A groups filter is now visible in the dashboard filters for settlements

Shipment Dashboard

A groups filter is now visible in the dashboard filters for shipments.

We have added groups to the order → shipment creation model. Note that you must edit the groups from the edit order page as this is only an indicator field.

RFP Request Re-bids

Once carriers have uploaded their RFP bids and submitted these back to the shipper, the carrier bids are displayed in the Lane Bids screen. If the Shipper would like to request a carrier to re-bid on certain lanes they can toggle the Re-Bid button for the carrier. The user can go through the RFP lane by lane and mark carriers for Re-bids. The selected carriers are automatically saved, allowing the user to leave the RFP screens and return at a later time to mark additional carriers for Re-bidding.

Once the shipper has evaluated all the lanes and carrier bids, they can choose the RFP Actions drop list and select Send Re-Bid Notifications to Carriers.

This process will bring up a modal screen with all the carriers listed within the RFP marked for a Re-bid. The user can deselect any carrier but can only add carriers with a lane marked for a re-bid. They can then set an expiration date and time when all of the re-bids must be returned by the carriers. Once entered, the user can hit Send to send the notifications to the carriers.

The carriers will receive the following email notification that a Re-bid on lanes is requested by the shipper, and when the re-bidding time will expire.

The carrier will see on their RFP dashboard that Re-bids are requested for the RFP and when the re-bidding process will expire.

When the carrier goes into the RFP details screen they will see which lanes have been requested to Re-bid with a red Needs Re-bid indicator in the status column. At this point the carrier can update their bid in the Rate column. These updates are automatically saved as they are entered by the carrier. Once they have completed the re-bidding process they can click Submit in order to transmit the updated rates to the shipper.

On the Shippers RFP display, they will see current carrier bid as well as the carrier’s previous bid amount. If the shipper would like to get additional re-bids they can toggle the Re-bids button and repeat the process. This allows the shipper to have as many bidding rounds as desired.

NetSuite App Enhancements

We have improved the default data management of the NetSuite integration with the following changes:

  • If no ready_at and closes_at data is sent either by NetSuite or by default order mapping settings, then default values of (08:00 and 18:00) will be used instead null. This will ensure that orders will come in with times that can be used in optimization, shipment building, and other workflow that were previously blocked due to limitations in the setup of a customer’s ERP.


RFP Inactivate Carriers on Lanes

Once carriers have uploaded their bids, the shipper has the ability to stack rank the carriers on each lane. The default sort order is lowest to highest cost, but using the :: icon on the left side of each row, you can click and drag the row and arrange these in order of carrier preference. The order in which the carriers are ranked will determine the tendering order if routing guides are created for the lane.

The Inactivate feature allows you to mark carriers on the lane inactive in contracts. This is useful if for example you receive 10 carrier bids on a given lane. By default, all 10 carriers would appear in the tender modal when assigning a carrier to a shipment. If I really only want to see the top 4 carriers appear when applying a contract to a shipment I can check the Inactive box for carriers ranked 5 - 10 on the screen. In order to make it easier for the user, when the 5th ranked carrier box is selected the system will automatically check the carriers ranked 6 - 10 as well. If the user made a mistake they can check the box on the header row to deselect all the checked boxes and start again. The user can also check and uncheck individual carriers.

The Inactive carrier checks are automatically saved as the user enters them, so the user can begin this process and then return to it in the future.

Once all the lanes have been reviewed and lanes have been marked Inactive for some carriers, the user can click on the RFP Actions drop list and select Set Contract Rate Statuses. This will initiate the process to update all of the related carrier contracts that were created when the carrier submitted the RFP bids.

The shipper can access the carrier’s contract and click on the View Rate Table link to see the detailed rate information lane by lane. The Inactive column will display a check box next to any lanes that were marked Inactive in the RFP. The user also has the ability to manually check or uncheck any carrier lane within the contract independent of the RFP process. This allows the shipper to streamline the number of potential carriers that show up during the carrier tendering process, while still retaining all the rate information submitted by the carrier in the RFP.

AI Studio Enhanced Activity Log & Exception Visibility

Description: We've improved the Activity Log to give you better visibility into the exceptions your Track & Trace AI Worker identifies and resolves:

  • New Status Filter: Quickly filter the Activity Log by status (e.g., "Received") to see only the exceptions you care about

  • Resolution Tracking: See exactly how each exception was resolved—whether tracking was updated, delivery was confirmed, or a BOL was corrected

  • Outreach & Response Visibility: Track the full lifecycle from outreach sent → response received → resolution achieved

AI Studio Branded Email Outreach (Microsoft Outlook)

Description: The Track & Trace AI Worker can now send outreach emails directly from your company's Microsoft Outlook email accounts. This allows carrier and driver communications to appear as if they're coming from a member of your team rather than a generic Shipwell address—improving trust, recognition, and response rates from your carrier network.

To enable this feature, navigate to AI Studio > Global Configuration > Email Integration and connect your Microsoft Outlook account.

Gmail integration coming soon.


SMS Communication for Track & Trace AI Worker

Description: The Track & Trace AI Worker can now communicate via SMS text message in addition to email. When carriers or drivers are unresponsive to email outreach, the AI Worker can send SMS messages to request tracking updates, improving response rates and reducing tracking gaps.

Users can view which communication method was used directly in the Activity Log, with details showing the method (Text/SMS), recipient phone number, and timestamp.

Track & Trace AI Worker Configuration Enhancements

Description: We've added new configuration options to give you more control over how your Track & Trace AI Worker operates:

LLM Model Selection Choose which AI model powers your Track & Trace AI Worker based on your preferences for speed, accuracy, or specific workflow needs:

Shipment Mode Filtering Configure which shipment modes the AI Worker monitors. Supported modes include Drayage, Full Truckload, Intermodal, Less Than Truckload, and Volume Less Than Truckload. Use the include/exclude toggle to define whether the AI Worker monitors only selected modes or everything except selected modes.

Agent User Account Assign a specific Shipwell user account for the AI Worker to act as when viewing shipments, updating tracking, and interacting with your data. The selected user must have permissions to view and update shipments, view drivers, and view company details.

API Changes

Overview

This release introduces enhancements to weight unit handling, ETA timezone support, shipment tracking, credit limit management, custom field capabilities, shipper relationship financial tracking, and query filtering. The update also includes streamlined schemas.

Summary:

  • New Feature: TON weight unit support across all shipment, product, and purchase order endpoints

  • New Feature: ETA timezone tracking for carrier-specified and predictive model ETAs

  • New Feature: Next stop metadata tracking for enhanced shipment visibility

  • New Feature: Enhanced shipper relationship financial tracking with credit currency and outstanding balance

  • New Feature: Credit limit override support for shipment relationships and carrier assignments

  • Improvement: Advanced query filtering with array support for location-based searches

  • Cleanup: Removed deprecated schemas


New Features

TON Weight Unit Support

Added support for TON weight unit across all endpoints that handle products, line items, and shipments, enabling better support for heavy freight and bulk shipments.

What's New:

  • TON - New weight unit enum value for measuring weight in tons

Enhanced Endpoints (103 changes):

Products:

  • GET /products/ (response)

  • POST /products/ (request & response)

  • GET /products/{productId}/ (response)

  • PUT /products/{productId}/ (request & response)

Purchase Orders:

  • GET /purchase-orders/ (response)

  • POST /purchase-orders/ (request & response)

  • GET /purchase-orders/{purchaseOrderId}/ (response)

  • PUT /purchase-orders/{purchaseOrderId}/ (request & response)

  • GET /purchase-orders/{purchaseOrderId}/line-items/ (response)

  • POST /purchase-orders/{purchaseOrderId}/line-items/ (request & response)

  • GET /purchase-orders/{purchaseOrderId}/line-items/{purchaseOrderLineItemId}/ (response)

  • PUT /purchase-orders/{purchaseOrderId}/line-items/{purchaseOrderLineItemId}/ (request & response)

  • POST /purchase-orders/build-shipment/ (response)

  • PUT /purchase-orders/update-built-shipment/ (response)

Shipments:

  • GET /shipments/ (response)

  • POST /shipments/ (request & response)

  • GET /shipments/external/ (response)

  • GET /shipments/external/{shipmentId}/ (response)

  • POST /shipments/linear-feet/ (request & response)

  • GET /shipments/pickups/ (response)

  • POST /shipments/pickups/ (response)

  • GET /shipments/pickups/{shipmentPickupId}/ (response)

  • PUT /shipments/pickups/{shipmentPickupId}/ (request & response)

  • POST /shipments/pickups/{shipmentPickupId}/cancel/ (response)

  • GET /shipments/templates/ (response)

  • POST /shipments/templates/ (request & response)

  • GET /shipments/templates/{shipmentTemplateId}/ (response)

  • PUT /shipments/templates/{shipmentTemplateId}/ (request & response)

  • GET /shipments/{shipmentId}/ (response)

  • PUT /shipments/{shipmentId}/ (request & response)

  • PUT /shipments/{shipmentId}/add-orders/ (response)

  • POST /shipments/{shipmentId}/auto-book/ (response)

  • POST /shipments/{shipmentId}/award-quote/ (response)

  • POST /shipments/{shipmentId}/cancel/ (response)

  • POST /shipments/{shipmentId}/initiate-check-call/ (response)

  • PUT /shipments/{shipmentId}/remove-orders/{orderId}/ (response)

Quoting:

  • GET /quoting/loadboard/ (response)

  • GET /quoting/loadboard/{loadBoardShipmentId}/ (response)

  • GET /quoting/spotnegotiations/spot-negotiations/ (response)

  • GET /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/ (response)

  • PUT /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/ (request & response)

Carriers:

  • GET /carriers/{carrierId}/power-units/{powerUnitId}/shipments/ (response)

Contracts:

  • POST /contracts/applicable-contracts/ (request)

  • POST /contracts/{contractId}/calculate-charge-items/ (request)

Benefits:

  • Support for heavy freight and bulk shipments

  • Standardized weight measurement for large loads

  • Better alignment with industry practices for tonnage

  • Improved pricing and rating calculations for heavy loads


ETA Timezone Support

Added timezone information to both carrier-specified and predictive model ETAs across all shipment stops, enabling accurate time zone-aware ETA tracking and display.

What's New:

  • eta_timezone - Timezone identifier for ETA values, available in both carrier_specified_eta and predictive_model_eta objects

Enhanced Endpoints (110 changes):

Shipments:

  • GET /shipments/ (response)

  • POST /shipments/ (request & response)

  • GET /shipments/external/ (response)

  • GET /shipments/external/{shipmentId}/ (response)

  • GET /shipments/pickups/ (response)

  • POST /shipments/pickups/ (response)

  • GET /shipments/pickups/{shipmentPickupId}/ (response)

  • PUT /shipments/pickups/{shipmentPickupId}/ (request & response)

  • POST /shipments/pickups/{shipmentPickupId}/cancel/ (response)

  • GET /shipments/{shipmentId}/ (response)

  • PUT /shipments/{shipmentId}/ (request & response)

  • PUT /shipments/{shipmentId}/add-orders/ (response)

  • POST /shipments/{shipmentId}/auto-book/ (response)

  • POST /shipments/{shipmentId}/award-quote/ (response)

  • POST /shipments/{shipmentId}/cancel/ (response)

  • POST /shipments/{shipmentId}/initiate-check-call/ (response)

  • PUT /shipments/{shipmentId}/remove-orders/{orderId}/ (response)

Stops:

  • GET /shipments/{shipmentId}/stops/ (response)

  • POST /shipments/{shipmentId}/stops/ (request & response)

  • GET /shipments/{shipmentId}/stops/{stopId}/ (response)

  • PUT /shipments/{shipmentId}/stops/{stopId}/ (request & response)

Quoting:

  • GET /quoting/loadboard/ (response)

  • GET /quoting/loadboard/{loadBoardShipmentId}/ (response)

  • GET /quoting/spotnegotiations/spot-negotiations/ (response)

  • GET /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/ (response)

  • PUT /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/ (request & response)

Carriers:

  • GET /carriers/{carrierId}/power-units/{powerUnitId}/shipments/ (response)

Purchase Orders:

  • POST /purchase-orders/build-shipment/ (response)

  • PUT /purchase-orders/update-built-shipment/ (response)

Benefits:

  • Accurate time zone-aware ETA display

  • Proper handling of cross-timezone shipments

  • Reduced confusion around ETA timing

  • Better customer communication with local time ETAs

  • Improved tracking accuracy across regions


Next Stop Metadata Tracking

Added comprehensive next_stop metadata to shipment responses, providing enhanced visibility into upcoming stops and their details.

What's New:

  • next_stop - Complete information about the next stop in the shipment route, including location, timing, and appointment details

Enhanced Endpoints (27 changes):

Shipments:

  • GET /shipments/ (response)

  • POST /shipments/ (request & response)

  • GET /shipments/external/ (response)

  • GET /shipments/external/{shipmentId}/ (response)

  • GET /shipments/{shipmentId}/ (response)

  • PUT /shipments/{shipmentId}/ (request & response)

  • PUT /shipments/{shipmentId}/add-orders/ (response)

  • POST /shipments/{shipmentId}/auto-book/ (response)

  • POST /shipments/{shipmentId}/award-quote/ (response)

  • POST /shipments/{shipmentId}/cancel/ (response)

  • POST /shipments/{shipmentId}/initiate-check-call/ (response)

  • PUT /shipments/{shipmentId}/remove-orders/{orderId}/ (response)

Shipment Pickups:

  • GET /shipments/pickups/ (response)

  • POST /shipments/pickups/ (response)

  • GET /shipments/pickups/{shipmentPickupId}/ (response)

  • PUT /shipments/pickups/{shipmentPickupId}/ (request & response)

  • POST /shipments/pickups/{shipmentPickupId}/cancel/ (response)

Quoting - Spot Negotiations:

  • GET /quoting/spotnegotiations/spot-negotiations/ (response)

  • GET /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/ (response)

  • PUT /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/ (request & response)

Carriers:

  • GET /carriers/{carrierId}/power-units/{powerUnitId}/shipments/ (response)

Purchase Orders:

  • POST /purchase-orders/build-shipment/ (response)

  • PUT /purchase-orders/update-built-shipment/ (response)

Benefits:

  • Complete visibility into next stop information

  • Enhanced shipment tracking and monitoring

  • Better appointment and delivery management

  • Improved customer communication and exception handling


Shipper Relationship Financial Tracking

Added support for credit currency and outstanding balance tracking in shipper relationships, enabling better financial management and credit monitoring.

What's New:

  • credit_currency - The currency used for credit terms with the shipper

  • outstanding_balance - Current outstanding balance for the shipper relationship

Enhanced Endpoints (12 changes):

  • GET /brokerages/{brokerageId}/shipper-relationships/ (response)

  • POST /brokerages/{brokerageId}/shipper-relationships/ (request & response)

  • GET /brokerages/{brokerageId}/shipper-relationships/{shipperRelationshipId}/ (response)

  • PUT /brokerages/{brokerageId}/shipper-relationships/{shipperRelationshipId}/ (request & response)

Benefits:

  • Track credit exposure across shipper relationships

  • Support multi-currency credit arrangements

  • Monitor outstanding balances in real-time

  • Improve financial reporting and credit management


Credit Limit Override Support

Added support for credit limit overrides on shipment relationships and carrier assignments, enabling per-shipment credit management that overrides default relationship limits.

What's New:

  • credit_limit_override - Override the default credit limit for specific shipments or carrier assignments

  • Available in both customer relationships (relationship_to_customer) and vendor relationships (relationship_to_vendor)

Enhanced Endpoints (77 changes):

Shipments:

  • GET /shipments/ (response)

  • POST /shipments/ (request & response)

  • GET /shipments/external/ (response)

  • GET /shipments/external/{shipmentId}/ (response)

  • GET /shipments/{shipmentId}/ (response)

  • PUT /shipments/{shipmentId}/ (request & response)

  • PUT /shipments/{shipmentId}/add-orders/ (response)

  • POST /shipments/{shipmentId}/auto-book/ (response)

  • POST /shipments/{shipmentId}/award-quote/ (request & response with new 400 status)

  • POST /shipments/{shipmentId}/cancel/ (response)

  • POST /shipments/{shipmentId}/initiate-check-call/ (response)

  • PUT /shipments/{shipmentId}/remove-orders/{orderId}/ (response)

Carrier Assignments:

  • GET /shipments/{shipmentId}/carrier-assignments/ (response)

  • POST /shipments/{shipmentId}/carrier-assignments/ (request & response with new 400 status)

  • GET /shipments/{shipmentId}/carrier-assignments/{carrierAssignmentId}/ (response)

  • PUT /shipments/{shipmentId}/carrier-assignments/{carrierAssignmentId}/ (request & response)

Shipment Pickups:

  • GET /shipments/pickups/ (response)

  • POST /shipments/pickups/ (response)

  • GET /shipments/pickups/{shipmentPickupId}/ (response)

  • PUT /shipments/pickups/{shipmentPickupId}/ (request & response)

  • POST /shipments/pickups/{shipmentPickupId}/cancel/ (response)

Quoting - Spot Negotiations:

  • GET /quoting/spotnegotiations/spot-negotiations/ (response)

  • GET /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/ (response)

  • PUT /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/ (request & response)

Carriers:

  • GET /carriers/{carrierId}/power-units/{powerUnitId}/shipments/ (response)

Purchase Orders:

  • POST /purchase-orders/build-shipment/ (response)

  • PUT /purchase-orders/update-built-shipment/ (response)

Benefits:

  • Override default credit limits for high-value or special circumstances shipments

  • Granular credit management at the shipment level

  • Flexible credit controls for carrier assignments

  • Better risk management and credit exposure control


Improvements

Enhanced Query Filtering

Expanded query parameter support for location-based filters to accept both single values and arrays, enabling more flexible and powerful search capabilities.

What's Enhanced: Query parameters now accept both string and array types for:

  • delivery_stops__contains

  • delivery_stops_company_name__contains

  • pickup_stops__contains

  • pickup_stops_company_name__contains

Enhanced Endpoints (16 changes):

  • GET /quoting/loadboard/ (all 4 parameters)

  • GET /shipments/ (all 4 parameters)

Benefits:

  • Search for multiple locations in a single query

  • Reduce API calls when filtering by multiple criteria

  • More efficient batch operations and reporting

  • Improved developer experience with flexible query options

Schema Cleanup

Removed deprecated schemas that are no longer used:

  • NextStopAppointmentStatus

  • RebidSelectedCarrier

  • RebidSelectedCarriersResponse

  • RebidSelectionUpdateRequest

  • SendRebidNotificationsRequest


Usage Examples

Product Weight Unit with TON Support

Creating a product with TON weight unit:

POST /products/ { "name": "Steel Coils", "weight": 25.5, "weight_unit": "TON", "description": "Industrial steel coils" }

Response:

{ "id": "product_123", "name": "Steel Coils", "weight": 25.5, "weight_unit": "TON", "description": "Industrial steel coils", "created_at": "2025-01-28T10:00:00Z" }

ETA Timezone Information

Shipment stop with timezone-aware ETAs:

GET /shipments/{shipmentId}/ { "id": "shipment_789", "stops": [ { "id": "stop_123", "location": "Chicago, IL", "carrier_specified_eta": { "estimated_arrival": "2025-01-30T14:00:00Z", "eta_timezone": "America/Chicago" }, "predictive_model_eta": { "estimated_arrival": "2025-01-30T15:30:00Z", "eta_timezone": "America/Chicago" } } ] }

Creating a stop with ETA timezone:

POST /shipments/{shipmentId}/stops/ { "location_id": "location_456", "carrier_specified_eta": { "estimated_arrival": "2025-02-01T09:00:00Z", "eta_timezone": "America/Los_Angeles" } }

Shipper Relationship with Financial Tracking

Creating a shipper relationship with credit tracking:

POST /brokerages/{brokerageId}/shipper-relationships/ { "shipper_id": "shipper_123", "credit_currency": "USD", "outstanding_balance": 5000.00, "credit_limit": 50000.00 }

Response:

{ "id": "relationship_456", "shipper_id": "shipper_123", "credit_currency": "USD", "outstanding_balance": 5000.00, "credit_limit": 50000.00, "created_at": "2025-01-07T12:00:00Z" }

Next Stop Metadata

Shipment response with next stop information:

GET /shipments/{shipmentId}/ { "id": "shipment_789", "status": "in_transit", "metadata": { "next_stop": { "stop_id": "stop_123", "appointment_status": "confirmed", "location": "Chicago, IL", "scheduled_date": "2025-01-10" } }, "stops": [...] }

Credit Limit Override

Awarding a quote with credit limit override:

POST /shipments/{shipmentId}/award-quote/ { "quote_id": "quote_456", "credit_limit_override": 75000.00 }

Creating a carrier assignment with credit limit override:

POST /shipments/{shipmentId}/carrier-assignments/ { "carrier_id": "carrier_789", "credit_limit_override": 100000.00, "assignment_type": "primary" }

Response includes the override in relationship data:

{ "id": "assignment_123", "carrier_id": "carrier_789", "credit_limit_override": 100000.00, "shipment": { "id": "shipment_789", "relationship_to_vendor": { "credit_limit_override": 100000.00 } } }

Enhanced Array-Based Query Filtering

Single value (existing functionality):

GET /shipments/?pickup_stops__contains=Chicago

Multiple values (new functionality):

GET /shipments/?pickup_stops__contains=Chicago&pickup_stops__contains=Detroit&pickup_stops__contains=Milwaukee

Or using array notation:

GET /shipments/?pickup_stops__contains[]=Chicago&pickup_stops__contains[]=Detroit


Migration Guide

Optional Enhancements

Adopt TON Weight Unit for Heavy Freight (Optional)

  • Use TON for shipments and products involving tonnage

  • Update pricing and rating logic to handle ton-based weights

  • Integrate TON support into your product catalog for bulk items

Use ETA Timezone Information (Optional)

  • Read eta_timezone from ETA objects in stop responses

  • Display ETAs in local timezone for better customer communication

  • Include eta_timezone when creating or updating stops with ETAs

  • Implement timezone-aware ETA calculations and displays

Use Next Stop Metadata (Optional)

  • Read next_stop from shipment metadata responses

  • Integrate next stop information into your tracking and monitoring systems

  • Enhance customer communication with detailed next stop information

Adopt Shipper Relationship Financial Tracking (Optional)

If you manage credit terms and balances for shippers:

  • Add credit_currency when creating/updating shipper relationships

  • Include outstanding_balance to track current balances

  • Update your financial tracking to consume these fields from API responses

Use Credit Limit Override for Granular Credit Control (Optional)

If you manage credit limits for shipments and carriers:

  • Include credit_limit_override when awarding quotes or creating carrier assignments for special circumstances

  • Read credit_limit_override from relationship data in shipment responses

  • Integrate override values into your credit management and risk assessment systems

Leverage Enhanced Query Filtering (Optional)

  • Update location-based searches to use array parameters for multi-location queries

  • Optimize batch operations with combined filters

  • Reduce API call volume for multi-criteria searches


Backward Compatibility

Backward Compatible Changes:

  • New TON weight unit enum value is additive for most endpoints

  • New eta_timezone property is optional

  • New next_stop metadata property is optional

  • New credit_currency and outstanding_balance fields are optional

  • New credit_limit_override field is optional

  • New custom field types (DATE, FLOAT, INTEGER, TIME) are additive enum values

  • Enhanced query parameters maintain existing single-value functionality

  • Removed schemas were already deprecated

Potential Client Impact:

  • Weight unit enum expansion: Clients with strict enum validation for shipments/line items may need updates to accept TON

  • New 400 error responses: POST /shipments/{shipmentId}/award-quote/ and POST /shipments/{shipmentId}/carrier-assignments/ now include 400 status responses for validation errors

Testing Recommendations:

  1. Test product creation and updates with all supported weight units

  2. Test shipment creation with TON weight unit if applicable

  3. Verify ETA timezone parsing in stop responses

  4. Verify credit limit override functionality if you plan to implement it

  5. Consider adopting optional enhancements based on your business needs


Analytics Model Updates

Data Share:

  • dim_contract - Consolidated contract dimension supporting both legacy and lane-based contract patterns.

    • dim_contract_key: Primary key (surrogate key from contract_id, lane_id, rate_table_id, rate_band_id, and location fields)

    • contract_id: The internal contract ID

    • contract_name: The human-readable name of the contract

    • status: The current status of the contract (e.g., active, inactive, expired)

    • origin_city: The city where the shipment originates

    • origin_state_province: State or province of the origin location

    • origin_postal_code: Postal code of the origin location

    • destination_city: The city where the shipment is delivered

    • destination_state_province: State or province of the destination location

    • destination_postal_code: Postal code of the destination location

    • modes: The transportation modes covered by this contract (e.g., FTL, LTL)

    • equipment_types: The equipment types allowed under this contract

    • minimum_rate: The minimum rate for this contract

    • band_calculation_measurement: The measurement type used for rate band calculations (new contracts only)

    • start_datetime: When the contract becomes effective

    • end_datetime: When the contract expires

    • contract_rate: The rate defined directly on the contract

    • rate_table_rate: The rate from the rate table (new lane-based contracts only)

    • contract_rate_type: The rate type for the contract rate (e.g., FLAT, RATE_TABLE, PER_MILE)

    • rate_table_rate_type: The rate type for the rate table rate (new contracts only)

    • rate_application_type: How the rate is applied (from rate bands in new contracts)

    • distance_miles: The distance in miles covered by this contract

    • carrier_relationship_id: Foreign key to the freight authority vendor relationship

    • carrier_name: The name of the carrier under this contract

    • company_id: The ID of the company (freight authority) that owns this contract

    • company_name: The name of the company (freight authority) that owns this contract

    • fuel_included: Whether fuel surcharges are included in the contract rate

    • additional_stop_charge_flat_fee: Flat fee charged for additional stops

    • created_at: When the contract was created

    • updated_at: When the contract was last updated

    • lane_id: The lane ID for new lane-based contracts (null for legacy contracts)

    • rate_table_id: The rate table ID for new contracts (null for legacy contracts)

    • rate_band_id: The rate band ID for new contracts (null for legacy contracts)

    • _loaded_datetime: The timestamp when the record was loaded into the warehouse

  • fact_shipment_group - each row represents a shipment-to-group association at the shipment metadata level.

    • fact_shipment_group_key: Primary key

    • dim_shipment_detail_key: Foreign key to dim_shipment_detail

    • group_id: The internal group ID

    • group_external_id: The external identifier for the group

    • group_name: The human-readable name of the group

    • group_description: A description of the group's purpose or contents

    • parent_group_id: The ID of the parent group if this is a nested group

    • group_status: The current status of the group

    • created_at: When the shipment-group association was created

    • group_updated_at: The latest update time between shipment metadata and group

    • _loaded_datetime: Timestamp when the record was loaded into the data warehouse

  • fact_shipment_group_summary - Each row represents a shipment with its associated groups aggregated into summary fields. This is a rollup of fact_shipment_group, providing comma-separated lists of group names and IDs per shipment.

    • dim_shipment_detail_key: Primary key and foreign key to dim_shipment_detail

    • group_names: Comma-separated list of all group names associated with this shipment

    • group_external_ids: Comma-separated list of all external group IDs associated with this shipment

    • group_count: The total number of distinct groups associated with this shipment

    • group_updated_at: The most recent update time across all groups for this shipment

    • _loaded_datetime: Timestamp when the record was loaded into the data warehouse

  • fact_shipment_order_group - Each row represents a shipment-to-group association via purchase orders.

    • fact_shipment_order_group_key: Primary key

    • dim_shipment_detail_key: Foreign key to dim_shipment_detail

    • shipment_id: The shipment ID

    • product_order_id: The product order ID that links the shipment to the group

    • product_order_number: The human-readable product order number

    • group_id: The internal group ID from product_order_group

    • group_external_id: The external identifier for the group

    • group_name: The human-readable name of the group

    • group_description: A description of the group's purpose or contents

    • parent_group_id: The ID of the parent group if this is a nested group

    • tenant_id: The tenant ID that owns this group

    • group_updated_at: The latest update time among shipment, product order, and group

    • _loaded_datetime: Timestamp when the record was loaded into the data warehouse

  • dim_shipment_detail - new field added to this table

    • trailer_number: Unique identifier for the trailer used in this shipment

    • contract_id: Unique identifier for the contract used to book this shipment (if applicable)

    • contract_name: Human-readable name of the contract used to book this shipment (if applicable)

    • contract_status: Current status of the contract associated with this shipment

    • contract_applied_at: Timestamp when the contract was applied to this shipment

    • stage_id: The internal stage ID

    • multi_stage_shipment_id: UUID for the multi-stage shipment

    • multi_stage_reference_id: 6-character reference id for multi-stage shipments

Description

LTL loads marked as Delivered when still in transit

UPS shipments are not coming back with writeback files

Auto Quote and Tender routing guide failure

Unable to select carrier from the bid

Automatic Tender Acceptance

ABFS not requesting Pre Pro on dispatch

CHR direct rates not displaying Service Level

Missing Product Field Data in Shipments - V3 Upgrade

Unable to view pop-out quick views in orders dashboard

NetSuite to Shipwell Date Mapping Issue - Dates Off by One Day & Custom Field Not Populating

Corrogo duplicate key value violates unique constraint ix_product_order_group_group

Add machine_code for equipment type serializer

Error in processing bill.line_item.updated message

Missing new references data on the order release route

Shipment Stops Missing Company Name and Location Name When Order Has No Address Book Reference

NetSuite SuiteApp can't find vendor

Filtering not working at the State level and some state are being duplicated when selected

Next Stop Appointment Status filter is not working in PROD

NetSuite testing OneWorld

NetSuite Credentials Refresh resetting settings

Create shipment from order isn't setting the groups field automatically from the group on the order

V3 Orders - Missing Product Field Data in Shipments Using Bulk Create Shipment option

Customs Information not populating

Add Tons (TON) as a weight unit

Enforce Customer Credit Limit when Assigning Carriers

When a PO with CO2 cooler is combined with another PO shipping from BAF cooler, BAF script is not running and charges are still $0.00.

[iOS][5.7.6] Text Entry Bubble blocked by Keyboard

FE - Unable see events

EDI214 - Fix shipment_state event

Did this answer your question?