Release 2026.06-R2
Released June 23, 2026.
Custom attributes for orders, products and returns
Custom attributes are no longer limited to shipments. Each attribute now has one or more scopes: Orders, Products, Shipments and Returns.
- In the Dashboard: Settings > Administration > Shipment Attributes is now Settings > Administration > Attributes. Pick the scopes when you create an attribute, and filter the list by scope. Existing shipment attributes get the Shipments scope, and existing product attributes the Products scope.
- Orders. Set order and line item attributes when you create an order. They show on the order page in a new Attributes tab.
- Products. Product attributes fill in the line items of new orders and the items of new shipments. Items that already carry attributes keep them.
- Order to shipment. When an order or a return request creates a shipment, Carriyo copies over the attributes that also have the Shipments scope.
- Import and export. Order import and order export include one column per attribute, for the order and for its line items.
Via the API:
custom_attributesis new on orders, order line items, products, return requests, return items and shipment items.- Carriyo validates the values against the attribute's scope and type. Free-text values can be up to 1,000 characters (previously 500).
- On the custom attributes endpoints (
/attributes),attribute_scopesreplacesattribute_entity_type, andindexedis removed from the response. - You can't delete an attribute that an automation rule, service level rule or costing rule uses. The error names the rule.
Redesigned order page
The order page has a new layout. A header shows the order status, total, fulfillments, payment status and promised delivery date, with the customer and ship-to address alongside.
- Timeline. A stepper shows the order's progress: placed, paid, fulfilling or fulfilled, shipped, delivered and closed. Cancelled and on-hold orders show that step instead.
- Alerts. Cancellations, failed allocations and failed delivery attempts appear at the top of the page. A failed allocation shows the reason, for example items out of stock or excluded by allocation rules.
- Tabs. Fulfillments, Shipments, Items, Customer, Payment, Attributes and Activity. The Customer tab lists the notifications sent to the customer.
- Change fulfillment location. The dialog shows whether each location has the items available, partly available or unavailable.
- Actions. View Customer Tracking Page opens the tracking page for the order.
Update orders by bulk import
The order import can now update existing orders as well as create new ones. When you import a file, choose Create Only, Create and Update or Update Only.
Only orders in Open, Partially Allocated or Allocated status can be updated. Orders created by the Shopify connector are left out of updates. The import template now uses the current order fields.
Orders API changes
- Status dates. Orders, fulfillment orders and fulfillment order line items return
status_update_date. Orders also returnkey_milestones, with the dates the order was firstcancelled,fulfilledandclosed. - Allocation failures.
auto_allocation_failedmoves from the order to each fulfillment order. Fulfillment orders also returnallocation_summary, and their line items returnallocation_failure_reason. - Cancellation reasons are lowercase.
cancellation_reasonvalues are nowcustomer_cancellation,auto_allocation_failed,inventory_out_of_stock,staff_error,payment_issueandother. Requests with the uppercase values are still accepted. - Cancelling an order keeps each line item's
quantity. Carriyo no longer moves the quantity intoremoved_quantities. The fulfillment order line items are cancelled as before. - Fulfillment order IDs. Order create requests no longer accept
fulfillment_order_idon fulfillment orders. Carriyo assigns it. - Address clean-up. Order addresses now get the same clean-up as shipment addresses. Phone numbers are converted to international format and emails are trimmed. UK postcodes are formatted, non-breaking spaces are replaced, and empty coordinates are dropped.
Order notifications on the Open trigger now also send for orders in Allocated status.
Delivery estimates on the shipment page
The shipment page now also shows the Carrier Provided Estimate, the delivery date the carrier estimates. It sits next to the AI Generated Estimate. The carrier estimate is hidden once a shipment is delivered, cancelled or returned.
After delivery, the status stepper keeps showing the Promised Delivery Date, labeled Revised Promise when the promise changed.
Via the API: Carriyo now saves the AI estimate when a shipment is booked, in post_shipping_info.ai_estimated_delivery_date. It needs the pickup and drop-off country and city, and the payment mode.
Commercial invoice webhook
Shipment webhooks have a new trigger, Commercial Invoice is generated. The webhook trigger is commercial_invoice_update.
It fires once a commercial invoice is available for the shipment. For carriers that issue their own invoice, Carriyo waits for the carrier's invoice. For other carriers, it sends Carriyo's commercial invoice. Turn it on under Settings > Webhooks.
The reason code trigger list in webhooks also gains Customs Clearance Issue.
Shopify: create shipment on fulfillment
The Shopify connector has a new setting, Create Shipment on Fulfillment, under Settings and Options. It is on by default, which keeps today's behavior.
Turn it off to have Shopify fulfillments mark the Carriyo fulfillment order as fulfilled without creating a shipment. Find it under Settings > Connectors.
Also in this release:
- Point-of-sale orders that have a customer shipping address are now treated as delivery orders, not customer collection.
- When a shipping address is added to a Shopify order later, Carriyo updates the fulfillment order's delivery address.
New carriers: Gophr and TamShaheen
- Gophr. Same-day courier delivery in the UK, for forward and return shipments. Set the API key, the default Vehicle Type (bike to large van), and whether the courier captures a photo or signature at pickup and drop-off.
- TamShaheen. Set up with an API key and your TAM Express store code, service ID and branch ID.
Find both under Settings > Carrier Accounts.
Carrier updates
- FedEx. The FedEx® Compatible Customer setting is removed. Carriyo sets it from the account type: on for live accounts, off for test accounts. Consolidation Type, Clearance Facility Location ID and Print Return Label are now set after the carrier account is created.
- Consolidated shipments. Manual carrier confirmation of a consolidated parent (
POST /shipments/{shipmentId}/manual-carrier-confirmation) now fails if any child shipment is not yet booked or ready to ship. The error lists those shipments. Reprocessing a parent that the carrier already accepted continues that booking. - iMile. Drop-off notes are sent to iMile with the booking.
- RLM. Carriyo saves the vehicle type RLM sends with status updates. It shows as Vehicle Type on the shipment page and in
post_shipping_info.vehicle_type. - Onfleet. Completed return tasks now mark reverse shipments as delivered, and failed return tasks as a failed collection attempt.
Skip phone validation in bulk actions
The bulk Confirm, Retry and Reassign dialogs in the shipment list have a Skip phone number validation switch. The carrier account list in bulk reassign now shows only the accounts available to each shipment's merchant.
Uploadable documents
Under Settings > Administration > Documents, Custom Documents is renamed Uploadable Documents. The upload dialog on the shipment page uses the same wording.
Carriyo MCP server
The order tools use the new lowercase cancellation reasons. cancel_order and cancel_fulfillment_order_items take them as input, and list_orders filters by them.
Fixes
- Address codes, such as the Saudi short code, no longer fail validation when they contain invisible characters copied with the text.
- On a phone, the shipment list filters no longer cut off status options. The filter drawer adds Shipment Type and a condition (is, is not, is blank, is not blank) for each filter.
- Delivery options requested from Shopify checkout now pass the cart's line items to Carriyo again.
- When the email verification step at sign-in expires, the sign-in page now says so and asks you to sign in again.