Table of Contents

Version 2024.0

Colin Updated by Colin

February 14, 2024

Protected Customer Data

ShipStream takes the protection of your customer's data extremely seriously, which is why we are proud to announce our new Protected Customer Data feature suite: a combination of data masking and retention controls and exhaustive audit logging for every access to your customer's personal information. Complying with data privacy regulations like CCPA, GDPR, and requirements from industry-leading partners like Amazon and Shopify can be a daunting task, but now it is virtually effortless for both 3PLs and merchants to manage access to your protected customer data in ShipStream.

Update Impact: The default retention policies are 90 days. If you want a longer retention policy upon deployment, please notify us before this feature is deployed as expunged data cannot be easily recovered. Additionally, you will want to update your user roles to add the new Protected Customer Data role resource where appropriate.

Picking Exceptions

Mistakes happen, unfortunately, so when they do, you want to have good visibility on those issues. Also, you don't want them to slow you down. To this end, we have added a "Remove From Batch" button to the Picking UI and a new Picking Exception status which allows your pickers to easily exclude an uncooperative shipment from their picking batch and flag it for later inspection.

Update Impact: This new feature is enabled by default. If you do not wish to use it you will need to disable it after deployment at System > Configuration > Warehouse > Scanner > Picking > Allow Remove From Batch.

Removed Shipments

A shipment can be removed or even deleted from a Picking Batch or Bulk Fulfill Order for many different reasons. In this new version, these removals will be recorded for forensic and analytical purposes and this ties in closely with the feature above since the user-provided reason for removal is recorded here as well.

Update Impact: None. Removals are recorded with no configuration or user interaction required.

Packing Exceptions

The Packing UI has gained a new "Report Exception" button which collects a comment from the user and changes the shipment status to the new "Packing Exception" status for easy reference. This new status and the user's comments are only visible to staff users, not client users. Use this new feature to improve your processes for handling pick errors, invalid addresses, and more.

Update Impact: The "Shipments By Status" chart on the dashboard will be reset upon deployment.


You can now more easily use the barcode-focused Packing UI for products that... lack barcodes with the new "Auto-Pack" button! The Packaging Features will still be applied as if you had scanned each barcodeless product, but now you can complete shipments of barcodeless products using the same user-friendly touch-optimized scanner UI.

The feature can also be enabled for barcoded shipments and items, but use it with caution!

Update Impact: None. This feature is disabled by default so if you wish to use it, please enable it at System > Configuration > Warehouse > Scanner > Packing > Display "Auto-Pack" Button.

Shortest Distance Allocation

While the "Cheapest Total Cost" algorithm is extremely accurate and robust, it also requires a fair amount of maintenance and setup. The new Shortest Distance order allocation algorithm is a great alternative or fallback that requires zero setup and maintenance!

The distance between each origin and the destination is computed using geographic coordinates from an extensive database of over 109,000 US cities, over 41,000 US zip codes, and about 1.9 million cities and towns across the rest of the world.

Like the others, this allocation algorithm works with the Single Warehouse option as well as Static and Dynamic allocation.

Update Impact: None. Your configuration will not be updated to use this feature automatically, but it is encouraged to audit your configurations and use it as your primary or secondary allocation algorithm depending on your needs. Note that "Simple Cheapest" was relabeled to "Cheapest Total Cost" and "Simple Fastest" was relabeled to "Fastest Transit Time", but the codes for these were not changed so no existing integrations or scripts will be impacted.

USPS Ground Advantage

As you are surely aware if you are a USPS customer, USPS consolidated their First Class Package and Parcel Select services into Ground Advantage along with a few other changes. We've updated all USPS and USPS-last-mile services to account for these changes without requiring any changes for you!


  • Relabeled "USPS Parcel Select" to "USPS Ground Advantage" for the "usps_US-PS" service code
  • Ground Advnatage surcharges are applied to USPS First Class
  • Updated max days in transit to 5 days
  • Updated surcharges to match published surcharge rates

UPS SurePost

  • International weight surcharge threshold reduced from 70 to 55 lb
  • Added max days in transit
  • Added validation and surcharges according to the SurePost Terms and Conditions

FedEx Ground Economy

  • Changed max days in transit for FedEx Ground Economy from 14 to 7


  • Added Ground Advantage service code, behaves the same as Parcel Select
Update Impact: None. These changes were already backported to 2023.2. No service codes were changed. However, it is recommended to cease using USPS First Class for parcels in favor of USPS Ground Advantage as it is unclear for how long it will be supported in the future.

Technical Contact

We've added a Technical Contact section to the system configuration where you can provide a name, email address and Slack-compatible webhook URL to receive automated notifications about technical matters such as failing webhooks.

This configuration can be set at both the global and merchant scope. For 3PLs, this means you can easily control whether the notifications are sent only to your internal team, to the merchant's technical contact, or both.

Slack-compatible Webhook URL

In addition to emails, you can send webhooks directly to a Slack channel or any other web URL for immediate visibility for your team.

Update Impact: None, since this field is empty by default. However, it is strongly recommended to at least set a global-scope technical contact so that someone is receiving important notifications.

Webhook Health

Easily get a picture of the health of your webhooks and see detailed error messages for recent errors. Additionally, repeated webhook errors will be reported to the new Technical Contact (described above) before being throttled after one hour and deactivated after one week.

Update Impact: None, unless you have chronically failing webhooks, in which case they will be deactivated after a week of continual failures.

Edit Package Permission

The pencil icon on the Packing UI allows a user to make advanced edits to the scanned items for a package. This can be useful but can also provide packers with a bit too much freedom. We've added a new user permission at Scanner > Packing > Edit Packages which is now required to have this capability.

Update Impact: A new permission was made available but this is not automatically added to existing user roles. You must add this role resource to the user roles where the old functionality is still desired.

Reject Packages Exceeding Max Rate Table Weight

Although a carrier may accept packages over their standard dimensional weight limit (at the expense of paying an oversize surcharge), you may wish to simply reject a shipping method when the package's dimensional weight exceeds the highest table value. Users can now choose how to handle when the max weight in a rate table is exceeded with the "Max Weight Exceeded" option on Rate Plans.

  • Use max value: The value for the heaviest weight will be used.
  • Reject with error: An error with the message "The billable weight exceeds the highest value in the rate table." will be thrown to prevent the shipping method from being used.
Update Impact: None. Existing rate plans are set to "Use max value" which mirrors the old behavior. However, you may want to audit your rate plans and change them to "Reject with error" as appropriate.

Excel Workbook Format

We've updated our Excel formatted exports from the ".xml" format to the more common ".xlsx" format along with some nice user experience improvements:

  • First row is styled differently and in a "freeze pane"
  • Dynamic column widths to avoid cut-off text
  • Proper date, number and percentage types with common formats applied
  • Long numeric text and text with leading 0s is not converted to numbers
  • Removed the leading "x" on tracking numbers for Excel exports as it is no longer needed. It is still added for CSV exports to avoid issues when opening CSV files in Excel.
Update Impact: The old "Excel XML" format was removed as it was inferior to the new format. The new format is compatible with all versions of Microsoft Excel from 2003 and up and nearly any other program that can read common spreadsheet files.

Bulk Order Submission

A lot goes on behind the scenes when submitting an order and submitting orders one by one has some technical challenges. So, we now provide you with an alternative in the event you have a large volume of orders to submit all at once, the order.bulk_create API endpoint! With this endpoint you will still receive real-time detailed information on validation errors and rejected orders if there are any, but the total throughput will reach over 1,800 orders per minute!

Our single-order endpoint received a small boost in performance as well, but the new endpoint is the way to go for the highest throughput.

See the documentation for the new Merchant API endpoint here.

Update Impact: None. If you submit orders in bulk it is recommended to use this new endpoint for improved performance.

Other Improvements

Most of the following bug fixes and minor improvements have already been backported and deployed to the previous release, but are documented here for the record.

Device Hub

  • Display the machine WAN IP in the machine list and in a tooltip.
  • Allow the Select a Machine list to be filtered by WAN IP address.
  • Allow upgrading or downgrading to any version via the Update Center.
  • See Device Hub Client Updates for more information on updates to the client software.


  • Improved overall batch generation time and fixed slow batch generation time when batch total volume is almost exactly the maximum volume.
  • Fixed an issue where not all shipments that could be added to a batch were added because of burn order conflict during optimized location selection.
  • Added the "Cart Type" that was used to create a batch to the Picking Batches grid and the batch page.

Order Management

  • All fields on the Order Options and Order Shipping Information edit forms are now saved to the order history when updated.
  • Text describing Packing Instructions updates are now saved to the order history when updated.
  • The Backorder Policy option "Up to X" now counts the number of target ship dates in each warehouse instead of the number of shipments, allowing for this feature to work as expected for orders that already require multiple shipments due to size.
  • Added a "Regenerate Order Shipments" mass action to the Shipments grid.
  • Fixed a bug where the order status would not change upon becoming backordered with all current shipments packed. Processing is now always used if any item is actively being fulfilled. Partial Backorder is now only used for orders with no items actively being fulfilled.
  • Fixed a bug where an order does not advance to Complete after canceling unfulfilled items while the order is On Hold.
  • Fixed an issue with validation for a BOM order that has been shipped, reverted, and then canceled.
  • Fixed long wait times caused by lock contention and slow processing when reverting a large number of shipments with a mass action.
  • Improved ability to avoid "The order cannot be changed because it depends on a Bill Of Materials that has been changed or deleted."
  • Added search capabilities to the Packing Solution column on the Shipments grid and included this column in exports.

Scanner UI

  • Fixed Packing UI cannot finish packing when shipment contains a BOM product that has different Packaging features for the parent and child items.
  • Fixed a Packing UI issue where a shipment with multiple One Scan Per: Order Packaging Features only triggered dialogs for the first Packaging Feature.
  • Fixed error thrown when trying to relocate or transfer inventory that has invalid lot data.
  • Fixed an unexpected error in the Packing UI related to packing solution containers validation and quantity of items and identical containers.
  • Fixed an invalid application of Packaging Features with "Apply Only to Packaging Type: Overbox" which may appear on packages that do not have or require an overbox.
  • Fixed an issue with sealing manifests whereby the manifest was sealed successfully but not saved properly when the user's selected printer was offline.


  • Implemented support in SPS Commerce integration for the PhysicalDetails/PackQualifier elements to be used to auto-convert the referenced product to the intended product using the available BOMs. For example, an order for 20 units of a product that is packaged in cases of 10 when specified with an "outer" pack of 10 would result in the order item being for 2 units of the "case" SKU instead of 20 units of the "each" SKU.
  • Changed the Amazon Merchant Fulfillment logic so that the order_item_ref is not assumed to be correct but is only used if it can be fully validated as one of the order item ids on the order.
  • Implemented full support for Limited Quantity, Lithium Batteries and Dangerous Goods with USPS and DHL when using EasyPost and eHub to the extent supported by those services.
  • The output from print() statements in "Order Transform Scripts" is now captured and added to an order comment when the order is placed successfully.
  • Fixed notification emails were not being sent for Global Integration errors.
  • Updated Shopify integration to use REST/GraphQL API version 2024-01.

Other Improvements

  • Added filter and sort capabilities to the Rate Group Plans grid on the Edit Rate Group page.
  • Added filter and sort capabilities to the Shipping Accounts grid on the Edit Shipping Account Group page.
  • Improved optimization of pick locations when a product has multiple eligible locations.
  • Attributes on the 'Update Attributes' mass action form are now sorted the same as when editing an individual product.
  • Added a "425 Too Early" error page when a user's concurrent connection limit is exceeded to differentiate from "503 Service Temporarily Unavailable".
  • Updated Spanish translations.

Other Bug Fixes

  • Fixed filtering by Merchant on the Product BOM component grid export.
  • Fixed display of non-numeric order numbers in BFO grid.
  • Fixed filtering by the warehouse column on the Lots grid.
  • Fixed conversion of measurement units for imports on instances with non-imperial default units.
  • Fixed inventory snapshots broken for very large warehouses.
  • Fixed display of username who created inventory snapshots when filtering by merchant.
  • Fixed unexpected error when using an invalid regular expression in a grid filter.
  • Fixed batches not being filled with the maximum number of shipments in some cases (related to burn order restrictions).
  • Fixed lot data not being reprocessed when the lot type is changed via mass action.
  • Fixed an issue with creating Client User Roles.
  • Fixed an issue with the Back button while on the Tracking tab.
  • Fixed some issues with various grid column sort orders not applying.
  • Product barcodes that are the same length as UPC but do not have a correct check digit are now encoded with Code128 instead of UPC-A encoding.
  • Fixed a page redirect issue when encountering an error on the FedEx "Generate Certification Labels" page.
  • Fixed various randomly occurring deadlocks resulting in "An unexpected error has occurred." errors.
  • Disabled "Select All" if the grid count query times out.
  • Fixed slow add/remove package from manifest operations as manifest package count grows to large numbers.
  • Fixed some errors allowing a product to be disabled when it should not have been allowed and unlink disabled products from locations and prevent disabled products from being assigned to a location.
  • Fixed a bug that could occur when unlinking a product with lot tracking from a location and then linking another product without a lot to the same location.
  • Fixed a bug preventing users from creating new User Roles under certain conditions.

Merchant API Changes

  • Added inner_qty and outer_qty parameters to order.create API. This supports automatic conversion of order items to the appropriate SKU based on the BOMs available.
  • The order:completed webhook topic will now fire only when the order reaches the Completed status (which will not occur while there are packages in Tracking Required status).
  • Added order.bulk_create endpoint.

Grid Changes

  • Added Packing Solution column to Shipments grid exports.
  • Added Cart Type to the Picking Batches grid.

How did we do?

Version 2024.1

Version 2023.2