Release 2026.06-R2

Updated September 28, 20266 min read

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_attributes is 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_scopes replaces attribute_entity_type, and indexed is 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 return key_milestones, with the dates the order was first cancelled, fulfilled and closed.
  • Allocation failures. auto_allocation_failed moves from the order to each fulfillment order. Fulfillment orders also return allocation_summary, and their line items return allocation_failure_reason.
  • Cancellation reasons are lowercase. cancellation_reason values are now customer_cancellation, auto_allocation_failed, inventory_out_of_stock, staff_error, payment_issue and other. Requests with the uppercase values are still accepted.
  • Cancelling an order keeps each line item's quantity. Carriyo no longer moves the quantity into removed_quantities. The fulfillment order line items are cancelled as before.
  • Fulfillment order IDs. Order create requests no longer accept fulfillment_order_id on 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.