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.
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.
We have improved the default data management of the NetSuite integration with the following changes:
If no
ready_atandcloses_atdata 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 Time zone Support
Added time zone 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 bothcarrier_specified_etaandpredictive_model_etaobjects
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 shipperoutstanding_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 assignmentsAvailable 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__containsdelivery_stops_company_name__containspickup_stops__containspickup_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:
NextStopAppointmentStatusRebidSelectedCarrierRebidSelectedCarriersResponseRebidSelectionUpdateRequestSendRebidNotificationsRequest
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
TONfor shipments and products involving tonnageUpdate 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_timezonefrom ETA objects in stop responsesDisplay ETAs in local timezone for better customer communication
Include
eta_timezonewhen creating or updating stops with ETAsImplement timezone-aware ETA calculations and displays
Use Next Stop Metadata (Optional)
Read
next_stopfrom shipment metadata responsesIntegrate 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 overridewhen awarding quotes or creating carrier assignments for special circumstancesRead
credit limit overridefrom relationship data in shipment responsesIntegrate 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
TONweight unit enum value is additive for most endpointsNew
eta_timezoneproperty is optionalNew
next_stopmetadata property is optionalNew
credit_currencyandoutstanding_balancefields are optionalNew
credit_limit_overridefield is optionalNew 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
TONNew 400 error responses:
POST /shipments/{shipmentId}/award-quote/andPOST /shipments/{shipmentId}/carrier-assignments/now include 400 status responses for validation errors
Testing Recommendations:
Test product creation and updates with all supported weight units
Test shipment creation with TON weight unit if applicable
Verify ETA timezone parsing in stop responses
Verify credit limit override functionality if you plan to implement it
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
Other Minor Enhancements and Bug Fixes
Description |
LTL loads marked as Delivered when still in transit |
Auto Quote and Tender routing guide failure |
Unable to select carrier from the bid |
Automatic Tender Acceptance |
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 |
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 |
WFM-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 |





















