Skip to main content

June 8, 2026 Release Notes, Version 26.07

An overview of new features and bug fixes released on June 8, 2026 for Shipwell version 26.07

S
Written by Shipwell TMS Support

Copeland Device Integration

Summary

This release introduces the Copeland IoT Integration, bringing environmental condition monitoring directly into your Shipwell account. Copeland manufactures IoT sensors that attach to your freight and track temperature, humidity, and CO2 throughout transit — giving you real-time visibility into the condition of your cargo, not just its location.

Connect your Copeland account to Shipwell, attach a sensor to a shipment, and monitor environmental readings alongside your existing tracking data — all in one place. CO2 monitoring is a brand-new capability in Shipwell, giving you a more complete picture of freight condition for temperature-sensitive or compliance-regulated cargo.

Key Capabilities:

  • Connect your Copeland account — link Copeland to Shipwell from the Integration Marketplace using your API Key, Subscription Key, and Customer ID. Once connected, your available Copeland devices are accessible within Shipwell.

  • Attach a device to a shipment — assign a Copeland sensor to any shipment during setup from the Tracking section (Manage Tracking Devices → Tracking Type: Copeland → select Device ID → Attach). If you only have an integration with Copeland, the dropdown will default to Copeland.

  • Real-time environmental monitoring — view sensor readings in the shipment's Tracking panel as the shipment moves, including:

    • Ambient Temperature (°F) — air temperature surrounding the sensor

    • Probe Temperature (°F) — direct cargo/product temperature from an optional external probe (when equipped)

    • Humidity (%)

    • CO2 (PPM) — new sensor type, exclusive to the Copeland integration

  • Full sensor data table — click View all Data to see every reading, including ambient temperature, probe temperature, humidity, CO2 (PPM), battery level, location, and timestamp. Click Export Table Data to download the full reading history for compliance documentation, insurance claims, or customer reporting.

  • Location + milestone tracking — alongside environmental data, Copeland devices report location and stop arrival/departure events (arrived/departed at pickup and delivery), which appear on the shipment's tracking timeline.

  • Automated trip management — tracking starts automatically when a shipment begins and stops when it is delivered or cancelled. No manual session management required.

  • Remove a device — disconnect a Copeland sensor from the Tracking panel when it's no longer needed; the device returns to your available device pool for reuse.

How It Works:

Once your Copeland account is connected, you assign a Copeland sensor to a shipment during the shipment creation in Shipwell. Shipwell communicates with Copeland's API throughout the shipment lifecycle to retrieve sensor readings, which are displayed in the shipment's tracking view. Readings are retrieved at regular intervals.

Benefits:

  • Real-time environmental visibility — monitor temperature, humidity, and CO2 on your freight while it's in transit, not after the fact.

  • CO2 monitoring — Copeland is the first Shipwell-integrated provider to surface CO2 data, expanding condition monitoring for specialized cargo.

  • Centralized visibility — see both location tracking and environmental condition data in a single shipment view, without switching platforms.

  • Automated trip management — sensor sessions start and stop automatically with the shipment lifecycle.

  • Exportable data records — download full sensor reading history for compliance, claims, or customer reporting.

  • Streamlined operations — attach and manage Copeland sensors directly inside your existing shipment setup workflow.

Known Limitations:

  • Only one Copeland device can be assigned per shipment in the current release.

  • Probe Temperature appears only when an optional external probe is attached to the device; otherwise it displays "--".

  • Alert thresholds for CO2 or other readings are not available in this release — data is visible and exportable, but automated threshold-breach alerts are planned for a future release.

  • CO2 data is exclusive to Copeland — it will not appear for shipments tracked by Tive or other providers.

Load Optimization Enhancements (Contracts & LTL-baseline cost)

Summary

This release introduces significant enhancements to the Load Optimization engine, focusing on intelligent contract rate utilization and improved baseline cost calculations. These improvements help customers by allowing customers to compare optimized vs baseline using their own contract rates and their preference between prioritizing bewteen FTL and LTL.

Load optimization now intelligently leverages your negotiated contract rates to find the most cost-effective shipping options.

Key Capabilities:

  • Automatic Contract Rate Lookup: The optimizer queries your active carrier contracts and applies applicable rates during plan generation when there is a match

    • Origin/Destination Addresses

    • Equipment Type

    • Mode

    • Planned Pickup Date

  • Active Contract Filtering: Only ACTIVE contracts are considered (expired and inactive contracts are automatically excluded)

    • Ranking is done by geo-specificity tiering using a point-based scoring system. The priority ranking is in this order:

      • address_external_reference

      • address

      • postal code 5-digit

      • postal code 3-digit

      • city

      • state

      • country

    • Tie-breaker logic - when multiple contracts exist in the same ranking tier the system uses the lowest price.

  • Configuration-Level Control: The new configuration toggle allows you to enable/disable contract rate usage per Load Optimization Configuration

  • Rate Source Transparency: All optimized and baseline cost now includes the rate source and rate mode that was used

The optimizer now makes smarter decisions about when to use Full Truckload (FTL) vs Less-than-Truckload (LTL) pricing based on your optimization configurations.

How It Works:

  • Automatically evaluates shipment weight, volume, and pallet count against configurable thresholds

  • Determines the appropriate baseline mode (FTL or LTL) for each order

  • Uses LTL pricing when shipments meet size requirements; falls back to FTL for larger shipments

  • Applies consistent logic at both baseline rating time and optimization time

Benefits:

  • More accurate cost and savings estimates

  • Better utilization of contract rates for eligible loads

  • Provide baseline cost closer to how you run your operation (Prioritize FTL or LTL first)

Known Limitations

  • Contract rate integration requires active contracts configured

  • Multi-stop loads may fall back to market rates if the contract doesn't support multiple stops

  • LTL contract rates are only applied when shipment dimensions meet configured thresholds

Swifty Enhancement

Meet the All-New Swifty AI Assistant Experience! We’ve given our AI Chatbot a UX overhaul. This update is all about making Swifty more accessible, deeply personalized, and significantly better at handling dense logistics data without crowding your screen.

1. The Floating Action Button (FAB) Launcher

We moved the chatbot trigger out of the cluttered top header and transformed it into a sleek, persistent floating action button in the lower right corner of your screen.

2. A Reimagined "Empty State" Experience

When you open Swifty now, you’ll be welcomed by a clean, intentional workspace designed to kickstart your workflow:

  • User Awareness & Personalized Greetings: Swifty now recognizes exactly who you are, greeting you by name for a more tailored experience.

  • Smart Prompt Suggestions: Not sure what to ask? Clickable quick-start buttons help you track shipments, create orders, or get a quick summary of your day instantly.

3. Expandable Windows & Scrollable Tables

Logistics data is wide and detailed. To fix the issue of cramped information, we've introduced two major layout updates to chatbot responses:

  • Scrollable Tables: When Swifty generates a manifest or shipment breakdown, the tables now support smooth horizontal scrolling so you never miss critical columns like statuses, carriers, or dates.

  • Expandable Windows: You can now expand the chat window horizontally to give your data breathing room.

API Changes

This release introduces enhancements to custom markup pricing, order filtering, and dock scheduling appointments. The update is fully backward compatible.

Summary:

  • New Feature: Customer-based custom markup pricing profiles and rule evaluation (backend-core, 126 changes)

  • Improvement: New order filter by customer reference number (corrogo, 16 changes)

  • New Feature: Appointment notes and appointment orders on dock scheduling; new lightweight appointment list schema (tempus, 172+ changes)

Customer-Based Custom Markup Pricing

Custom markup pricing profiles and rules have been expanded to support customers in addition to carriers. This allows brokers and shippers to configure markup rules that apply to specific customers, with support for per-customer quote value thresholds and a new rule evaluation endpoint.

What’s New:

  • custom_markup_pricing_profile — New field on the Customer schema (UUID, nullable). Assigns a pricing profile to a customer for a shipper relationship. Setting to null clears the assignment.

  • custom_markup_pricing_profile_id — New write-only field on RateShareConfig. Assigns or clears the pricing profile linked to a customer via the shipper relationship. Uses delete-then-insert on the through table (one profile per customer).

  • CustomMarkupPricingProfile.customer_count — New read-only integer field: number of customers assigned to the profile.

  • CustomMarkupPricingProfile.name — Now restricted to an enum: Gold, Value, Silver, Rhodium, Platinum.

  • CustomMarkupPricingProfileCustomer — Previously carrier-only. Now supports both customers and carriers (customer field added; carrier is now nullable and no longer required).

  • CustomMarkupRulecarrier_exclusions and carrier_inclusions removed; replaced by customer_exclusions and customer_inclusions. New min_quote_value_usd and max_quote_value_usd fields added. rule_type enum gains a new customer value. pricing_profile is now nullable and no longer required.

New Schema: MarkupResult — Represents the result of evaluating a custom markup rule for a specific customer.

Field

Type

Description

customer_id

uuid (read-only)

The customer the rule was evaluated for

markup_percentage

decimal (nullable)

Calculated markup percentage

min_usd

decimal (nullable)

Minimum markup in USD

min_cad

decimal (nullable)

Minimum markup in CAD

min_mxn

decimal (nullable)

Minimum markup in MXN

rule_id

uuid (read-only)

The rule that produced this result

rule_type

string

Type of rule applied

New Endpoint: GET /companies/{companyId}/custom-markups/{customMarkupId}/evaluate/

Runs the markup rule engine for every customer associated with this CustomMarkup and returns one MarkupResult per matched customer.

  • Response: 200 OK — array of MarkupResult

  • Tags: companies

Auth fix: phone_number on the /auth/verify/ response is now nullable.

API version: 2.7.664 → 2.7.672

Order Filter by Customer Reference Number (Orders API)

Added support for filtering orders by customer reference number via query parameters on GET /orders/.

New Query Parameters:

Parameter

Type

Description

references__customer_reference_number

array of strings

Filter orders where any reference matches one of the provided customer reference numbers

references__customer_reference_number__in

string

Comma-separated list of customer reference numbers to match

API version: 0.8.25 → 0.8.26

Appointment Notes & Appointment Orders (Dock Scheduling API)

Dock scheduling appointments now support free-text notes and structured appointment orders, enabling richer context to be attached to scheduled appointments.

What’s New on Appointment Schemas (CreateAppointment, Appointment, RescheduleAppointmentRequest, UpdateAppointmentRequest):

  • notes (string) — Free-text notes on the appointment.

  • appointment_orders (array of CreateAppointmentOrder) — Structured order data attached to the appointment.

New Schemas:

  • CreateAppointmentOrder — Represents an order associated with an appointment, including items and references.

  • CreateAppointmentOrderItem — Line-item detail within an appointment order.

  • CreateAppointmentOrderReference — Reference value (e.g., PO number, BOL) attached to an appointment order.

Note: ShipmentAppointmentScheduledResource.reference_number and reference_number_type are no longer required — superseded by appointment_orders[].references.

Appointment List Performance Optimization (Dock Scheduling API)

GET /appointments/ now returns a lighter AppointmentListItem schema instead of the full Appointment object, improving list performance.

  • Response type changed from PaginatedResponse[Appointment] to PaginatedResponse[AppointmentListItem].

  • AppointmentListItem has the same fields as Appointment excluding appointment_orders.

  • Use GET /appointments/{id}/ to retrieve the full appointment with orders.

API version: 0.4.5 → 0.4.8

Genesis — Estes eBOL Fix

  • PRO numbers from Estes are now normalized (formatting characters stripped).

  • eBOL failures for pending dispatches are now handled per-provider: Estes completes pending dispatches rather than failing them.

Description

ABF pre pro not arriving

AVE & XPO Direct connection - Quotes not working

LTL carrier status updates failing to progress accurately

Direct ODFL RATES NOT RETURNING CORRECTLY

Surface Detailed Error Messages on Load Optimization Failure

Swifty: Redesign launcher from header button to floating FAB-style trigger

Swifty: Redesign chat window UX — empty state, personalized greeting, prompt suggestions, and composer refresh

[Swifty] Fix is_carrier_document=True incorrectly set on shipper-uploaded documents

Swifty local permission gate intercepts routed chat requests

Swifty does not honor explicit OpenClaw chat session keys

Swifty chat sessions not reset when reopening from floating launcher

Slack Bot Integration error "SLACK_CLIENT_ID is not configured"

(Schuman Cheese) Swifty Forwarding Email Setup Needed

(Symrise) Swifty Forwarding Email Setup Needed

Remove Error When Tenant has no Optimization Config

Load Optimization Hanging on "Getting Rates"

Load plan stuck in 'Getting Rates' indefinitely — no timeout, no self-service recovery

Load Optimizer Failing with EXECUTION_ERROR

Load Plans showing Unknown error bug.

Mileage returns zero for shipments where all stops share the same zip code

Cant create a VDS order manually - Inconsistency in the adresses

Intermittent Zero Mileage on Shipments with Distinct Origin/Destination Zip Codes

Tender Request Emails Not Reaching Postmark

Carrier user permission “Access to All Customer Shipments” is not granting shipment visibility

Power Units not tracking as intended and Milestones not being updated

Port ETA blank after container tracking established

SFTP Upload Error (Order File)

Shipwell ETA not Matching Macropoint ETA #2

Allow Tive tracker movement events to activate Tendered shipments

Unable to Push Loads to Routing Guide: Strict Address Matching

Container number search strips first 4 characters (prefix letters not searchable)

Copeland - Credentials Setup

Copeland - Device Assignment

Copeland - Device Listing

Copeland - Environmental Monitoring

Copeland - Trip Lifecycle - After Attachment

Gracefully handle Tive device limitations

Handle coordinate-style addresses in Orderful 204 outbound to prevent transaction rejections

When scrolling horizontally across the shipment dashboard, the first column (ID) did not stay locked in place. The header stayed locked but the ID values scrolled out of view. The ID column now stays locked while scrolling.

Appointment times entered on a shipment stop showed under Planned instead of Appointment. They now save to the Appointment field.

Line item weights were inflated after a shipment was assigned. Weights now stay correct.

Fixed an error that blocked users from building or submitting LTL loads. LTL loads can now be created normally.

Rate confirmation PDFs were missing from carrier tender emails. They are now attached again.

Fixed an error that stopped NetSuite vendor bills from being created when a default value was set on a yes/no field.

Did this answer your question?