Changelog

Stay up to date with the latest updates, features, and improvements to Endless Commerce.

Category
Type

Showing 222 updates

Improvement
Supply

Purchase Orders And Shipments: Faster Detail Pages

Purchase Order and Supply Shipment detail pages load faster across the app, and the improvement is biggest on large documents — pages that used to take several seconds now open quickly no matter how many line items they have. Product names, images, and cost totals appear together instead of trickling in row by row, with no change to the numbers themselves.

Feature
Sales

Report & Reship, And More Control When Duplicating An Order

Report Issue — the action for flagging an operational problem on an order, which tags the order, adds a note, and can alert your ops team in Slack — can now reship in the same step. Tick "Reship order?" in the Report Issue dialog and the button becomes "Report & Reship": the report is filed, then a Duplicate Order dialog opens already filled in, with the new order number suggested as the original plus an -R suffix and a reship tag applied (for example, OPS - Reship - No Movement).

Duplicate Order also gains more control on every entry point, not just from reship: a sales channel selector — defaulting to the source order's channel, so you can send a duplicate to a different channel and keep channel reporting clean — and an additional-tag field that adds a tag to the copy alongside the ones it carries over. Reporting an issue also works on every order now; it had been failing on some newer orders, and that's fixed.

Improvement
Supply

Supply Shipments: Detail Page Refresh

The Supply Shipment detail page is refreshed to match the Purchase Order redesign. Destination is an always-available sidebar selector — building, location, or a custom destination — that saves automatically, and closed shipments show it read-only. The item table folds the product image into the details column, keeps the purchase-order grouping, and moves sorting into Actions → Sort. Status changes live under a single "Change Status" action with everything else in a three-dot menu, and the tabs are more compact, with document and note counts and a dedicated Notes tab.

Feature
Sales

Fulfillments: Change The Fulfillment Integration From The Fulfillment Itself

You can switch a fulfillment's fulfillment integration directly from the fulfillment. A small edit modal lets you pick a different integration and save without dropping into the underlying order or rebuilding the fulfillment. Useful when an order lands with the wrong integration attached and needs to move without a full recreate.

Improvement
Sales

Fulfillment Orders List: Much Faster To Open

The Fulfillment Orders list opens quickly now, even for companies with a huge number of fulfillments — on the largest accounts it went from tens of seconds to roughly a tenth of a second. Only the page you're looking at is loaded, rather than the whole company's fulfillments, and the rows appear as soon as they're ready while the total count fills into the pagination bar a moment later. The header count is the real filtered total, blocker details load when you open a status instead of on every page load, and switching sort stays fast.

Improvement
Products Inventory

Ordered Quantities: Faster For High-Volume Products

Ordered-quantity calculations return much faster for products with a lot of order history. The query for a hot SKU used to take around 20 seconds and get worse under load; it now takes about 7 seconds with the same results. The V2 unassigned-quantity calculation also stopped joining every warehouse just to zero most of them out — totals are unchanged, it's just less work per call.

Improvement
Supply

Purchase Orders: Sort Line Items

You can now sort the line items on a purchase order. Open Actions → Sort, pick a column, and choose ascending or descending.

Improvement
Supply

Supply Shipments: New Received Step Before Closed

Supply shipments now pass through a Received step between In Receiving and Closed. WMS integrations (Extensiv, Gobolt, Infoplus) mark a shipment as received automatically once the downstream system reports receiving complete, so the shipment no longer jumps straight to closed while receiving finishes. Closing is now a deliberate manual step from Received, which keeps Closed as the finalized state you commit to when you're done.

The timeline, status badges, filters, and shipment status groupings all pick up the new step. Cancelling from In Receiving and Received is allowed. A shipment needs at least one item and a destination to enter Received.

Improvement
Supply

Purchase Orders: Filter By Status On The List

The Purchase Orders list has a status filter — draft, issued, in production, in transit, delivered, closed, canceled — matching the status lifecycle the PO detail page already used. The old "approved" filter, which never quite worked, is gone.

Fix
Integrations Sales

Shopify Fulfillments: Archived Ones No Longer Block New Ones

Creating a new fulfillment on a Shopify order no longer fails when the order has an archived fulfillment sitting behind it. The next per-order fulfillment index now looks across archived rows too, matching the database uniqueness rule, so the new fulfillment picks an unused index instead of colliding.

Feature
Platform

Cmd-K: A Global Actions And Search Palette

Cmd-K (Ctrl-K on Windows) now opens a global palette across the app. It searches actions, navigation, and recently-viewed entities from anywhere. Anything you can trigger with a button on a page shows up in the palette too, grouped under "On this page" for the entity you're looking at, so common actions — duplicate an order, change sales channel, link a product — are one keystroke away. Destructive actions still go through their confirm modals; the palette is a faster way to reach an action, not a way around the safety net.

To use it, press Cmd-K from anywhere and start typing. The palette filters as you go across three kinds of result: actions for whatever you're currently looking at (grouped under "On this page"), places to navigate to, and records you've opened recently. Arrow keys move through the list and Enter runs the highlighted result, so you can jump to a record or fire a common action without leaving the keyboard or hunting for the button.

Feature
Integrations Products

Custom Product Integration

You can now set up a Custom Product Integration to write catalog data into Endless the same way our built-in product connectors do. It behaves like a Custom Sales or Custom Fulfillment integration — Endless provisions an access token, API key, and API secret — but the scope is product data: attributes, media, and inventory. Use it to feed the catalog from a system we don't have a first-party connector for, without a bespoke build. It shows up under Custom Integrations in the integrations picker alongside Custom Sales, Custom Fulfillment, and the Read-Only Data Integration.

Improvement
Sales

Fulfillments: One Creation Menu, Items In The Dialog, Automations Warn Ahead

The fulfillment creation experience on a sales order is now one coherent workflow. A single Create Fulfillments menu offers three ways in — Choose Building, Use Strategy, or Add to existing — and item selection has moved into the creation dialog itself, defaulting to all unassigned items with per-line quantity editing, removal, and building-specific availability shown inline. The menu stays hidden while the order is still a draft.

Automations are surfaced before they run: creating a fulfillment, applying a routing strategy, or assigning a fulfillment rule now warns you about active automations that will fire as a result, so nothing runs behind your back.

Improvement
Sales Products

Order Items: "Not In Catalog" Badge Opens Link Product

The "Not in Catalog" status badge on an order item is now clickable and opens the Link Product action directly. Before, that action lived behind the item's edit menu and then a three-dot menu, so most people never found it. Clicking the badge takes you straight there.

Feature
Supply Inventory

Supply Shipments: Track Lot Numbers On Items

Supply shipment items now carry a lot number, so one PO line can be split into multiple shipment rows — same SKU, different production batches — each with its own quantity and its own lot. Assign lot numbers when adding items to a shipment, edit or split an existing line across lots, and filter shipments by lot number from the list. Lot-aware product costs surface on rows where they're relevant. Coverage math sums per lot bucket, closing a case where two lots on the same PO line collided and one row's quantity silently vanished from the totals.

WMS/ASN payloads and lot-aware inbound sync aren't wired yet — those follow once the WMS side sends a lot identifier.

Improvement
Integrations Sales

Orders: EDI Documents Live On An EDI Tab

For EDI orders, the EDI document list, create, and deliver flows now have their own "EDI" tab on the order page, alongside Sales Order, Fulfillments, and Timeline. Same documents and actions as before, just easier to find. The tab appears only when the order is actually an EDI order — other orders don't get it. The old hidden /edi URL, which nothing linked to, is gone.

Fix
Sales

Fulfillments: Failed Ones Can Be Cancelled

A fulfillment stuck in Failed To Fulfill can now be cancelled. Cancelling first walks the fulfillment back to draft so allocation unwinds cleanly, instead of erroring on the state check and stranding the fulfillment.

Feature
Integrations Platform

Custom Data Integration: Read-Only Access For Downstream Tools

You can now create a Custom Data integration that reads your Endless data — products, prices, orders, inventory, warehouses, purchase orders, suppliers, customers, accounting, ASNs, automations, and more — without being able to write anything. Set it up from the Integrations page, hand its credentials to a reporting tool or a data warehouse, and it sees your data end-to-end but can't change it.

The role is scoped to your company. It can't reach other tenants' data, and it doesn't have access to sensitive internal surfaces like other integrations' credentials or staff PII.

Feature
Sales

Fulfillment: Rules (Was Profiles), Now Optional

"Fulfillment Profile" is now "Fulfillment Rule" throughout the app, and rules are no longer required to process a fulfillment. A draft fulfillment can be allocated manually or have a rule applied — either works, and nothing forces you to attach one to move forward.

The fulfillment settings screens got a pass too: language across routing strategies, rules, and profiles was tightened to match how the ops team actually talks about it, informed by interviews with people who live in these screens.

Fix
Integrations Sales

Order Reset: Now Recreates Fulfillments Even If One Was Already Cancelled

Resetting a Shopify order previously left the order with no fulfillments when it already had a cancelled one. Reset only unhooked active fulfillments from the identity index, so the cancelled fulfillment's Shopify FulfillmentOrder link stayed live — the replay then resolved the FO back to that dead fulfillment and no-oped instead of rebuilding a fresh one.

Reset now clears the identity link on every non-archived fulfillment, cancelled or not, and the replay rebuilds reliably.

Feature
Integrations Sales

Orders: Reset From The App

Resetting an order — handing authority back to the source integration and rebuilding the order from what the integration currently says — is now available from the order page. The underlying reset flow shipped earlier; this puts a control on it so you can trigger it without a console.

Improvement
Supply Platform

Purchase Orders: Notes Move To The Shared Internal Notes System

Purchase-order notes now live in the same Internal Notes system every other object uses, so the notes card on the PO Details tab behaves the same way it does everywhere else in the app. Milestone progress updates stay on the milestone card and are separate from notes — the two are no longer tangled together.

Existing PO notes were migrated over with their original ids, timestamps, archived state, and author preserved.

Feature
Supply Inventory

Supply Shipments: Pick A Destination Location, Not Just A Warehouse

Supply shipments can now be routed to a specific location inside the destination warehouse, on both create and edit, from the shipment dialog and the Route & Destination card. The location picker filters to the selected warehouse, and receiving drops the inventory into that location on arrival. Leave it blank and the shipment keeps behaving the way it always has, routing to the warehouse's default location. Custom destinations that aren't a warehouse still work the same.

Fix
Integrations Sales

Walmart: Tracking Now Pushes On Fulfill Again

Shipment tracking for Walmart orders is reaching Walmart again on fulfill. When Walmart orders moved to the V2 fulfillment path, the per-fulfillment shipment-info push wasn't wired up on the Walmart integration — the way Amazon, Shopify, Rithum, and Faire were — so tracking silently stopped syncing on fulfill. The manual Push Shipment Information button was unaffected. The per-fulfillment push is now in place for Walmart alongside the others.

Improvement
Platform

Inbox: Import Notifications Show Their Full Detail

Import notifications in the inbox no longer truncate their body text, so the reason and any per-row detail is visible without having to open the source. The title stays intact, and a collapsed raw metadata panel sits underneath the download attachment for anyone who wants to look at exactly what was posted.

Fix
Supply Products

Purchase Orders: Tiered Costs Now Read The Right Tier

Product cost by quantity was treating a tier's quantity as an upper bound; it's actually the minimum quantity that unlocks the tier. A 100-unit PO against a ≥ 50 → $X tier was reading the wrong cost. It now matches the price side: the highest tier whose minimum is met wins, ordering zero returns the base cost, and same-day tiers apply immediately instead of waiting until midnight.

Fix
Products Inventory Sales

Recent Orders: Orders Without A Brand Now Show Up

The Recent Orders tab on an inventory or product detail page now filters by the linked product instead of the order's brand, so orders that don't carry a brand are no longer missing from the list. Orders you'd expect to see against a SKU show up whether they came in through a branded channel or not.

Fix
Integrations Inventory

Shopify: Future Inventory Syncs Even Without A Warehouse Row

Bulk inventory pushes to Shopify now use the integration's configured inventory destination warehouses when calculating what to send, instead of relying on a warehouse row existing for that SKU. Products that had no location row for a destination warehouse were dropping out of the future-inventory number Shopify saw; those SKUs now push a correct value on the same cadence as everything else.

Fix
Sales

Sales Orders: Next Number Picks The Highest Sequence, Not The Newest

Sales order numbers could duplicate when an older order held a higher sequence than the most recently created one. The next-number lookup used the newest order by created-at; it now uses the maximum sequence across all matching orders, archived ones included — the same approach purchase orders already use.

Fix
Platform

Invitations: Password Minimum Length Now Actually Enforced

Accepting an invitation checks the new password's length against the configured minimum. The check was in place but wired to a setting key that didn't exist, so it silently passed on anything. New passwords set through an invitation now have to meet the minimum length, matching what the sign-up form was already asking for.

Improvement
Supply

Purchase Orders: Status Drives Lifecycle, Milestones Track Progress

Purchase-order status is now the single source of truth for where a PO sits in its lifecycle — draft, issued, in production, in transit, delivered, closed, canceled. The active milestone is derived from that status rather than something you move separately: boundary statuses (Draft, Closed, Canceled) simply have no active milestone.

Milestone progress is now its own layer. You can update a milestone's progress percentage, timeline status, dates, and notes without also moving the PO to a different lifecycle status — the two used to fight each other, and now they don't. Auto-populating milestone dates has been folded into a single update mutation the PO detail page calls when it needs to.

On the PO detail page: the duplicate status-change path that lived in the status dropdown has been removed, and the milestone controls line up cleanly.

Feature
Integrations Sales

Veracore: Ship Orders And Pull Shipments Back

Veracore is now connected on the shipment path in both directions. Orders sent to Veracore for fulfillment can be shipped from Veracore and Endless picks up the shipment, and the Ship Order flow records the Veracore shipping-order id as the external reference so later polls line up. Extra carrier mappings were added alongside so more of Veracore's carrier codes resolve to the built-in list without a manual mapping.

Feature
Sales

Sales Orders: Duplicate An Order

You can now duplicate any sales order — from the order's Actions menu, pick Duplicate Order and a new draft is created from the source, however the source order was created. The duplicate copies items, quantities, prices, discounts, tags, notes, gift message, ship-to and bill-to addresses, carrier and routing selection, B2B data, and shipping and tax. It does not copy identifiers, status, or fulfillments — the source order stays exactly as it was, and the duplicate has no history of its own.

You can pick a new order number or leave it blank. If you leave it blank the number is derived from the source — ORD-1 becomes ORD-1-01, ORD-1-02, and so on — which keeps duplicates identifiable and unique within a sales channel. The dialog also gives the option to open the new draft in quick view right away. Bulk duplication is available over the API today; a bulk action in the UI will follow.

Improvement
Sales Integrations

Order And Fulfillment Instructions

Customer instructions are now called instructions everywhere. The order detail reads and writes through the new field, and fulfillment instructions behave the same way gift messages now do — a fulfillment's instructions override the order's if set, otherwise the order's instructions apply. Packing notes sent to ShipHero and Packiyo use whichever value resolves.

The older note name is kept as a compatibility alias for anyone reading or writing through it, so nothing breaks — but new integrations should reach for instructions.

Fix
Sales Platform

Orders: Sales Channel Now Locked To The Order's Own Company

An order can no longer end up carrying a sales channel from another company. A channel belonging to a different company was showing up on some orders, and the cause was two write paths letting a wrong-company channel slip through: order create/update was keeping per-request state on shared instances that leaked between concurrent requests, and the sales-channel automation action never checked the channel's owner. Both paths now scope the channel to the order's company and reject a channel from anywhere else. Already-affected orders will be corrected in a separate cleanup.

Fix
Integrations Sales

Shopify: Failed Single-Order Imports Now Surface Instead Of Silently Doing Nothing

Manually importing an older Shopify order used to look like nothing happened — no order, no error, no note anywhere. The failure was always there: Shopify blocks import of orders older than 60 days without an extra permission grant, and that failure was getting silently dropped instead of shown.

Failed imports now log a clear line against the Shopify integration explaining what happened — whether the order couldn't be found, the connection needs to be reconnected, or it's a temporary issue that will retry on its own. Actually pulling in orders older than 60 days still needs a permission change on our end — that's a separate follow-up.

Feature
Supply

Suppliers: Optional Handle

Suppliers now carry an optional handle — a URL-friendly identifier, unique per company where set. You can set it when creating a supplier (the create dialog suggests a kebab-cased handle from the name and lets you override it) and edit it later from the supplier detail page's Actions menu. Two suppliers in different companies can still share the same handle, and the field is validated to lowercase letters, numbers, and hyphens up to 50 characters. The suppliers list has a Handle column (hidden by default, toggleable from column settings), and the supplier detail page shows the handle inline in the header. Uniqueness is enforced by a partial unique index (company_id, handle where handle is present).

Fix
Integrations Sales

Amazon FBA: Line Prices Fixed And Backfilled

Amazon FBA orders now record each order line's unit price instead of unit-times-quantity. Before, a two-unit line at $10 landed as $20 per unit — so multi-unit FBA lines came in with inflated per-unit prices, which then flowed through to reporting and downstream systems. The mapper is corrected going forward, and an FBA-only backfill rake task walks existing Amazon FBA orders and rewrites the affected line prices to the right value. Non-FBA Amazon orders were not affected and are left alone.

Improvement
Sales

Edit A Fulfillment Without Claiming The Order

Fulfillment-owned details — the shipping address, carrier and service, notes, B2B info, external ID, and decompose / recompose — can now be edited without first claiming authority over the sales order. The backend already permitted these; the client was over-gating them behind the same authority as order-structure changes. Order structure itself still needs authority; only the fulfillment-scoped fields opened up.

Improvement
Sales Integrations

Fulfillments: Gift Message Inherits From The Order

A fulfillment's gift message now falls back to the order's gift message whenever the fulfillment doesn't have one of its own. Setting a gift message on the fulfillment still overrides the order, same as before. Outbound payloads to ShipStation, ShipHero, Packiyo, MasonHub, and Infoplus use whatever the fulfillment resolves to — so a gift message set once on the order shows up on the shipping label without having to be re-entered on every fulfillment split from it.

Improvement
Supply Sales

Carriers: Kingsgate Logistics Added

Kingsgate Logistics LTL Freight is now selectable as a carrier alongside the rest of the built-in carrier list. Pick it from the carrier picker anywhere a carrier is set — no SCAC or tracking URL is prefilled, so those stay editable per shipment.

Improvement
Integrations Sales Inventory

Sales Channel And Warehouse Mapping: Many Internals To One External

Multiple internal sales channels can now map to a single external store on the same integration — for example, Faire USA and Faire Canada both pointing at one "Faire" store in ShipStation. Warehouse mappings work the same way (two internal buildings, one ShipStation ship-from address). Before, the mapping refused to save with an "already mapped" error, because a defensive uniqueness rule assumed one internal per external per integration.

The mapping modals have been inverted to match. The internal value is now the row, and the external ShipStation option is the dropdown — the reverse of the old layout. That's the shape you need to have many internals pointing at one external, since whichever side owns the rows is the side you can repeat. Each internal channel or building can still only claim one external key, so mistakes like the same building mapping twice are still caught.

Feature
Platform Sales

Automations: Order Approved Trigger

Automations can now run the moment an order gets approved — the transition from draft or pending into ordered. Pick Order Approved as the trigger, and conditions and actions that only make sense after approval — checking the sales channel, applying a routing strategy — are available from the same picker. Approvals coming in through less common paths still route to the right company automatically.

Fix
Sales

Orders: "Order Created" Now Shows In The Timeline

Orders now log an "Order created" entry on their activity timeline, with the performer's name attached, the moment they're created — whether they come in as draft, pending, or ordered. Before, the timeline was blank until the first later action, so there was no record of who created an order or when. Existing orders without a create entry stay as they are; new ones from here on carry the line.

Feature
Products Integrations

Product External Identifiers: A Registry For How Partners Know Your Products

Each product now has a place to record how outside systems identify it — Amazon's ASIN, Whole Foods' UPC, Target's TCIN, and so on — kept in one registry per product rather than scattered across integration configs. On the Relationships tab of a product, a new grid lets you add, edit, and remove these identifiers, with a Linked / Unlinked badge so you can see at a glance whether an identifier is already attached to a specific connected integration or is sitting in the registry waiting to be linked. Adding one pulls the partner name straight from the connected integration you pick, previewing exactly how it will be stored once linked, and duplicate entries surface a clear message instead of a silent failure.

From the integration side, a new Link External IDs action on the integration's Actions menu opens a bulk-link modal that attaches all of an integration's unlinked identifiers at once by partner name. Linking runs as a background job, so a big backfill returns to you immediately and completes on its own. Linked rows are click-throughs — opening the connected integration in a stacked side view without leaving the product page.

Underneath, this is a first-class registry with its own permissions and audit trail; every add, edit, remove, or link event is captured. Inbound order ingest already reads this registry to resolve products from partner-supplied identifiers — see the separate EDI 850 entry — so what you curate here directly drives how partner orders find their way to the right product.

Fix
Sales Inventory

Bundles Sharing Components Allocate On A Single Fulfillment

Two lines on the same fulfillment that resolve to the same product in the same warehouse — two bundles that share a component, or a bundle plus a standalone line of that same component — now allocate together instead of stopping with a "split these items into separate fulfillments" message. The two lines are added up, allocated against the summed quantity, and split back across the lines with each keeping its own identity, and the commit that follows decrements the location once by the combined amount rather than by whichever line wrote last.

The same aggregation now runs during the availability check when you edit items on a fulfillment, so two lines of the same product whose combined increase would exceed stock are rejected together instead of each passing a check that only saw its own share.

Improvement
Products Supply

Product Costs: Lead Time Is Optional

Lead time is no longer required on a product cost. Saving a supplier cost or a purchase order cost tier without entering a lead time works — the value is stored empty rather than as a stand-in zero. If you do enter one, it still has to be a positive whole number.

Fix
Supply

Shipment Financials: Customer Admin Access Restored

Customer admins can see shipment and duties data on Shipment Financials again. After shipments moved to a company scope for multi-brand support, the financials view was still deciding access on a per-brand basis, so shipments that weren't tied to a specific brand denied access to admins with company-wide reach — sometimes silently blanking the section, sometimes surfacing a permissions error toast. Access is now checked against the company scope, matching the underlying shipment view.

Fix
Integrations Sales

Cin7 Imports Don't Stack, Rithum/DSCO Tracking Flows Back On Time

Two connected issues are fixed. Triggering a Cin7 order import while one was already running used to start another copy alongside it — repeat clicks piled up multiple concurrent imports of the same integration, each about an hour long. Cin7 imports now dedupe: a second trigger for the same integration exits immediately while the first one finishes, so re-clicking Import is safe.

That pile-up was the reason outbound shipment tracking to Rithum and DSCO had been landing hours late — the stacked imports were monopolizing the same lane the tracking pushes flow through. With the pile-up prevented, and Cin7 imports moved off that lane to join how every other integration's import runs, tracking pushes go out promptly again.

Feature
Platform

Notifications Move Into An Inbox

Notifications have their own home now. The bell inside the profile drawer is gone; in its place is an Inbox entry in the sidebar with an unread count and an active-process indicator, opening a dedicated page instead of a small drawer. Filtering lines up with the notification categories the API supports, so what you see under each filter matches what's actually there. Long-running processes still surface progress the same way — the Inbox is where you go to look through them without stacking a drawer over the app.

Fix
Integrations Sales

ShipHero: Shipment Webhooks Land On The Right Fulfillment

ShipHero shipment webhooks now match up to the correct fulfillment even when ShipHero has truncated the identifier it echoes back to us. Before, the handler only looked up fulfillments by that echoed value, so a truncated identifier meant the webhook was accepted but the shipment never got recorded — the fulfillment sat waiting despite ShipHero having sent the update. The handler now falls back to the ShipHero order id (the same one the manual "get external shipment" path already uses) when the primary lookup misses, and it tries both forms ShipHero can send that value in. Cross-integration protection is preserved: fulfillments still only resolve within their own integration.

Fix
Integrations Products

Shopify: Attribute Mapping Modal And Product Push Restored

Two problems that surfaced for tenants with more than twenty integrations are fixed. On a Shopify integration, the Manage Attribute Mappings modal — reached from Data Mapping → Product Publishing — used to open with the wrong header, no tabs, and no Fetch or Auto-Map buttons; it now opens correctly regardless of how many integrations exist. Push Product Data on a product page also now includes older Shopify integrations that were dropping off the list. Both surfaces were reading from the same integrations lookup, which was silently returning only the most recent twenty. Shopify targets that have product push turned off in their settings now show as grayed-out in the picker instead of being missing entirely.

Improvement
Platform

Sidebar: Settings And Help Move Up, Announcement Bar

Settings and Help have moved off the sidebar and into the company menu in the top-left, which frees up room for the primary navigation. A reusable dismissible announcement bar is in place at the top of the app for one-off notices, and the sidebar itself is tightened up so more of the navigation fits without collapsing groups.

Fix
Integrations Sales

Whole Foods EDI: Outbound Documents Resolve Locations Again

Outbound EDI 810 invoices to Whole Foods (and, by the same path, 855 acceptances, 856 ASNs, and 846 inventory updates) were failing whenever a template referenced a per-integration location code mapping to resolve a city or address. The lookup had been available to inbound 850 templates but not to any outbound document, so the mapping came through empty and every location field on the document blew up.

The same mapping is now available to every outbound EDI template through the single point every outbound render already goes through, so this class of failure can't resurface on another document type. If a given integration's location mapping is empty, that's still a setup issue rather than a bug — reach out and we'll help populate it.

Feature
Sales Integrations

Bulk Forward Shipments

Forwarding shipments is now a bulk action. Select a set of shipments on the shipments list and forward them all in one go instead of opening each one individually. The bulk path runs the same forwarding logic per shipment as the single-shipment action, so any per-shipment failure is reported without holding up the rest.

Improvement
Sales Integrations Products

EDI: A Round Of Improvements

A broad round of improvements across the EDI order path — from how orders come in, to how they're matched against your catalog, to how outbound documents go out.

Inbound matching and units. Inbound EDI orders now match products through the same partner-identifier registry you maintain on the product page — UPC, ASIN, TCIN, whatever the partner sends — and convert cases or inner packs to eaches automatically, using a per-partner unit-of-measure mapping so quantity and price land correctly. Those mappings now live on the integration's Data mapping tab, so you can add, edit, and remove them yourself instead of asking engineering to. A line that can't be matched or converted doesn't fail the whole order — it's flagged and held so you can finish the mapping and let it through.

Inbound carrier mapping. Incoming orders resolve their requested carrier through the same custom and global carrier mappings other integrations use, so per-brand and global mappings you've set up for a partner's carrier codes are applied on the way in. When no mapping matches, the raw external value is kept on the order so it can be resolved on the fulfillment.

Inbound B2B data. Orders created from an inbound document now carry their B2B data — label and routing flags — straight onto the order.

Outbound documents. Acknowledgments, ship notices, and invoices are flowing reliably again. Acknowledgments carry the right PO references, a class of documents that used to render empty on certain orders now renders correctly, and ship notices and invoices that had silently stopped going out after an internal migration are going out again — each ship notice tied to its specific shipment, and the invoice sent once, when the order finishes shipping. The per-partner configuration you already have still controls which documents are sent, and a document that fails to send now surfaces instead of failing silently.

Forward Shipment now works on EDI orders, and moved to the per-fulfillment action menu — click it and the same Advance Ship Notice dialog opens for review before sending. For every other integration the button behaves as before.

Behind the scenes, order shipments are backstopped so a near-simultaneous webhook can't create a duplicate, the admin bulk-deliver task sends acknowledgments alongside ship notices and invoices, and the internal tool used to author and validate a trading partner's template got a faithful live preview plus a dry run that shows exactly how an order would resolve, without touching a real order.

Feature
Inventory Integrations

Inventory Syndication: Per-Channel Sync And Bulk Controls

Inventory sync is no longer all-SKUs-or-no-SKUs on a channel. The Inventory list has a Sync tab with one column per connected sales channel, showing whether each SKU is syncing and the quantity that would push. Select rows and use Bulk Actions → Disable / Enable Inventory Sync to mark a SKU out of stock on one channel without touching its inventory anywhere else, or open an item's quickview and toggle individual channels from the Channel Sync card.

When a SKU is opted out on a channel, Endless pushes a quantity of zero on that channel; every other channel keeps pushing the real on-hand. The same SKU can be out of stock on one channel and live on another. Opt-outs take effect on each channel's next scheduled push, on Shopify, Rithum, Walmart, Amazon FBM, Faire, Sellbrite, Skubana, and Orderful.

The item detail page's Syndication card also picked up a header control that acts across every connected integration at once. A status badge reads Active, Out of Stock, or Mixed at a glance, and one button flips every channel to active or every channel to out of stock in a single call instead of toggling each row on its own. Per-integration quantities on the same card now read with thousands separators — 1,234 instead of 1234.

Feature
Integrations Inventory

Packiyo: Inventory Sync And A Warehouse Mapping Tool

The Packiyo integration picked up inventory alongside its order push. Available quantity is pulled from Packiyo on a schedule and on demand, and lands per warehouse: each Endless warehouse that's mapped to a Packiyo warehouse gets its own quantity, allocated stock keeps being layered in from Endless on top, and warehouses with no Packiyo mapping are skipped.

Setting up those mappings now has its own tool. The Data Mapping section on the Packiyo integration lists the warehouses Packiyo returned and lets you map each one to an Endless warehouse from a single screen instead of hand-editing external relations. Existing setups keep the same shape.

On the shipping side, Packiyo now uses its own carrier mapping when Endless ships an order through it, so only the shipping method name has to line up on the Endless side, and the Packiyo order push carries the Endless carrier service name on each outgoing order. A few API response fields also read back correctly now.

Improvement
Supply

Purchase Orders And Shipments: Full-Precision Unit Costs

Unit cost fields on purchase order lines and shipment product costs now show and save their full supported precision — up to four decimal places — instead of being silently capped at two. The edit box starts at two decimals and expands only when a value actually has more precision, so 10.12 still reads as 10.12 and 10.123 reads as 10.123. The read-only Unit Cost column picks one precision per column — the most precise item in the column, up to four — so every row stays aligned without hiding any item's precision. Extended cost and total columns still show at two decimals.

Improvement
Sales Integrations

Resolve Carrier Service: Save The Mapping For Next Time

When an order arrives with a carrier service Endless doesn't recognize, the Resolve carrier service dialog on the fulfillment now offers a checkbox: Map '' to for future orders. Tick it and the chosen mapping is saved as a custom carrier mapping for that integration, so the next order with the same external carrier name resolves on its own. Leaving the checkbox unchecked applies the carrier to just this fulfillment, same as before. The dialog also skips offering the checkbox if a mapping already exists for that external name. The Resolve shipping address dialog now reuses the same form as the regular Shipping Info editor, so the entry surface is one consistent surface instead of two.

Feature
Sales

Sales Orders: Create Fulfillments In Bulk

Orders that land without a routing automation used to leave you creating fulfillments one order at a time. Sales Orders now has a Create Fulfillments bulk action: select up to 50 orders, choose a routing strategy, and Endless creates the fulfillments by running that strategy across them. Orders that already have fulfillments are skipped so nothing gets over-fulfilled, and the running progress and skip summary land in the notifications toast and panel.

Feature
Integrations Inventory

ShipStation And Shopify: Map Endless Warehouses To External Locations

ShipStation and Shopify integrations can now map each Endless warehouse to a specific external warehouse or location, instead of having a single one stand in for everything.

On the Integration Data tab, the Warehouses card has a Manage Mappings action that pulls the live list of warehouses (ShipStation) or locations (Shopify) from the integration and lets you pair them up. Mapped warehouses show their external name in the card; an existing mapping can be removed in place. ShipStation orders sent out for a mapped warehouse now route to that ShipStation warehouse, instead of falling back to the integration's default. The Shipping Carriers and Sales Channels cards on the same tab were lined up with the new table layout and mapping status badges so all three read the same way.

Improvement
Products

Product Units Of Measure: More Options In The Dropdown

The unit of measure dropdown on the product page picked up a lot of new options. Weight now has Gram, Kilogram, Ounce, and Pound alongside the existing entries. Volume gains Fluid Ounce, Milliliter, Liter, and Gallon. Length and area cover Millimeter, Centimeter, Meter, Inch, Foot, Square Foot, and Square Meter. Container and grouping units — Bale, Bundle, Drum, Jar, Pair, Pallet, Roll, Sheet, Tin, Tray, and Tub — round out the list.

Improvement
Sales Integrations

ShipStation: Manual Shipment Fetch Is Logged On The Order

When you manually trigger Get External Shipment on a ShipStation fulfillment and ShipStation reports that the shipment hasn't shipped yet, that result now lands as an activity log entry on the order — so it's clear from the timeline that the fetch ran and what came back. The nightly background check keeps suppressing the same log entry to avoid noise; only the user-triggered case posts.

Improvement
Integrations Platform

EDI: Easier To Reach From Where You Work

EDI now shows up across the app instead of only on the EndlessEDI integration tile. The Orders, Channels, and Integrations empty states each include a Connect over EDI option, the Dashboard carries a small EDI card, and the sidebar footer has an EDI button. Each opens a Talk to us about EDI modal with a booking link, the EDI guide, and an email fallback.

The Integrations page also picks up a richer EDI-ready tray, opened from its empty state. The tray shows your account's ISA ID, the qualifier, and the supported communication channels, and includes a drafted retailer-outreach email you can preview and copy when you're starting EDI with a new partner.

Feature
Sales Integrations

Orderbot: Create Sales Orders By Forwarding An Email

Orderbot is a new way to capture sales orders that come in over email. Every company has a forwarding address ending in @orders.endlesscommerce.com — visible at Settings → Orderbot, on the Sales Orders menu, and as a secondary action on the empty Sales Orders state. Forward an order email to that address and Endless turns it into a draft sales order. The primary Add order button is unchanged.

Feature
Sales Platform

Automations: Assign A Fallback Carrier Before Auto-Processing

Automations have a new Assign Fallback Fulfillment Carrier Service action. It sets a carrier on a fulfillment that doesn't have one yet, leaving any fulfillment that already has one untouched. Run it before Assign Fulfillment Profile in the same automation and a fulfillment that arrived without a carrier picks up the fallback first and then auto-processes, instead of stalling because no carrier was set.

Useful when a sales channel — particularly a custom one — doesn't carry a carrier through on the order, and the same fallback applies regardless of which fulfillment profile ends up running.

Fix
Sales

Fulfillment Rules: Only The Failing Clause Shows As The Blocker

When a fulfillment-processing rule that combined several clauses — warehouse plus payment status, for example — failed, the order's status was listing every clause the rule had checked, including the ones that actually matched, as a blocker. That made it look like the matched warehouse was holding the order when the real blocker was elsewhere. The label now calls out only the clauses that aren't satisfied, so the reason an order isn't moving is the reason listed.

Improvement
Sales Integrations

Orders V2 Beta: A Week Of Improvements

Orders V2 — the new order and fulfillment system that most accounts are now running on while it works its way to general availability — picked up a wide round of improvements this week. None of these are large on their own; together they're the shape of the system getting closer to GA.

Order data. Notes are now real fields on orders and fulfillments instead of being tucked into ad‑hoc data, and Shopify customer notes sync straight into the order note. B2B information lives in its own stable place on both the order and the fulfillment — so reports and integrations can read it without poking around — and the third‑party billing card is gone, with its fields rolled into B2B Info. The order timeline now reads from the system log and labels every event as System, Human, or coming from a connected integration.

Editing in‑flight orders. Item edits used to be blocked outside of draft. They're now allowed in any non‑cancelled state, and lines that aren't tied to an active fulfillment can be edited even when the order is in progress or already fulfilled — so a correction on a live order doesn't require walking it backwards. Items that came in marked Not in catalog can be re‑matched by SKU, linked to an existing product, or turned into a new catalog product on the spot. Pending orders with an unrecognized SKU no longer get blocked from acceptance.

Fulfillment. The Refresh Order button works on V2. Fulfillment profiles can be assigned even on in‑progress fulfillments, and the Create button shows up when none exist. The Mark Fulfilled action stays visible (enabled only when the fulfillment can actually be marked or is running through a profile). The fulfillment integration button now points at the right system. The availability panel reads from an order‑scoped source so it loads on large orders. Cancelled orders no longer show an empty Items to Fulfill section. The metadata tab is cleaner, with external ID editable inline. Endless Window fulfillment profiles got a coverage follow‑up. Sales order details auto‑expand the sections that have content.

Shopify on V2. Several Shopify edge cases stopped surprising people: fulfillment state no longer slides backwards, cancellations propagate to Endless, digital order lines and fulfilled counts line up correctly, and near‑simultaneous webhooks can no longer duplicate a shipment. Cleanup tasks are bundled in for orders the bugs already touched.

We'll start logging V2 changes individually once the beta closes; while it's still in flux this often, grouping reads better than enumerating.

Improvement
Integrations Products

Push Product Data: From The Products List, And Now To Shopify Too

The Push Product Data action is reachable from the products list as a Bulk Actions → Push Product Data, alongside the existing entry on a product's detail menu, and can now target Shopify as well as ShipHero. The dialog has an integration selector with a per-integration settings recap — Shopify shows the attribute mappings, ShipHero shows kit type and the rest — and pre-fills the toggle settings from each integration's configured defaults. Settings categories with nothing visible are hidden, so the dialog stays focused on what matters for the chosen channel.

Feature
Sales Supply

Fulfillments: Assign A Supplier (Dropship)

A fulfillment can now carry an assigned supplier. The fulfillment detail page has a new Supplier card to assign, change, or remove the supplier; fulfillments with a supplier present show a Dropship badge, and the fulfillment orders list gains supplier and Dropship columns and filters. The underlying record stays neutral — it's an association to a supplier — so the same data can later be reported on by supplier without a redesign; the Dropship treatment lives in the UI.

Feature
Integrations Products

ShipHero: Push Product Data From Endless

Product details can now be pushed from Endless into ShipHero. Run the new Push Products action and Endless looks each SKU up in ShipHero, then creates or updates the product with name, SKU, barcode, dimensions, country of manufacture, tariff code, customs description, value, and customs value. Bundles reconcile their kit components in the same pass. Inventory is never touched by the push — only the product record.

The ShipHero settings tile also got a small tidy: the kit-type choice (Virtual or Pre-Built) is now explicit, the wholesale and 3PL copy reads more clearly, and a few settings that were never wired to anything have been hidden.

Improvement
Integrations Sales

ShipStation: Pick Stores By Name Instead Of Typing Store IDs

The ShipStation sales-channel mapper no longer asks operators to paste in a raw store ID. On a ShipStation integration's Data tab, Add Mapping is now Manage Mappings, which opens a modal that fetches your stores live from ShipStation and shows each as Store ID, Store Name, and the sales channel it's mapped to. Existing mappings appear at the top, read-only; unmapped stores appear below with a sales-channel picker. Re-fetching the list never duplicates a store you've already mapped.

The store name is saved alongside the mapping, so reports and detail pages can show the human-readable name. The free-text edit pencil has been retired for ShipStation rows — to change a mapping, delete it and re-map through the modal, so the store ID and name can't drift apart.

This is what the backend integrationChannels query and externalName field landed for last week. Any other integration that exposes a list-channels capability gets the same shape automatically.

Fix
Platform

Brands: Company Admins Can Create Brands Again

Brands are how multi-brand companies organize their product data inside one Endless account — each brand has its own catalog, settings, and team, while sharing the same company. A bug had been blocking company admins from adding new brands: creating a brand appeared to succeed but the new brand never showed up in the brand list, leaving the admin with no way to manage it. That's fixed — a brand created by a company admin now appears in the list right away, the same as it always has for super-admins.

Improvement
Inventory

Inventory Import: Items Made On Demand, Unrecognized SKUs Don't Sink The File

The inventory CSV import no longer needs an inventory item to already exist for every SKU. If a row references a product that doesn't have an inventory item yet and has stock to record, the item is created on demand and the stock is adjusted. Zero-stock rows for SKUs with no item are skipped — there's no point creating an empty record.

Rows whose SKU has no matching product at all used to fail the entire import. Now they're skipped and every skipped SKU is listed in the import summary, so the rest of the file goes through and you can fix the unrecognized SKUs afterwards. Rows with real data errors (bad warehouse, bad location, bad stock value) still fail the import — genuine CSV problems are not silently swallowed.

This unblocks operators whose products were created in bulk without ever provisioning inventory items.

Improvement
Inventory Platform

Inventory: Rows Only Exist When There's Actual Stock

Creating a product no longer creates an empty inventory row at every warehouse location. Missing rows are treated as zero everywhere, and a row is created on demand the first time real stock or an allocation lands at a location. This removes a long-standing tax on product creation and brand setup, and clears the way for faster Inventory, Products, and Buildings pages by getting rid of millions of empty rows that were never operationally meaningful.

The filtered Inventory page — when narrowed to a specific building or location — now lists only items that actually have a row at that location. The unfiltered Inventory page is unchanged: it still lists every item, with zero where nothing is on hand.

Feature
Integrations Supply Sales

Packiyo Available As A Fulfillment Integration

Packiyo is now a connected fulfillment integration. Set up the connection from the integrations settings — the new Packiyo tile takes a per-brand bearer token and a tenant URL — and once it's saved, Endless pushes allocated fulfillments to Packiyo as orders and records shipment and tracking back automatically: by webhook in normal operation, with a scheduled backstop that picks up anything the webhook missed.

This is the first phase of the Packiyo integration; it covers authentication, ship-order push, and shipment sync.

Improvement
Supply

Purchase Orders: Expected Complete Date In Details, Filterable By Range

The purchase order details card now shows and edits Expected Complete Date — the date you expect the PO to be fully complete — wired to the existing field that the CSV importer already populates. The purchase orders list and the export also gain the matching date-range filter for Expected Complete Date, so reports can be sliced by it the same way as the other PO date fields.

This consolidates around the existing Expected Complete Date instead of the briefly-shipped Ready Date field; per product direction, Ready Date is no longer surfaced in the UI.

Feature
Sales Integrations Platform

Sales Channels: Optional Handles

Sales channels now carry an optional handle — a short, stable identifier that travels with the channel even if the display name changes. You can set a handle when creating a channel, and edit it on the channel header card; it auto-suggests a kebab-case version of the channel name and you can override it. Handles are lowercased, validated against the allowed shape, and must be unique inside your company; the same handle can be reused across companies.

Feature
Supply

Suppliers: Import Them From A CSV

Suppliers can now be imported into Endless from a CSV, using the same import flow as products and orders. The entry point lives on the Suppliers page — including its empty state — so the first set of suppliers can be brought in without entering each one by hand.

Fix
Sales

International Shipping Addresses Without A State Pass Verification

International orders headed to countries that don't use a state or province — Taiwan, for example — were failing fulfillment address verification on the missing state field and stalling. Verification now accepts international addresses without a state, so those orders keep flowing through fulfillment.

Improvement
Inventory

Inventory Refresh: Faster, And Now Targeted

The Inventory page's refresh got faster on bigger catalogs and picked up two targeted actions to replace the single Refresh button. The general refresh used to do per-row work that ballooned into hundreds of thousands of small operations on larger accounts; it now runs the same recalculation in a small handful of bulk passes, so big accounts pick up correct counts much faster. Alongside that, the refresh dropdown now offers two targeted actions in addition to the full refresh: Recalculate Inventory Levels and Pull Inventory From Integrations. The two halves can be run independently — useful when only one side needs to re-run, or when troubleshooting which step is responsible for a stale number.

Feature
Supply Sales

Purolator Available As A System Carrier

Purolator is now selectable as a system carrier alongside the other system carriers, so brands shipping with Purolator can pick it on shipping methods and fulfillments without a custom carrier setup.

Improvement
Products

Attributes List: Tag View By Default

The attributes list opens to the tag view now instead of the table view. The tag view is denser and more visual, and the table view is still one click away in the display options.

Feature
Platform

Automations: A Real When / If / Then Builder

Creating and editing an automation now happens in a real builder instead of a name-and-trigger dialog. New automations open in a quickview that walks you through When (the trigger), If (conditions), and Then (actions); a toggle takes the same editor full page when you want more room. Editing an existing automation happens inline inside the Workflow card on the automation detail page — the header and tabs stay put, only the card content swaps between read and edit.

The trigger picker is searchable. Conditions group into Any/All blocks that can be nested, and each field gets a value editor appropriate to its type — chips for tag-like values, selects for fixed lists, numeric inputs for numbers, a date picker for dates, and live pickers for things like products and warehouses. Actions stack as cards with their parameters inline.

Fix
Integrations Sales

ShipHero: Packing Note Picks Up Fulfillment Instructions

ShipHero's packing note was reading from a legacy handling-instructions field and missing the per-fulfillment instructions added with the new notes feature. The packing note now reads a fulfillment's instructions first, falling back to the order-level note when the fulfillment doesn't have its own — so what an operator types into a fulfillment's instructions actually reaches the ShipHero pickers.

Improvement
Supply

Purchase Orders: Import And Export Got A Real Upgrade

Purchase orders can now make a clean round trip through CSV. Both the import tool and the export tool got a pass so you can pull POs out of Endless, edit them, and feed the file back in without losing fidelity.

On import, the PO Number is now the key. A row whose PO Number doesn't exist creates a new PO; a row whose PO Number matches an active PO updates it; archived POs are rejected so an old one doesn't get quietly revived. Line items inside a PO match on Item SKU: quantity, unit cost, and lead time update on existing lines, new SKUs add a line, and lines you didn't reference are left alone. The header is editable too — supplier (matched against your active suppliers by name), terms, instructions, key dates, financial status, and cost allocation status — and you can submit a header-only row to update or create a PO without listing any items. Imports fail loudly when something doesn't add up (unknown supplier, invalid date, conflicting headers, duplicate SKU in a single import). Columns the importer doesn't recognize are skipped instead of failing the file, listed back to you in the import result.

On export, there's a new Export dialog matching the orders and inventory flow. Exports honor the filters you have set on the Purchase Orders list, so what you see is what you get, and you can pick between an import-ready export — round-trippable through the importer — and a complete export that includes every field on the PO.

Behind these two flows, the PO Number is now a real natural key: a simple format (letters, numbers, _, -, .) and unique within a company across active and archived POs. Duplicates can't be created, imported, or generated.

Fix
Integrations Sales

ShipHero: Missed Shipments No Longer Slip Through

High-volume ShipHero accounts could see recent shipments never land back in Endless. The every-fifteen-minute reconciliation was paging through ShipHero's oldest-first recent-shipments feed from the start on each run, which meant a busy day could exceed the pagination limit before reaching the newest fulfillments, and an upstream timeout would silently restart the scan from zero on the next pass.

The reconciliation now drives from Endless's own backlog of in-progress fulfillments instead — anything not yet completed, within a fourteen-day window — and pulls each fulfillment's shipment from ShipHero by order. No pagination cap, no scan-from-zero on every restart, and no silently skipped pages on a busy day.

Improvement
Platform

List Page Toolbars: Tighter, More Uniform, With Hover Labels

The toolbars across list pages — products, orders, POs, shipments, suppliers, and the rest — got a pass for consistency. The big "Add Product" / "Add Order" buttons that opened a dialog are now a compact + icon, since + and the edit pencil are already the standard add/edit affordances throughout the app and the long label was taking more space than it earned. The button still sits in the primary spot; it just doesn't shout.

Filter buttons, the "More actions" overflow, and the new add-as-+ all share a single chrome treatment so they read as one toolbar instead of three different ones. The view picker (table / cards / tags) that used to live next to the toolbar moved into the Display Options menu, matching the pattern most apps use and giving the toolbar back the row of horizontal space.

Hovering any icon-only button in those toolbars now shows a tooltip naming what it does — the + add action, the view-options slider, the more-actions overflow, the column toggle — and the same label is exposed to screen readers. The that used to trail the add label is gone now that there's a hover label to lean on.

Fix
Integrations Inventory

Rithum: Two Fixes To Outbound Inventory Push

Two fixes to how inventory gets pushed to Rithum.

Inventory pushed to Rithum was under-reporting for composable bundles. A bundle has no physical units of its own — it's sellable because its components are in stock — and the number Endless sent didn't account for that, so Rithum saw zero available on bundles that were actually sellable. Rithum now receives the same available-to-sell quantity that Endless shows in the app, including the make-from-components portion for bundles. For accounts that map more than one warehouse as a Rithum inventory destination, the global quantity is now reported against a single primary warehouse rather than split per warehouse — per-warehouse splitting is deferred. Worth a look at production mappings post-deploy if any Rithum integration has multiple warehouses configured.

Separately, the Rithum integration's "push inventory" master switch wasn't being honored by the scheduled bulk sync — only by the one-off push that fires when an inventory level changes. So turning the switch off would stop the live pushes but the scheduled sync kept pushing every item to Rithum anyway. Both paths now share the same guard. Turning push inventory off stops all outbound inventory updates to Rithum, scheduled and event-driven.

Improvement
Integrations Sales Products

Shopify: Auto-Import Missing Products When Orders Come In

Two changes to how Shopify orders connect to products in your catalog.

The "Import products" action on a Shopify integration always works now. Before, the action was silently blocked on integrations whose product-import setting was off, so the only way to pull in products was to turn that setting on first. Whether to import is your call from the UI; nothing else gates it.

The same setting still exists, but it now controls a narrower behavior: whether Endless should automatically import a missing product when a Shopify order comes in referencing one. The default is off, so order ingest no longer creates products on its own unless you opt in. Integrations that already had this setting on stay opted in.

Regardless of that setting, an order item that arrived without a matching product is now linked to one as soon as the product shows up — created later, imported manually, or updated with the SKU the order is referencing — so an order that landed before its product did doesn't stay orphaned. V2 orders behave the same way as V1.

Fix
Integrations Sales

EDI 850 Orders Without A Carrier Service Now Import

EDI 850 orders coming in through the Orderful path could fail to import on every order when the inbound template didn't include a shipping carrier service. Order creation was rejecting the input outright, even though the carrier service is supposed to be set later at fulfillment, not on the inbound PO.

EDI 850 orders without an inbound carrier service now import as expected. Any carrier mapping the template does send is still picked up.

Fix
Integrations Supply

Extensiv: ASNs No Longer Fail On Items Without Lot Tracking

ASNs to Extensiv buildings were silently failing on items that don't have lot tracking turned on in Extensiv. Endless was attaching a lot number to every receiver line, and Extensiv was rejecting the whole receiver when the item wasn't lot-tracked, so the ASN never landed.

There's now a "Send lot number" setting on the Extensiv integration, off by default. Turn it on for accounts where every item is lot-tracked; leave it off otherwise and ASNs go through without a lot number attached. Integrations already configured to send a reference number as the lot number are unaffected — that setting still wins.

Improvement
Sales

Orders List: Refreshes In The Background

The orders list now keeps itself current as your team works. When a teammate moves an order — fulfills it, marks it in progress, holds, releases, allocates, edits details — the list picks up the change in the background instead of staying stale until you reload. Refreshes from your own actions don't trigger an extra reload, so the page doesn't flicker as you work.

A few order changes — cancel, uncancel, and unfulfill — don't refresh the list yet; the list will start picking those up automatically once they're being broadcast.

Improvement
Supply

Purchase Orders: Archive, Browse, And Restore

Archived purchase orders are now first-class on the PO list. A new filter lets you switch between active POs (the default), archived-only, or everything; archived rows can be opened and read on the detail page, with notes, events, milestones, live status, and the archived line items (each marked with an Archived badge in the items table) all available, and a clear Restore action is offered from both the list row menu and the PO details actions menu. Restoring runs through the same in-app process tracker the rest of the bulk PO actions use, so you can see when the restore lands instead of guessing from a toast.

The Archive action is also no longer hidden on POs that aren't in a draft state — you can archive a PO at any status, which matches how teams actually use archive (clearing out a mistakenly-created or no-longer-relevant PO regardless of where it got to). Write actions on archived POs still require restoring first; only reads were opened up.

Improvement
Platform

Settings: Team & Roles And Brands Pages Rebuilt

Two more Settings pages have been rebuilt into the new Settings layout.

Team & Roles replaces the old team list. Search across members, and use the All / Admins / Operators segmented filter — each with a live count — to narrow the list. The table shows name with an avatar, email, role as a badge (with a clear "No roles" state), status (Verified vs. Pending), and the date each member joined; click any row to open the existing member dialog. "Add member" opens the same invite flow as before.

Brands has been rebuilt as a standard table with debounced search, an "Add brand" action in the toolbar, skeleton and empty states, and the existing pagination footer; clicking a row opens a dedicated brand detail page where you can edit a brand's fields in place, with a back affordance to the list. The previous card grid is gone.

Improvement
Sales

Fulfillment Order PDFs Show The Components Being Picked

Exporting a fulfillment order PDF for a bundle that has been decomposed into components now shows the component rows the warehouse actually needs to pick, the same way the on-screen decomposition table does. The parent bundle row is muted so it reads as a header, the fulfillable component rows sit on the normal row background, and the PDF totals are calculated from the components — so what's on the PDF matches what's on the page and what the warehouse will be packing.

Improvement
Integrations Sales

ShipStation: Route Orders To The Right Store Per Sales Channel

If you run multiple ShipStation stores behind a single ShipStation connection, you can now route orders to the right store based on the sales channel they came in from. Map each sales channel to its ShipStation store id on the ShipStation integration, and orders from that channel will ship out of that store. Channels without a mapping continue to use the integration's default store, so nothing changes until you start filling the mappings in.

Fix
Inventory Supply Products

Total Incoming Quantity Now Reflects Open POs Again

Some products were showing Total Incoming as zero even though they had open purchase orders covering them. The PO-coverage and incoming-quantity lookups on a product were keying on a denormalized SKU that wasn't being filled in on every inventory record — anything created outside the product-add flow (bulk inventory init, shipment receipt, fulfillment) was leaving it blank, and the lookup missed. The lookup now resolves the SKU reliably for every record, and a backfill is queued for the historical rows that were blank.

Fix
Platform

Notifications Drawer: All Tab Lists Everything Again

The notifications drawer could show its All tab empty while the Unread tab still listed notifications — confusing, since "All" should be a superset. The All tab now lists everything as expected, regardless of the kind or category a notification carries. As a small follow-up, the "Mark all as read" action is hidden when the list is empty so it no longer lingers over an empty state.

Fix
Sales

Archiving An Order Fulfillment Now Clears Its Items Too

Archiving an order fulfillment used to leave its underlying fulfillment items live behind it. Cancels, unfulfills, and a few Shopify paths all hit this — the fulfillment looked archived, but its items kept hanging around and could show up in downstream lookups. Archiving now cascades to the items in one step, so an archived fulfillment really is fully archived. A separate backfill is queued for the historical rows that were affected.

Improvement
Sales

Order Update Notifications Now Identify The Order

When you have an order detail page open, the app already pops up a notification any time another teammate or an integration makes a change to that order, so what you're looking at stays in step with what's actually happening to the order. Those notifications now lead with the order number ("Order #1234 updated") and call out which part of the order changed, instead of generically announcing that something was edited. If a few arrive at once, you can tell at a glance which order each one is about and where the change was.

Improvement
Products Inventory

Creating Products Is Faster On Accounts With Many Warehouses

Creating a new product — from the UI, a clone, an import, or an integration — used to do a round of work per warehouse location to seed its starting zero-stock inventory. On accounts with many warehouses and many locations per warehouse that added up to hundreds of database operations per product, which was the dominant cost of product import. It now does the same seeding in a single batch, so the time per product no longer grows with the number of warehouse-locations. Same set of locations gets seeded at zero stock; just much faster.

Improvement
Sales Integrations

One Building, Many Fulfillment Integrations

A single building can now serve more than one fulfillment integration. Instead of every fulfillment from a warehouse defaulting to that warehouse's one integration, each fulfillment can carry its own — and playbooks can pick the right one automatically based on the rules you set up (order source, brand, customer type, anything a playbook condition can read).

In practice: one building can route some fulfillments to ShipHero, others to Extensiv, others to a 3PL — all from the same physical location, all automated. The Send / Resend button on the fulfillment card now shows the actual integration the fulfillment is going to, and downstream work — cancel, schedule, retry — follows the same routing the playbook chose, end to end.

Improvement
Sales

Sales Orders List: Refreshed Layout And Click-Through Status Details

The Sales Orders list has had a tune-up. Columns are tighter, you can reorder them, resize them, and the horizontal scroll stays put as you go. Use the new Source filter to narrow the list to one channel — Shopify, Faire, manual, and so on — without leaving the page.

The status badge is now interactive. Click it to open a details panel that surfaces what you usually want next: outstanding issues on the order, how many items are in each fulfillment, copyable tracking numbers, and on V2 orders, a callout for any items that aren't yet assigned to a fulfillment.

Improvement
Integrations Sales

Sales Channel Mappings: New Editor

The Sales Channels panel on an integration's Data tab has been rebuilt. The mapping table now shows External ID → Internal Sales Channel side by side, with Add, Edit, and Delete buttons on each row. Adding a mapping opens a dialog where you pick the internal channel from a dropdown. Editing a mapping lets you change the external ID; to point an external ID at a different internal channel, delete the row and add it back. Shopify, Orderful, and Veracore are on the new editor today.

An external ID can now map to at most one live internal channel per integration. If automatic discovery tries to write a mapping that would collide with one you already have, it stops and tells you, rather than quietly adding a duplicate.

Auto-discovery writes and the Infoplus ship-order step are reading and writing through the new system as well. Trackstar is still on the older one for now and will follow.

Improvement
Sales Inventory

Fulfillment Decomposition: Clearer Inventory At Decision Time

The fulfillment workspace on an order detail page now shows you what you can actually fulfill with, not just what exists. Draft fulfillment items show building-level availability, and items made from components show both what's already built and what can still be built from the parts on hand — hover any of those to see exactly which components feed the count. Decomposed rows are styled distinctly from regular order items so the structure is easy to read at a glance.

The items-to-fulfill table now includes availability, on-order quantity, and how many of each item are still left to fulfill — the same three numbers you'd otherwise have to click around to gather. The building selector also factors in what can be made from components, so it stops pointing you at a warehouse that has the parts but not the finished good.

Across the order, items-to-fulfill, and fulfillment tables, links now point at the inventory item where one exists, and fall back to the product when it doesn't, so a click takes you to the more useful place.

Decomposition isn't available on our legacy order system.

Improvement
Sales Platform

Sales Orders List: Faster Page, Steadier Filtering

The Sales Orders list is faster. The page now opens from a cached copy and refreshes in the background, so you see your orders right away instead of waiting through a full load. Filtering, sorting, searching, and paging keep your current rows on screen while the next set loads in behind them — no more flash to an empty skeleton between actions.

Underneath, the result count loads on its own so paging doesn't recount the whole filtered set every time, and a few extras-only columns (PO Number, Customer Reference, Vendor Number) only fetch their data when they're actually on screen. Two crashes also got cleared out: orders whose source integration had no name were taking the whole page down, and the cold-load skeleton used to leave a gap of empty table underneath.

Fix
Integrations Sales

ShipHero: Get Shipment Button Is Back

The Get Shipment action on a ShipHero fulfillment is back. Use it to pull the latest shipment details — tracking, status, and shipped date — from ShipHero on demand, without waiting for the next sync.

The button shows up in the fulfillment actions menu once the fulfillment is in progress with ShipHero, and it's hidden on fulfillments where there's nothing to fetch yet.

Fix
Integrations

ShipHero: Two-Letter State Codes On Addresses

ShipHero was being handed the full state name on outgoing addresses (California, Texas) where it expects the two-letter abbreviation (CA, TX). Both shipping and billing addresses on B2C and B2B orders were affected. State names are now converted to the two-letter form on the way out, and addresses that already had the short form keep going through unchanged.

Improvement
Sales

Edit Order Details After An Order Has Moved On

You can now edit details on an order — expected ship date, sales channel, B2B / PO / customs info — at any point in its life, not only while it's in Ordered, Draft, or Error. Whether the edit is allowed comes down to who owns the order: if it's an order you manage in Endless, you can update it; if it's owned by an external system, the edit is still blocked the same way it always was.

Line items still lock once an order has been placed — this change is about the order-level details, not the cart. The Change Sales Channel dialog rides the same path and now opens cleanly on every order.

Improvement
Platform

Automation Actions Run As The System

Actions taken by an automation now show up in the activity log as performed by the system, rather than being credited to whichever user or integration happened to set the automation off. Automations can also run against events that didn't have a user or integration behind them in the first place — anything kicked off on a schedule or by the platform itself.

Improvement
Integrations

Carrier Aliases Available On Most Integrations

The Add Alias button for shipping carriers is no longer Shopify-only. Custom carrier mappings can now be added on every integration except QBO — including EDI (Orderful), Amazon, Walmart, Rithum, Business Central, Cin7, Sellbrite, Skubana, Extensiv, Gobolt, Trackstar, MasonHub, Infoplus, ShipHero, ShipStation, Veracore, and Faire.

Improvement
Platform

Primary Nav Restructure And Settings Sidebar

The left sidebar is now organized into collapsible category groups — Catalog, Orders & Fulfillment, Inventory, Supply Chain — with Dashboard pinned on top. Admin has been folded back into the other groups: Buildings now lives under Inventory, Automations under Orders & Fulfillment.

Settings has moved off the bottom of the sidebar to the top company dropdown (or G+S). Opening it swaps the primary nav for a Settings sidebar grouped into Account, Workspace, and Operations, with a "Back to app" link at the top. G+S now goes to Settings; Supply Chain has moved to G+U.

Fix
Sales Products Platform

Products And Orders Pages Fast Again On Large Accounts

A round of backend work on the Products and Orders list pages and the order detail page. On large accounts these pages had been creeping up to tens of seconds, and on the largest order histories the Orders list was timing out entirely and falling through to an empty state. They're all back down to milliseconds, regardless of how many products or orders an account has.

Order detail pages also return immediately again — the activity timeline fills in once the main page is up, instead of holding the whole page back until it's ready.

Fix
Integrations

Walmart Inventory Push: Reliable Across All Trigger Paths

Inventory pushes to Walmart could quietly fail depending on where they were triggered from — most notably from the dashboard, the API, and the nightly background job. Pushes from those paths now go through cleanly, so Walmart inventory stays in sync regardless of what kicks the push off.

Fix
Inventory

Inventory Locations Tab: Faster, Clearer On Errors

The Locations tab on inventory item detail now loads faster on high-volume buildings — previously it could time out — and shows a clearer error/retry state when the underlying query fails, instead of falsely showing "No warehouse inventory found yet."

Improvement
Supply

Actual Arrival And Container No. On PO Shipments

Two new columns are available on the Shipments tab of purchase orders and the main supply shipments list: Actual Arrival and Container No. Both are sortable from the column header and can be toggled from the column menu.

Feature
Supply

Book Freight Tool

Book Freight is now available from the Supply Chain menu in Endless. The tool walks teams through a freight booking request, collecting the shipper, consignee, pickup and delivery locations, cargo-ready date, freight mode, shipment type, incoterm, ports, container counts, cargo details, and special instructions.

It supports ocean, air, truck/LTL, and rail bookings, with FCL and LCL handling for ocean shipments. Compliance fields cover batteries, hazardous materials, dangerous goods, and other special cargo, and the review step summarizes the request before it is submitted to the forwarder.

Improvement
Integrations

DSCO: Brand Carrier Names Flow Through To Orders

DSCO orders now ship out with each brand's own carrier service names. Up until now, every brand on a DSCO connection shared the same integration-wide carrier mapping — even when a brand had its own mapping set up. Brand-level mappings now take priority, with the integration-wide mapping kicking in only when a brand doesn't have its own.

Feature
Supply

Tariffs Tool

The Tariffs tool is now available from the Supply Chain menu in Endless. It brings the HTS catalog into the app, so teams can search tariff descriptions and HTS numbers, browse chapters and headings, and look up general, special, and column-2 duty rates without leaving their workspace.

The tool also includes a duty and tariff simulator for checking an HTS code against country-of-origin rules and Chapter 99 overlays, including Section 301, Section 232, and IEEPA-related duties. Refund FAQs, claim guidance, and tariff updates are available from the same tool.

Improvement
Inventory

Choose The Granularity Of An Inventory Export

The inventory export now opens a granularity dialog so you can choose one row per SKU, one row per warehouse per SKU, or one row per warehouse location.

The active filters on the inventory list are also carried through to the export, so a filtered list produces a filtered export.

Improvement
Sales

Order Export Variants: Compact, Shipments, Cartons

Order exports now offer four formats: Orders + Items (the existing default), a compact Orders-only export, a Shipments export, and a carton-level export. The format is chosen in the Export dialog on the Orders list.

All orders are now included in every format — previously the export was missing orders from our newer order system.

Improvement
Integrations

ShipHero Shipments Flow Back Into Endless

Shipments from ShipHero now flow back into Endless automatically in real time, with a daily backfill catching anything missed. Endless also records the carrier service name on each shipment, so labels like "UPS Ground" appear on the order without manual entry.

This is a continuation of the ShipHero integration first announced in May.

Improvement
Sales

SKU Column On The Orders List

The SKU column on the Orders list now shows an interactive hover card listing every SKU on the order, instead of the previous misleading pill that looked like a button.

Improvement
Products

Tag View For Product Attributes

Product Attributes can now be viewed as color-coded tags as an alternative to the existing data-table view. The tag view groups attributes by section, color-codes each tag by attribute type, and offers per-tag actions for display, edit, move, and archive.

A toggle on the Product Attributes page switches between the two views.

Fix
Products

CSV Import Updates Archived Products

CSV product imports no longer fail when the SKU in the row already exists but is archived. Archived products are unarchived in place and updated from the import, then re-archived if the row marks them as archived.

Improvement
Supply

Delete A Purchase Order From Its Details Page

Eligible purchase orders can now be deleted directly from the PO detail page's Actions menu, matching the option that already existed on the PO list. Same eligibility rules apply.

Improvement
Platform

Paginated Brand List With Handles

The Brands list now loads in pages (search still works as before) and shows each brand's handle on both the list and the brand detail Settings view. This change is particularly relevant for retailers who may work with hundreds of brands.

Improvement
Supply

Purchase Orders Tab On Inventory Item Detail

Inventory item detail pages now include a Purchase Orders tab that lists every PO containing the SKU, with PO number, supplier, status, expected date, and ordered/received quantities.

The active tab is also reflected in the URL, so a link goes straight to the right tab.

Fix
Inventory

Archiving A Building Preserves Its History

Archiving a building now archives its locations and external data instead of deleting them. Inventory adjustments, ASN items, and transfers tied to those locations remain intact, and archiving large buildings — which previously failed outright — now succeeds.

Improvement
Products

CSV Imports Tolerate Whitespace

CSV imports now strip leading and trailing whitespace from each cell. Rows that previously failed silently because a SKU or identifier carried a stray space now import correctly. This applies to product, inventory, composition, and purchase order imports.

Improvement
Products

Import And Export Relationships

The Import Components and Export Components menu items on the products list are now called Import Relationships and Export Relationships, lining up with the rest of the catalog vocabulary. Behavior is unchanged.

Feature
Integrations

Rithum Integration

Rithum (formerly DSCO) is now available as a sales integration in Endless Commerce. Orders sent through the Rithum network arrive in Endless and can be fulfilled through the same workflows used for every other sales channel, with shipment information flowing back to Rithum on dispatch.

For businesses already selling through Rithum-connected retailers, this hooks that volume directly into the same inventory, order, and fulfillment tooling used for every other channel.

Improvement
Supply

Record Received Date On Supply Shipments

The supply shipment detail page now lets you record a Received Date directly from the Key Information edit form, so the actual arrival date is captured alongside the rest of the shipment metadata.

Fix
Supply

Shipment Document Uploads Now Land In The Right Place

Uploading multiple shipment documents at once no longer mixes up files between storage paths. PDFs and images uploaded together now each land where they belong and are linked to the correct document.

Fix
Platform

Dashboard Performance

Dashboard data now loads faster when opening the dashboard or refreshing its data.

The same data-loading work will also support future reporting features.

Improvement
Products

Product Status Has Been Deprecated

The legacy product status field, used to mark products as active or inactive, has been retired. Product lifecycle can now be handled by archiving a product to hide it from normal views, or by setting up a custom lifecycle attribute for catalog-specific stages.

Archived products can be viewed with the Archived filter on the products page.

Feature
Integrations

ShipHero Integration

ShipHero is now available as a fulfillment integration in Endless Commerce. Inventory and fulfillment data can flow between Endless and ShipHero alongside other 3PL connections like Extensiv and ShipStation.

Improvement
Platform

Filter The Activity Feed By Date

The activity feed on inventory, products, orders, purchase orders, and shipments now supports filtering by date range. This can be used to review changes within a specific period.

Improvement
Products

Filter And Export Products

The product export tool now respects the filters active on the product list. The export contains the filtered product set, and a count is shown before the file is generated.

Every product filter is supported, including the option to include archived products. This matches the filtered export pattern already available on orders.

Feature
Integrations

Custom Fulfillment Integrations

Custom fulfillment integrations are now supported in Endless Commerce. Developers can build a custom fulfillment app, and any team running Endless can mark that app as responsible for inventory or fulfillment on a per-building basis.

This supports 3PLs and fulfillment services that do not run on an off-the-shelf warehouse management system like Extensiv or ShipStation but still want to integrate over API.

Feature
Integrations

Custom Sales Integrations

Custom sales integrations are now a built-in option in Endless Commerce. A custom integration can be created in the app, and its API key can be shared with a developer building a sales channel. The keys use scoped permissions for sales-channel operations, including getting inventory, creating orders, and related actions.

Custom sales integrations also use the order authority system, so Endless can track which app created an order and whether that app can continue editing it.

Feature
Integrations

Pre-Sell Inventory On Shopify

Shopify integrations can now push Future Available To Sell numbers — inventory that is on the way to a specific building but has not arrived yet — instead of only the inventory that is currently on hand. When a shopper places an order against that future inventory, Endless Commerce can hold the order until stock physically lands, then release it for fulfillment.

Improvement
Products

Favorite Product Attributes

Product attributes can now be pinned to the Key Info tab on the product detail page. Unpinned attributes remain available on the Attributes tab.

Improvement
Products

Archiving Products

Products can now be archived. Archived products are hidden from the product list and from search across the app.

To view or restore archived products, apply the Archived filter on the products page.

Improvement
Inventory

Filter Inventory By Building

The inventory page now includes a building selector in the top right that filters the table to show counts for the selected location. Multi-select is supported, so inventory can be viewed across any combination of buildings.

Building filters can be combined with product attribute filters on the same page.

Feature
Supply

Reference Numbers On Extensiv ASNs

For buildings managed in Extensiv, the Create ASN action can now send a custom reference number that maps to the Lot # field in Extensiv. The same value can also be sent as the Receipt Advice Number on Extensiv receipts.

Both options are configured in the Extensiv integration settings.

Improvement
Platform

Multi-Brand Operations

All record types in Endless Commerce are now scoped to the company rather than to an individual brand. Products from different brands can share the same building, a single purchase order can cover multiple brands, and one inbound shipment can carry goods for several brands at once.

The Brands menu has moved under Catalog in the sidebar. More brand-level features are planned for brand-specific assets and settings.

Feature
Sales

Canada Post Is Now A System Carrier

Canada Post is now part of the system-defined carrier services in Endless Commerce, with both regular and expedited options available. Canada Post can be selected directly when assigning a shipping service to an order, without custom carrier setup.

Improvement
Integrations

Integrations Organized By Function

Integrations are now grouped by business function in the integrations list. Sales includes channels like Shopify and Walmart, Fulfillment includes warehouse and shipping systems like ShipStation and Extensiv, and Accounting includes finance tools.

The groups make it easier to find integrations by the work they support.

Feature
Integrations

Walmart Integration

Walmart is now available as an upstream integration in Endless Commerce. Like other upstream channels, it can send inventory updates out to Walmart and bring sales orders back in to be fulfilled through the rest of the Endless toolset.

For businesses already selling on Walmart or planning to start, this connects that channel directly into the same inventory, order, and fulfillment workflows used for every other sales channel.

Improvement
Inventory

Shopify Inventory Settings Have Moved

Shopify inventory settings have a new home. When sending inventory to Shopify, everything is now controlled from the building detail page — the place in Endless Commerce where a physical warehouse or fulfillment location is configured. From there, the inventory source for a building is defined, along with which connected buildings in other systems should receive that inventory.

Putting these controls next to the building they belong to makes it easier to keep Shopify and Endless in sync without hunting through separate settings screens.

Improvement
Platform

Faster Search for Orders and Products

Search now works like this: the default experience looks at the key identifiers of an order or product, so common lookups return results right away. When a broader search across all product or order data is needed, the deeper search is still available as a secondary tool on the same screen.

Most of the time, finding the right order or product should feel instant. For the times when a wider net is needed, the option is one click away.

Fix
Products

Product Attribute Groups

Related product attributes can now be grouped together, which makes product data a lot easier to scan and update. To set a group, open an attribute definition and fill in the Group field. The full list of groups in your account is simply the combination of every group name that has been typed in, so no separate setup is needed.

If "Taxonomy" and "taxonomy" end up side by side, the fix is quick: open each attribute definition and standardize the spelling. That fits the broader Endless approach of keeping data fixable where it lives, rather than generating meta work to clean it up somewhere else.

Feature
Inventory

New Inventory Definitions

Endless Commerce now includes three clearer inventory definitions that show up across the app. Available To Sell is the total amount of inventory that can still be sold after every received order has been fulfilled. Available To Allocate is what remains free to assign to fulfillment orders. Total Incoming covers everything on the way in, including inventory on a purchase order that has shipped, inventory on a purchase order that has not shipped yet, and any other incoming stock.

Shared definitions like these make it easier for operations, sales, and support to look at the same screen and reach the same conclusion.

Improvement
Inventory

View Incoming Inventory by Building

For businesses running multiple active buildings — the physical warehouses or fulfillment locations set up in Endless Commerce — incoming inventory can now be viewed on a per-building basis. Open any product's inventory detail page and head to the location tab to see exactly what is on its way to each site.

This makes it a lot easier to plan receiving, spot gaps before they become stockouts, and coordinate across locations without piecing the picture together by hand.

Feature
Platform

Guest Users

Guest users are now a built-in part of Endless Commerce. Add them to a team to give anyone read-only access to the data in your account — a useful option for advisors, partners, or anyone who needs to look but not touch. Guest users can view everything except the list of other team members, keeping internal team details private.

Improvement
Inventory

More Detailed Inventory Visibility

More detailed inventory tools are now available across Endless, giving a fuller picture of stock wherever decisions get made. The inventory page has also been updated with clearer, simpler inventory definitions right alongside the numbers, so everyone on the team can look at the same screen and mean the same thing when they say "available to allocate" or "incoming."

Better visibility plus shared language makes inventory easier to reason about, especially as operations grow more complex.

Feature
Products

Add Multiple Products Directly in the UI

Adding a handful of new products no longer requires a bulk spreadsheet import. Multiple products can now be created at the same time directly in Endless, starting with just the essentials like product name and SKU.

This fits the broader Endless approach to catalog building: start simple, then enrich each product incrementally rather than trying to get everything perfect in one giant import. For small batches, it is a much faster way to get items into the system and keep moving.

Fix
Inventory

Smarter Inventory Counts for New Locations

When a new building or storage location is added to Endless, there may be no existing inventory record for certain SKUs at that location. Previously, this absence of data could create ambiguity in stock calculations. Now, Endless treats any missing record as zero units.

This makes it easier to set up new fulfillment locations without worrying about gaps in inventory data causing unexpected behavior elsewhere in the system.

Improvement
Inventory

Bulk Inventory Updates via CSV

A CSV import for bulk inventory updates now only needs three columns: SKU, building ID, and stock level. Endless will automatically apply those counts to the default available location for each item if no location ID is provided.

This is particularly useful when a direct API connection to a warehouse or building isn't available, or when the building only uses default storage locations rather than a more granular location structure. Updated documentation covering this workflow is now live in our help docs.

Improvement
Supply

Attach Documents to Suppliers

Certifications, contracts, bank details, and other supplier-related files can now be uploaded directly to a supplier's record in Endless Commerce. Each document lives alongside the supplier it belongs to, making it easier to stay organized as your vendor relationships grow.

Improvement
Products

Character Limits for Identifiers

All identifiers across the system such as SKUs and order numbers are now capped at 40 characters. This keeps the visual experience stable and consistent throughout the app, avoiding display issues that can occur with unexpectedly long values.

Feature
Supply

Add Documents to Purchase Orders

Purchase orders now support file attachments. Any documents relevant to a PO — contracts, supplier confirmations, packing specs, or anything else — can be stored directly alongside the order, keeping all related information in one place.

Improvement
Platform

API Documentation Organized By Category

The Endless API documentation at docs.endlesscommerce.com is now organized by category, including areas like orders, inventory, and shipments. A new getting started guide has also been added for teams connecting to the API for the first time.

The updated structure makes it easier for developers and operators to understand how Endless data is organized and where to find the endpoints they need.

Feature
Supply

Associate a Shipment Line Item to a Purchase Order

When a shipment contains line items that weren't originally linked to a purchase order, it's now possible to make that association directly — no need to remove and re-add the line item to get things connected.

Keeping shipment line items properly tied to purchase orders is important for accurate incoming inventory tracking. This change makes it easier to clean up or correct associations when shipments are created without the full context upfront.

Feature
Integrations

Extensiv Integration Now Available to All Merchants

The Extensiv integration is now available to all Endless Commerce merchants. Extensiv is a warehouse and fulfillment management platform used by many third-party logistics providers (3PLs), and this integration allows inventory and fulfillment data to flow between the two systems.

New configuration options have been added, including control over where ASNs (Advance Shipping Notices) are created when exporting to Extensiv. If your fulfillment operation runs through Extensiv, this integration is ready to connect.

Feature
Supply

Import Purchase Orders Via CSV

Purchase orders can now be created from CSV files. Each row can include a purchase order number, SKU, lead time, unit cost, and quantity, making it much faster to load line items for larger purchase orders.

After import, teams can open the purchase order in Endless to add supplier notes, milestones, and shipment associations.

Improvement
Platform

Guest User Role

You can now assign a guest role to users to give them read only access to your data. This is a good fit for stakeholders, auditors, or external collaborators who need to view data without making changes.

Improvement
Sales

Export a Filtered Subset of Orders

The order export tool now respects whatever filters are currently active on the orders list. Apply filters by date, product, status, or any other criteria, and the resulting export will contain only the matching orders — no more exporting everything and trimming it down afterward.

Feature
Platform

Copy ID And Raw JSON From Object Headers

Object headers now include a consolidated copy menu with actions for copying the Endless ID or raw JSON for the current record. The actions work across objects like orders, products, shipments, and purchase orders.

Copying IDs makes it easier to reference records in support, API, and internal workflows. Copying raw JSON gives developers, AI tools, and integration builders the full underlying data for debugging or mapping work.

Improvement
Sales

Filter Orders by Multiple Products at Once

The product filter on the orders list page now accepts multiple products at once. Previously limited to a single product, the filter now lets you select several SKUs or products in one go — handy for pulling up a broader slice of orders without multiple separate searches.

Feature
Supply

Shipments Now Link to Purchase Orders at the Line Item Level

Shipments and purchase orders are now connected at the line item level rather than at the shipment level as a whole. This change unlocks more flexibility in how shipments are managed: line items from different purchase orders can now be added to the same shipment, and each purchase order now shows a clear breakdown of shipment progress per line item.

This is a meaningful structural improvement for teams managing complex supply chains — particularly those splitting orders across multiple shipments or sourcing from several suppliers in one delivery.

Improvement
Sales

Filter Orders by Product

The orders page now includes a product filter. This makes it possible to search for all orders that contain a specific product.

Fix
Supply

Improved Shipment Receiving

Shipment receiving has been redesigned with a simple inline interface. Items can be received at any point during a shipment's lifecycle — the shipment no longer needs to be marked as "In Receiving" first. Partial receiving, undoing received items, and quick full-shipment receiving are all supported. A confirmation dialog shows exactly what will change in the system before any receiving actions are committed.

Improvement
Products

Improved Product Image Management

A new unified product image management tool is now available. It supports drag-and-drop, bulk uploads, and reordering. The tool is accessible from the files tab on the product details page, from the product sheet view, and by clicking the featured image on the product details page.

Fix
Platform

Sandbox Background Jobs

Background jobs such as data exports are now fully functional in the sandbox environment. This makes it possible to test data flows in the sandbox before running them in production.

Improvement
Platform

Dashboard Improvements

Dashboard cards are now interactive. Revenue and Total Orders link to the orders page with the appropriate date filters applied. Oversold SKUs and Low Stock Alerts link to the inventory table with relevant filters. The dashboard also includes subtle design refinements.

Improvement
Platform

Shared Features For Multi Brand Companies

Several features are no longer tied to individual brands and instead operate at the company level. This includes Buildings, Automations, Product Attributes, and Exports. As a result, a single building can now store inventory for products from multiple brands. Products, Orders, Integrations, Purchase Orders, and Shipments will follow the same pattern over the coming weeks.

Improvement
Supply

At Destination Status Removed

The At Destination shipment status has been removed from the shipment state flow. This status was too similar to Delivered, and removing it simplifies the process of moving a shipment through its lifecycle.

Improvement
Sales

Shopify Order Tags Sync

The reload order tool — used to refresh data for orders created by the Shopify integration — now supports pulling in updated order tags from Shopify.

Improvement
Inventory

Buildings Can Now Be Archived

Buildings — the locations used to manage inventory and fulfillment — can now be archived. This is helpful for staying organized, especially when cleaning up buildings that were accidentally imported from other systems. If a building can't be archived, a clear list of reasons will explain what's preventing it.

Feature
Sales

Bulk Actions for Order Processing

Order processing now supports bulk actions for up to 50 orders at a time. Select the orders you need to move forward and apply actions in one go — a significant time saver for teams handling high order volumes.

Feature
Inventory

Manual Inventory Refresh

A refresh button is now available on the inventory list page to manually trigger an inventory count update. Running a refresh pulls counts from any connected systems, recalculates allocated and ordered quantities, and initializes inventory for all locations and products. It's a quick way to make sure everything is in sync.

Improvement
Inventory

Multi-Brand Companies Can Share a Building

Companies that operate multiple brands can now define a single building in the system and use it to manage inventory and fulfillment across all of their brands. This eliminates the need to duplicate building records and keeps everything centralized for multi-brand operations.

Feature
Platform

New Order Automation Actions

Automations just got more powerful for order management. It's now possible to configure automations that update specific order fields — including expected ship date and financial status — based on predefined automation definitions. This makes it easier to keep orders moving without manual updates at every step.

Feature
Supply

Track Purchase Order Issue, Confirmed & Closed Dates

Purchase orders now have three new date fields: issue date, confirmed date, and closed date. These can be recorded directly on the purchase order to track its lifecycle from issuance through supplier confirmation to closure. This is especially useful for teams that don't use the optional milestones feature but still want a clear view of where a PO stands.

Improvement
Platform

Updated Table Toolbar Design

Tables throughout the app now have a unified toolbar at the top. The toolbar includes a variety of actions depending on the type of data being viewed, making it faster to find the right tools without leaving the page.

Improvement
Inventory

Improved Building Inventory Settings

How inventory is managed for each building is now controlled by a single, explicit field: Inventory Source. This field drives all inventory-related behavior in the system, making it clearer how each building's inventory is sourced and managed.

Feature
Supply

Shipments and ASNs Consolidated

All inbound shipments — whether intermediate (factory to port) or final (factory to warehouse) — are now simply called Shipments. A shipment can have any origin and destination. When the destination is a building in Endless Commerce, incoming inventory numbers update automatically throughout the app. For buildings managed within the platform, receiving tools are available to check items directly into inventory. For buildings managed by another system, shipments can be sent as an ASN.

Feature
Supply

Shipments And ASNs

Shipments and Advanced Shipping Notices are now available for tracking inventory as it moves from supplier to warehouse. Shipments can represent complex inbound movement, including containers that split across multiple locations.

Together with purchase orders and suppliers, this gives teams a clearer view of how inventory enters the business.

Feature
Supply

Supplier Directory

Suppliers now have dedicated records in Endless. Teams can keep supplier contact details and related supply-chain context in one place, then connect that information back to purchase orders and inbound work.

This gives procurement and operations teams a shared source of truth for the companies they buy from.

Feature
Supply

Purchase Orders

Purchase Orders are now available in Endless, giving teams a structured place to track production and inbound commitments instead of managing large orders in spreadsheets.

Each purchase order can track what was ordered, what has shipped, and where coverage is missing, with milestones and status updates to follow progress from supplier commitment through receipt.

Feature
Sales Platform

Automations

Order automations are now available in Endless. Teams can create rules that run when an order is created or updated, then use conditions like customer tags, payment state, marketplace, or other order data to decide what should happen next.

Actions can route orders, apply tags, send email or Slack notifications, call webhooks, or assign safe defaults before an order reaches fulfillment. Automations are available from the admin menu in the sidebar.

Feature
Products

Product Sheet View

Products now have a Sheet View for reviewing and editing catalog data in a spreadsheet-style workspace. Teams can update product attributes inline, move quickly across many rows and columns, and use presets for common views like key product info, dimensions, packaging hierarchy, costs, customs data, and inventory levels.

Sheet View also supports unit conversion, resizable columns, density controls, undo for edits, and collaboration notifications when teammates make changes.

Improvement
Platform

User Settings Module

Account and company settings now live in a dedicated settings module in the sidebar. Preferences, notifications, and account details are organized in one place instead of being spread across separate parts of the app.

Improvement
Integrations

Integration Tools Redesign

Integration tools have been redesigned to make connector settings easier to manage. The data mapper has also been improved, making it clearer how external data maps into Endless and easier to keep information flowing correctly between systems.

Improvement
Platform

Team Member Management

Team members can now be added directly from a company page. New users receive an invitation email, while existing Endless users can be added to the company immediately.

Users can also belong to multiple companies, making it easier to support teams that work across more than one Endless account.

Feature
Integrations Sales

EDI Beta

Endless EDI is now available in beta for retailers and trading partners that require Electronic Data Interchange. The beta supports core retail documents such as purchase orders, advance ship notices, shipping labels, and compliance tracking by retailer.

Teams that need EDI for channels like Target, Nordstrom, and other enterprise retailers can work with Endless to get set up.

Feature
Platform

Keyboard Shortcuts

Keyboard shortcuts are now available for common workflows in Endless, including moving between modules and records, copying a link to the current page, toggling the sidebar, and using quick search or filters.

The shortcut list is available from the account menu, and more shortcuts will be added as additional workflows are supported.

Feature
Products

Product Catalog Tools

Product records can now store more of the operational data teams need to manage a catalog: cost analysis, packout details, customer-specific pricing, documents, external links, and product relationships.

Relationships support product compositions, bundles and kits, and variants, giving teams a clearer way to represent how products connect to each other.

Feature
Sales

Bulk Order Cancellation

Orders can now be cancelled in bulk from the order list. Select multiple orders, use the bulk action buttons, and cancel the selected batch at once instead of opening each order individually.

This is useful when large groups of orders need to be stopped or cleaned up together.

Improvement
Integrations Inventory

Shopify Fulfillment Location Refresh

When Shopify changes the assigned fulfillment location for an order, Endless now automatically refreshes allocation. The refresh keeps inventory assigned to the right warehouse as the fulfillment location changes upstream.

This helps keep Shopify-driven orders in sync with Endless inventory before fulfillment starts.

Improvement
Sales Integrations

Order Routing Alerts

Orders from external integrations now show clearer alerts when fulfillment routing needs attention. Endless distinguishes orders that are fully assigned to external warehouses from orders where an integration requested external fulfillment but local routing is enabled.

The alerts help teams avoid duplicate shipments, missed handoffs, and confusion about which system is responsible for fulfillment.

Improvement
Sales

Edit Allocated Orders

Allocated orders can now keep changing while inventory stays reserved. Teams can update shipping service, financial information, routing instructions, fulfillment instructions, and third-party shipping billing after allocation.

This lets teams reserve inventory early while continuing to finish the operational details needed before fulfillment.

Feature
Sales

Order Task Management

Teams can now create and manage tasks on individual orders. Tasks live alongside order enrichment details, special instructions, and documents, making it easier to track follow-up work for complex fulfillment.

This is especially useful for B2B orders where several operational steps need to happen before an order can ship.

Feature
Sales

Order Approval Workflows

Sales channels can now require manual approval before orders move into fulfillment. With manual approval enabled, orders remain pending until a team member approves them, even after issues are resolved.

This gives B2B teams a draft-order workflow for preparing orders, reviewing details, and releasing them only when they are ready to process.

Improvement
Sales

Order Item Status Visibility

Order items now show more detailed statuses as they move through allocation and fulfillment. The added visibility makes it easier to understand what is ready, what is waiting, and where an order needs attention.

Improvement
Sales

Fulfillment Without Payment Controls

Orders can now be configured to allow or block fulfillment before payment is received. This supports B2B workflows where payment may come later, while still letting DTC channels require payment before fulfillment.

The control can be set by sales channel or adjusted on an individual order.

Improvement
Inventory Sales

External Warehouse Controls

Sales channels can now control whether order items may be assigned to external warehouses. Teams can allow external assignment for channels that already route through outside warehouse systems, or require managed warehouses when Endless should actively handle fulfillment.

The setting can be configured by sales channel and overridden on individual orders when needed.

Improvement
Sales Integrations

Shipping Method Mapping On Orders

Shipping methods from integrations can now be mapped directly while working on an order. A customer-facing method like "Free fast shipping" can be mapped to a fulfillment service such as UPS Ground without leaving the order page.

This keeps shipping cleanup close to the workflow where teams discover the mismatch.

Feature
Products Sales

Automatic Product Import During Order Creation

When an order arrives from an external system with products that do not exist in Endless yet, Endless can now queue an import for the missing products instead of blocking the order.

Import failures create order alerts, giving teams a clear follow-up path while preserving the order creation flow.

Improvement
Integrations Inventory

Shopify Warehouse Imports

Warehouses imported from Shopify are now created as external warehouses with consistent source tracking. Imported Shopify warehouses are marked as unmanaged, so Endless can represent them correctly without treating them like buildings managed directly in the platform.

Improvement
Platform

Improved QuickView Tools

QuickView has been rebuilt for deeper operational workflows. You can now open stacked views, follow breadcrumbs back through your path, and keep each view's scroll, tab, and form state intact while moving between related records.

The panel also has updated layout, spacing, and transitions, making it easier to inspect orders, customers, companies, and other records without losing context.

Feature
Integrations Sales

Shopify Order Reconciliation

Shopify order reconciliation now catches orders that may have been missed when webhooks fail or arrive late. Endless periodically scans Shopify for recently created orders, compares them against the orders already in Endless, and imports anything missing.

Webhooks still handle real-time order creation, while reconciliation acts as a safety net so Shopify orders do not slip through the cracks.

Feature
Platform

Endless Changelog

The Endless changelog is now live. It gives customers and the team a single place to follow product updates, workflow improvements, infrastructure changes, and customer-visible fixes.

This is the first step toward a more consistent release-note process: changes are written down clearly, dated, and grouped by the part of the business they affect.