Skip to main content

What’s new at Endless

Changelog

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

feature

Product Labels: Print UPC Barcodes At The Unit Level

A Create Product Labels tray prints GS1-conformant UPC-A and EAN-13 barcodes for your products — the unit-level companion to the carton label generator. Fitting follows the printed spec: 80–200% magnification, full bar height when possible, and truncation only when height alone forces it and never at the expense of the text you asked for.

Stock options cover the common roll and sheet sizes, including a few that can’t carry a conformant barcode (flagged as such, since the generator can still print other things onto them), plus a custom size for anything not listed. Content is a reorderable list of fields — SKU, price, brand, country of origin, dimensions, weight, custom text, or any of your product attributes. Settings stick between sessions. Output is a PDF, either downloaded or sent straight to the browser print dialog, with per-product copy overrides and a calibration offset for squaring sheet stock up to a printer’s actual feed.

improvement

Media Tools: A Few Refinements

A handful of small improvements across the media tools:

  • Find Images has select-all and clear toggles per product row and across the whole review, with a live count of how many images are selected. Every candidate tile shows a keyboard focus outline as you tab through the grid.
  • The Associated Products search inside the image editor now floats above the page, so the whole match list stays inside the viewport instead of being clipped by the sidebar.
  • In the image editor, Save and Cancel stay pinned to the top of the panel as you scroll, and Archive sits below a divider at the end of the panel and says why it is disabled when it is.
feature

Create Carton Labels From Products

Select products in the product list and choose Create Carton Labels from Bulk Actions, or use the same action on a product’s detail page, to generate master and inner carton labels as a PDF from each product’s packout data. Each file holds one carton type, in 6x4 landscape or 4x6 portrait. The GTIN prints as a real ITF-14 barcode at the size the GS1 spec requires, and the on-screen proof shows the label at print size, so what you approve is what prints. Products missing a unit count or GTIN are listed first and can be fixed in the same tray before you generate.

The creator opens as a dialog, so menus and selects on the page behind it stay usable while it is open, including fulfillment-rule menus. This is separate from the GS1-128 carton labels generated on an EDI fulfillment’s Containers tab; those still work the same way.

fix

QuickBooks: Push To Accounting Updates A Linked Item

Push to Accounting can now update a linked item in QuickBooks Online. Before, an update could be issued and Endless would report it as pushed, but nothing in QuickBooks changed. Update requests now include the fields QuickBooks requires, preserve the fields Endless does not map, and retry once against the current version if QuickBooks has changed the item since the last import. An item without a sales or a purchase side is refused up front instead of failing on the way out. A refusal that QuickBooks itself blocks — clearing the income account on some existing items — now reaches the operator as a failure instead of a green result.

improvement

Media And Images: One Upload Dialog, Broken Images Fixed

Uploading images from the Media library and from a product page now uses the same dialog. The two were built separately and looked and worked differently — different drop areas, different copy, and one started uploading on drop while the other staged files behind an Upload button. They now share the same shape and per-file progress with the filename, and stay a consistent size whether the page already has images or not. The Media library dialog starts uploading as soon as files are dropped, and you can add a second batch before continuing on to link them to products. Freshly uploaded images no longer render as a broken placeholder — 271 images in production across seven companies had been stuck that way — because uploads now match up through the upload request that started them, so the client-side row and the server-side confirmation always land on the same image record. And under the Associated Products heading, the search box now names what you can search on and what happens when you pick a result, so it reads as the way to add an association instead of a filter over the ones already there.

Behind the scenes, image-upload webhooks now record activity through the same path as other actions, so duplicate deliveries no longer create duplicate rows, and image archive and bulk-upload actions show up in the activity feed. Archived timestamps record when the archive happened, so the value stays stable if the record is rebuilt. A few smaller cleanups landed alongside: unused arguments dropped off four of the five media actions that never read them, and a redundant ownership check that the caller already guaranteed came out.

improvement

QuickBooks: Map Suppliers To Vendors, And A Safer Push

The QuickBooks Data Mapping tab has a Suppliers table. Each supplier gets a picker that searches your QuickBooks vendors as you type, and selections stage in the table so you can work through several and save them together. Pull vendors re-imports the list without leaving the tab, and a vendor already mapped to one supplier is unavailable in the others, so the same vendor cannot be used twice. If you connected QuickBooks before this, run Import Vendors once so vendors you have already synced appear in the picker.

Two changes on the product header. Push to Accounting asks for confirmation before it runs, rather than overwriting the QuickBooks record on the first click. The Synced to accounting badge is gone: it recorded that a push had happened, not that the two records still agreed, so a product that had drifted still read as up to date.

Sales enabled now defaults on when you apply defaults, matching QuickBooks’ requirement that inventory and service items carry an income account; records created with it off were refused. A company with more than one accounting integration connected can push to the one it names rather than whichever was found first.

fix

Archiving Large Product Attributes No Longer Stalls

Archiving a product attribute definition used to update every value on every product one at a time. Definitions with roughly 153,000 values could stall out and roll the archive back, so a large attribute could not actually be archived. Archiving is now a single change on the definition itself and hides its values across every product through that change, so a large definition archives as quickly as a small one.

Clearing a value on a product now removes it rather than leaving an archived-empty record in place. Restoring a definition brings back only the values that still exist, and filters, integrations, unit-of-measure conversion, cloning, and value suggestions all follow the parent’s visibility.

feature

Product Costs: Defaults, Estimates, And Bulk Tools

The three product-level costs — Unit Cost, Landed Cost, and Dropship Unit Cost — read as Default Unit Cost, Default Landed Cost, and Default Dropship Unit Cost on the product sheet, the product detail, purchase orders, bulk edit, and the CSV import and export columns. The new name reflects how the value is used: a default that a supplier estimate can override, entered by a person, and blank if none has been set. Gross margin uses Default Landed Cost when it’s present and falls back to Default Unit Cost, so a product with only a unit cost still shows a margin figure.

The Pricing & Costs section on a product separates defaults from estimates. Default Unit Cost, Default Landed Cost, and Default Dropship Unit Cost sit in editable cards at the top. Below them, a Cost Estimates table lists every estimate — your own or from a supplier — with add, edit, duplicate, and archive on each row, a popover for the labor, materials, packaging, freight, and duties breakdown, and a way to promote a single value from an estimate straight to the matching default. Each estimate can carry an effective date, and Current, Scheduled, and Archived badges show what’s live, what’s queued to take over, and what’s been retired. An estimate no longer needs a supplier attached — the question “what should this cost to make?” is stored directly. Profitability at the top of the page is computed from MSRP and Default Landed Cost, falling back to Default Unit Cost if the landed value isn’t set. Completeness for a product accepts either the full stocked cost set or just the dropship unit cost, so a dropship-only product no longer needs a stocked cost to count as complete.

Product Cost Estimates now round-trip through CSV, supplier costs and internal estimates together. Imports create or update by SKU, supplier, cost type, and quantity tier, and carry lead times and cost breakdowns row for row. Row-level errors call out what did not import. Omitting a cost field leaves the current value alone; blanking it clears it. Unit cost is required and must be greater than zero, and effective date is a supported column. Exports respect the current filters on the Products page and produce a file that can be edited and re-imported directly. The Products list Import and Export actions have also been consolidated behind two menus, each opening a dialog that lets you pick Products, Product Cost Estimates, or Relationships. Command palette, table menu, and first-run empty state all point at the new dialog.

feature

GS1 Prefixes, UPC Assignment, And Packaging GTINs

Companies with a GS1 licence can now manage their prefixes in Endless and assign UPCs from them to products, without hand-typing codes or tracking a spreadsheet on the side. Each prefix records its item-reference space, so the number of codes still available comes straight from what the licence actually grants, and Endless will not mint the same code twice or hand out a code that falls inside another company’s prefix. Blocks of assigned codes can be exported to CSV.

UPC assignment lives on the product. Clearing a UPC keeps other product fields untouched, and the app asks whether to release the code back to the prefix once the product has moved off it — kept as a separate step because GS1 does not allow a released code to be reused. Product packaging can also carry GTINs, tied to the same prefix rules. The feature is in early access and available on request.

feature

Archive And Restore Product Attributes

Product attributes can now be archived and restored, the same way products, suppliers, and images already can. Archived attributes drop out of the default attributes list; a filter at the top of the list includes them alongside active ones or shows them on their own, each carrying an Archived badge. Opening an archived attribute lands on a read-only detail view with a Restore action and an Archived banner at the top. On a product, an archived attribute keeps its tag with an archived treatment, and the edit toggle switches to a View details link that opens the same read-only view.

Creating a new attribute with the same name or handle as an archived one now says exactly that — an archived attribute already uses this name, restore it instead — so an operator does not silently mint a duplicate. The archive confirm dialog also reads correctly in both directions now: it was only offering Archive, and now offers Restore when the attribute is archived.