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 theCustomerschema (UUID, nullable). Assigns a pricing profile to a customer for a shipper relationship. Setting tonullclears the assignment.custom_markup_pricing_profile_id— New write-only field onRateShareConfig. 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 (customerfield added;carrieris now nullable and no longer required).CustomMarkupRule—carrier_exclusionsandcarrier_inclusionsremoved; replaced bycustomer_exclusionsandcustomer_inclusions. Newmin_quote_value_usdandmax_quote_value_usdfields added.rule_typeenum gains a newcustomervalue.pricing_profileis 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 |
| uuid (read-only) | The customer the rule was evaluated for |
| decimal (nullable) | Calculated markup percentage |
| decimal (nullable) | Minimum markup in USD |
| decimal (nullable) | Minimum markup in CAD |
| decimal (nullable) | Minimum markup in MXN |
| uuid (read-only) | The rule that produced this result |
| 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 ofMarkupResultTags: 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 |
| array of strings | Filter orders where any reference matches one of the provided customer reference numbers |
| 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 ofCreateAppointmentOrder) — 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]toPaginatedResponse[AppointmentListItem].AppointmentListItemhas the same fields asAppointmentexcludingappointment_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. |















