Table of Contents
- Pick Single Shipment or Order
- Partial Pick
- Skip Pick
- Internationalization and Localization
- Spanish Translated Scanner UI
- OnTrac Integration
- Shipper Contact vs Origin Address
- "Unable to Process" Order status
- "International" column for Shipments and Packages
- Shopify Plugin Improvements
- Other Improvements
- API Changes
- Grid Changes
Version 2021.3
Updated by Doc
- Pick Single Shipment or Order
- Partial Pick
- Skip Pick
- Internationalization and Localization
- Spanish Translated Scanner UI
- OnTrac Integration
- Shipper Contact vs Origin Address
- "Unable to Process" Order status
- "International" column for Shipments and Packages
- Shopify Plugin Improvements
- Other Improvements
- API Changes
- Grid Changes
Pick Single Shipment or Order
Picking a single shipment is now much easier! From the Picking page you can scan a packing slip whether or not it belongs to a batch and tap "Pick Single Shipment" to instantly compose a new batch containing just one shipment and go straight to picking it. When picking a batch with only one shipment you will also no longer be required to scan a Cart Location to confirm your pick.
Scan and immediately pick a Shipment that doesn't belong to a batch:
Or extract and start picking a single shipment from an existing batch:
Partial Pick
If you need to make multiple trips to complete a pick you can now tap Partial Pick and count a number to be picked so that you can pick just what you need and return to pick the remainder later.
Skip Pick
If for some reason you are unable to pick an item you can tap Skip Pick to go to the next pick and the skipped picks will be pushed to the end of the queue.
Internationalization and Localization
ShipStream now supports configurable user-selectable locales affecting number formats, date formats and translations!
You can set a different default timezone, locale, unit of weight and unit of length for each merchant so that their client portal appears in their preferred locale. If allowed, users can also enter product dimensions and weights using the units of measure they prefer for each product.
Language switcher:
All areas regarding units of measure now support the common metric system units which you may choose to allow or not allow. If only one unit of measure is allowed the units will be displayed without an input element.
Product weight and dimensions with multiple options:
Spanish Translated Scanner UI
Hola! We've completed our first translation of the complete Scanner UI for the "Spanish (Mexico)" locale!
OnTrac Integration
We are happy to announce that OnTrac is now an officially supported carrier! The OnTrac integration is fully featured and includes shipping label generation, tracking, manifesting and rate shopping with the same easy-to-use and seamless functionality that ShipStream users enjoy with the other carriers!
Shipper Contact vs Origin Address
You can now configure a completely different address for the Shipper Contact (per-merchant/brand) and the Origin Address (per-warehouse). This allows you to print any address on the shipping label which is also often used as the return address while still submitting an accurate origin address so that rating and billing is not negatively impacted.
"Unable to Process" Order status
In situations where an Order cannot be processed into Shipments, the order status will be changed to "Unable to Process" and an email notification sent if configured. Making it much easier to identify the orders that may require additional attention, so that they are not easily overlooked.
Some reasons this error may occur include:
- A Bill of Materials component that must be picked is missing a barcode (rendering it unpickable)
- An international shipment contains products which are missing attributes required by customs
- An international shipment is missing a valid phone number and there is no fallback number
- An error was thrown by a Preprocess Packing Solution Script
- Any reason which makes the shipping method chosen invalid for the order
When the error is resolved simply "Unhold" the order to cause it to be reprocessed. Other automatic holds such as "Invalid Address" will take precedence over this error state.
"International" column for Shipments and Packages
In a multi-national environment an Order may or may not be international depending on where it ships from so special requirements for "international" orders are now only enforced on shipments. This determination is now also persisted as a filterable grid column on the Shipments and Packages grids and an "is_international" property is available to the API, Preprocess Packing Solution Scripts and Picking Class Matching Scripts making it very simple to identify and isolate international shipments regardless of where your warehouses are located.
Shopify Plugin Improvements
- Add support for "Private apps" mode with access token (OAuth disabled)
- Fix OAuth flow when triggered by Shopify "Public app" listing page
- Push Tracking URLs to Shopify for better compatibility with less commonly supported regional carriers custom carriers.
- Avoid falsely reported plugin errors by ignoring zero adjustments (virtual inventory SKUs)
- Do not attempt to update inventory for products where Shopify has duplicate SKUs
- Look back 10 extra minutes for old orders to account for potential replication lag
- Fix webhook url validation improperly reporting invalid webhooks in connection status
- Remove unnecessary postal code validation from Shopify plugin to support countries that do not require a postcode
Other Improvements
Shipping Integrations
- Add 'International Duties and Taxes Payor' configuration option for UPS
- Allow 'International Duties and Taxes Payor' to be overridden via Other Shipping Options
- Support UPS Consignee Billing option via Other Shipping Options
- Support UPS Carbon Neutral shipping via Other Shipping Options
- Add 'Allow ORM-D/LQ/SQ via UPS SurePost' configuration to prevent unauthorized shipping by SurePost if not supported
- Prevent regulated goods from shipping via UPS Ground to Alaska and Hawaii
- Support advanced Electronic Export Information filing (Export Compliance) for UPS and FedEx via Other Shipping Options
- Fix false error with FedEx SmartPost and UPS SurePost for non-US Post Office addresses
- Fix tracking popup with UPS shipments
- Add Carrier Service Status test for UPS
- Add max dimension check for USPS First Class and First Class International
- Fix the UnitPrice and CustomsValue submitted to FedEx when a Customs Value is submitted at the order level (override product Customs Value USD)
Shipping
- Improve address validation for General Delivery addresses
- Apply full shipping method validation every time before shipping method is changed
- Enforce goods type validation on final packing submission
- Improve error message when "allowed_stock_ids" does not contain allowed warehouses
- Increase Paccurate timeout to accommodate Packing Solutions for larger orders
Order Management
- Improve order history comment when address is classified
- Improve order History when an order is placed on hold
- Add missing 'Desired Delivery Date' field in client UI shipping options edit form
Inventory/Products
- Update
updated_at
timestamp when user uses "Unlink Products" mass action - Support importing of Dangerous Goods product attributes using Import Task
Deliveries
- Automatically add tracking numbers from Return Labels to associated ASNs and RMAs and add Tracking Numbers column to Return Labels tab
- Fix client UI was unable to add comments to deliveries
Plugins
- Do not show plugin error notification for clients unless user has permission to access errors grid
- Plugin events, webhooks and other internal events use more retries over a longer period with approximately exponential back-off
Scanner
- Improve carrier logo presentation in Loading UI on narrow screens
- Skip final 'Load Manifest' step for 'Truck/Trailer' Manifest Container Type
- Fix 'Require Packaging Scan: No' when used in combination with Packing Solutions
- Added "Pick Quantity" to Locate Item screen so the user can preview the number to be picked
Rating
- Copy "Rate Plans" when duplicating a Rate Group
- Allow rates to be resolved even if there are errors resolving individual allocations (a carrier is only valid from one warehouse and not the other)
- Expected inventory will no longer be considered as already available for rate quoting
- Fix rated package total weight was not including container weight
- Fix DAS was not being added to rate quotes
- Increase number of digits supported for surcharges
- Use the Default Cutoff Time for all carriers that cannot resolve a specific cutoff time (e.g. External Shipping Methods)
Other
- Multiple improvements to import tools for Location, Racks, Zone Maps, Zones
- Support importing Excel files with hyphens in dates in Import Task imports
- Remove "Ref" from default shipping label reference when Order # is used as reference number (Order Ref # is not specified)
- Remove 'Automatic Carrier Fallback' feature
- Prevent password managers from inadvertently filling or clearing password fields in configuration
- Improve performance for various operations but in particular sealing large manifests
- And 19 others
API Changes
General
- All
null
values specified for datetime fields are no longer converted to unix epoch, they are leftnull
Deliveries
- Added a new method
delivery.update
to update delivery attributes and add or remove items - The
delivery.search
method now returns new fields:delivered_at
ready_to_process_at
processed_at
putaway_at
tracking_numbers
as an arraycontainers.$.weighed_at
timestamp in ISO format
- Add support in
delivery.search
for filtering bytracking_numbers
- Delivery
container.contents
is no longer serialized, the unserialized data is returned instead
Orders
- The
order.unhold
API method will throw an error if an order could not be unheld due to a processing error (see Unable to Process).
Shipments
Add tracking_urls
to shipment:packed
webhook payload
- Add
url
totrack:created
webhook payload - Add
service
toshipment:packed
,shipment:reverted
andtrack:created
webhook payloads
Products
- Allow filtering by
external_id
inproduct.search
API method - Added a new webhook topic
product:sku_changed
to notify when a product's SKU has changed
State
- Add
$detailed
parameter tostate.get
method to get state details (update count and timestamp) - Add
$ifEquals
parameter tostate.set
method to only update if the current data equals the provided value
Scripts
- Standardize handling of JSON fields in scripts: empty JSON fields will always be empty objects
- Always initialize
order.options.instructions
to be an array to simplify adding Packing Instructions through scripting
External Shipping Methods
- Add
other_shipping_options
to External Shipping Method payload - Add
_unit
suffix field with new units of measure (_units
suffix is kept for backwards compatibility)
Grid Changes
- Increase max export file size to 500MB and 3 million rows
- Add 'Priority' column to Orders grid
- Update Collected Data grid for consistency with other grids:
- Added 'Warehouse'
- Shipment Increment -> Shipment #
- Order Increment -> Order #
- Order Ref -> Order Ref #
- Added 'International' column to Shipments and Packages grids and exports
- Updates to Product grid:
- Strip "Qty" from labels
- Add Expected to UI and export
- Processed and Put-Away already existed in export, add them in UI
- Add On Hand to UI and export
- Move Backordered before all other qty columns
- Updates to Packaging Features grid:
- Strip "Qty" from labels
- Add Expected to UI and export
- Processed and Put-Away already exist in export, add them in UI
- Add On Hand to UI and export
- Add "Shipment Items" export type for Shipments grid in Client UI
- Added Lot Type "Allow Mixing Locations" and "Allow Mixing Fulfillment" grid columns
- Add ID column to Lot Types and Regulations grids
- Add 'Delete' mass action to Packing Solutions grid
- Fix 'Lot Number' and 'Target Ship Date' column in Shipment Items Lots/Expirations export
- Fix unassigned lots not showing on Lots grid with 'Show data from all warehouses'
- Fix filtering Scripts grid by '--All Merchants--'