Skip to main content

What’s new at Endless

Changelog

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

feature

Shopify: Choose Where the Note From Customer Lands

Shopify imports now let you pick where the Note from Customer on a Shopify order lands: Instructions (default), Gift message, Both, or Neither. Set it per-integration under Shopify → Orders in the integration settings.

Before this, the note always went to the order’s Instructions. Stores that treat the customer note as a gift message never received it; stores using it for PO / handling instructions were fine. The new setting fixes both directions: pick Gift message and the note lands there instead, pick Both and it’s written to both fields.

Each mode only writes the fields it names, so switching modes never overwrites data in the other field. The audit line on the order timeline (Note from Shopify: …) is preserved in every mode.

improvement

Product Tariff Calculator: Opens The In-App Tool

The “Tariff Calculator” link on a product’s Customs Information card now opens the in-app Tariffs tool for companies with the tool enabled, instead of the external tariffs site. The external-link icon on the link only shows when it still points at the external site.

feature

Manage Images: Remove Images from the DAM

You can now remove a product image from the DAM. In Manage Images, each image card gets a Trash action, and the sidebar exposes destructive Archive Image / Archive Images actions for single and multi selection. Pick one or many, confirm the archive dialog, and they’re removed from the DAM; unsaved edits are guarded before the archive runs, and the grid refreshes when it’s done.

Underneath, archiveImage soft-deletes the image and cascades the cleanup — the original is archived, every image variant is archived via the same cascade, and every image_relationships row pointing at it is destroyed in one transaction. Guarded by media:update_image and scoped so an image belonging to another company is rejected before anything is touched.

feature

Automations: Set A Fulfillment’s Details When It’s Created

Automations can now set fulfillment details automatically when a new fulfillment lands. Pair the new “Set Fulfillment Dynamic Field” action with the “fulfillment created” trigger, pick a field, and set the value once — every fulfillment created under that rule picks it up.

Four fields are supported: instructions, gift message, third-party billing (on/off), and carrier service. Carrier service routes through the shipping-instructions update path so the requested carrier name and id land together; the other three go through the fulfillment-details update path.

feature

Internal Notes: Edit Your Own Notes In Place

Internal notes on Sales Orders, Purchase Orders, and Shipments can now be edited. Each note you wrote shows an Edit action that opens the same dialog you used to add it, prefilled with the current content. Saving updates the note in place and marks it with an “(edited)” indicator so anyone reading the timeline knows it changed since it was posted. Only the note’s author can edit their own notes; everyone else’s stay read-only.

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.

feature

Orders: Change Where An Order Came From

Sometimes an order ends up stuck on the wrong integration — the store’s old connection was replaced, or the integration got reconnected under a fresh record and the order is still pointing at the archived one. It can now be moved.

Open a V2 order and choose Assign source integration (or Change source integration) from the action menu — the command palette has it too. Pick another live integration for the same store from the picker, confirm, and the order is repointed. The new integration takes ownership and, if it supports it, refreshes the order data on its next pass.

A few guardrails so nothing surprising happens: the order has to be claimed locally (not currently owned by another integration), it needs an external order id, and it can’t have active fulfillments. If any of those aren’t in place, the dialog spells out what to fix. Reassignments have to stay within the same integration type. Admin, operator, and order-receiver roles have the permission by default.

Alongside this, skipped Shopify order updates and unsupported order resets now show the actual reason on the order timeline — “authority not held”, “no warehouse”, “reset unsupported” — instead of a generic error.

fix

Product Search: Fast Again On Very Large Catalogs

Searching for a product to add to a Purchase Order, a Supply Shipment, a bundle, an echo SKU, or from the command palette now returns results quickly on very large catalogs — pages that used to time out and show “No products found” on accounts with over a hundred thousand products come back in a fraction of a second. Name and SKU search return the same products as before, just fast enough to actually use.

improvement

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

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 at every entry point, including 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.