Skip to main content

What’s new at Endless

Changelog

The latest features, improvements, and fixes across Endless Commerce.

feature

ShipBob Is Now A Connected Fulfillment Integration

ShipBob joins the set of connected fulfillment integrations alongside ShipHero, MasonHub, Veracore, and ShipStation. Connect from Integrations with a personal access token or OAuth; the integration comes up with the writable channel already set, and its fulfillment centers appear in the warehouse mapping picker so you can point Endless buildings at them.

Once mapped, DTC, B2B, and dropship orders push through with retailer program data and third-party billing already in place, and per-order channel routing follows your sales-channel mapping. Fulfillment-level gift messages take precedence over the order-level value on the way out. Shipments come back through ShipBob’s webhook by default, with a scheduled poll as a fallback, and the resulting cartons — with tracking, dimensions, and the line breakdown per carton — land on the shipment page. Sending an ASN opens a work-receiving order in ShipBob and a follow-up cancel on your side cancels it there too. Pulling inventory paces itself against ShipBob’s rate limit so a large sync doesn’t crowd out other work.

improvement

Bulk Fulfillment: Another Speed Pass

Fulfilling many orders at once is faster. The job that runs each order’s allocation and fulfillment used to repeat the same database work for every order it processed; that cost added up during large bulk fulfillments and kept database locks held longer than necessary. That redundant work is gone across inventory allocation, fulfillment materialization, and the fulfill command’s order validation. Nothing changes about what fulfillment does — just how much it does per order.

feature

Alias: A New Composable Product Type For Legacy And External SKUs

Alias is now a product type alongside Base Item, Bundle, and Part. Reach for it when a legacy or external identifier — an old SKU your customers still order under, a channel’s catalog code, a vendor part number — needs to point at the real product without duplicating its data. An Alias is defined by its components, so it inherits its price, weight, dimensions, and imagery from what it stands for.

Alias shows up everywhere Bundles do. Create and edit Aliases from the product form with the same component manager (Base Items and Parts are valid components, and the quantity stays as guidance rather than hard enforcement so alternate-unit aliases are workable). Filter by Alias in the product list, inventory views, and Purchase Order product pickers. Import Aliases through product imports, and target them in bulk edit. The identity styling and badge make Aliases easy to spot at a glance in lists and on the product sheet.

Available-to-make inventory keeps up with Alias just like Bundles. Adding, changing, or removing an Alias’s components immediately recalculates its available-to-make, company-wide inventory recalculation includes Aliases, and removing the last composition line clears its available-to-make cleanly. Orders decompose Aliases through the same composition path as Bundles, so fulfillment picks the underlying components.

improvement

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.

feature

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

Inventory Sync Runs On A New Schedule

Inventory syncs on a different cadence now, with no change to what is sent or received.

Counts pulled from warehouse systems — Extensiv, GoBolt, InfoPlus, MasonHub, ShipHero and Veracore — refresh every three hours rather than every fifteen minutes, and Business Central hourly. Shopify pulls speed up from once a day to every three hours. Pushes to Sellbrite and Rithum move to twice a day, and Faire to every three hours. Shopify’s push stays at every fifteen minutes, and Amazon and Endless EDI stay daily.

A manual refresh still pulls counts on demand whenever you need them sooner than the schedule.

feature

Supply Shipments: Pick A Destination Location Inside 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.

improvement

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.

fix

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.

feature

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.