Skip to content
Nov 4 2026

Zea 4.0.16 Release Notes

Released 2026-11-03. Changes since version 4.0.15.

Highlights

Shipping addresses now have separate fields, including a country.
Public client portals can offer an optional sign-in.
Guest orders are now saved, and you can see them in Zea.
The part page now shows inventory.

Action Required

Team Admins: Existing shipping addresses were moved to the new format without a country, and they show as unverified. Open each address, choose its country, and select Save address to have it checked.
API and webhook integrators: This release has breaking changes. Update your integration before you use this version. See .

New Features

Structured Shipping Addresses

A shipping address now has these fields: country, attention, addressee, phone, two address lines, city, state, zip, site email, and a residential flag.
Select Save address to save your changes. Save the address before you place an order, because the order button stays disabled while the address has unsaved changes.
Address suggestions now use the same separate fields.
A US PO box is still not accepted as a shipping address.
An order keeps the address it shipped to, even if the team changes its address later.
Order emails now show the address line by line, and they mark residential addresses.

Optional Sign-In for Public Client Portals

You can now add a Sign In button to a public client portal.
Team members who sign in see their team's prices and shopping cart, and their orders go to their team's address.
Visitors who do not sign in can still browse and request quotes as guests.
To turn on this feature, go to Parts > Publish. The setting shows while Public Access is on. Turn on at least one sign-in method in Parts > Authentication first.

Public Orders

Orders from guests are now saved in Zea. Before this release, these orders were only sent by email.
Parts > Shopping Carts now has two tabs: Team Carts and Public Orders. The Public Orders tab shows when each order was placed, its email, its shipping method, and its number of lines. Select an order to see its part numbers, quantities, serial numbers, notes, and unit prices.

Inventory on the Part Page

The part page in your workspace now has an Inventory section. It shows the Available Quantity and when the quantity was Last Reported, or Not tracked if the part has no stock tracking. Visitors to the public part page do not see this section.
Snapshots now show the live stock of their source workspace, matched by part number.
Known limitation: A source workspace member who is not an organization admin can see "Could not load inventory." on a snapshot's part page.

Fixes

Illustrations: The cutting plane no longer has a surface that hides the geometry that it cuts away.
Order emails: Replies now go to the customer and the Client Portal email, not to .

API and Webhook Changes

Breaking Changes

The new shippingAddressobject replaces the old address fields. The old fields are not available in this version.
Table 2
Team requests and responses
address
shippingAddress
Team responses
shippingAddressVerifiedAt
shippingAddress.verifiedAt
PUT /v1/teams/:teamId response
shippingAddressCheck.suggestedAddress as a string
The same field as an object
POST /v1/shipping-address-validations request
address
shippingAddress
POST /v1/shipping-address-validations response
suggestedAddress as a string
The same field as an object
Shopping cart responses
mailingAddress, shippingAddressVerifiedAt
shippingAddress
POST /v1/shopping-carts/:shoppingCartId/placerequest
mailingAddress (it was deprecated and ignored)
No replacement: the order ships to the team's address
order.placed webhook payload
mailingAddress
shippingAddress
⁠
The shippingAddressobject has these fields:
{
"countryCode": "CA",
"attention": "",
"addressee": "",
"phone": "",
"addressLine1": "",
"addressLine2": "",
"city": "",
"state": "",
"postalCode": "",
"siteEmail": "",
"isResidential": false
}

In requests, countryCodemust be an ISO 3166-1 alpha-2 code in uppercase, and addressLine1cannot be blank. All the other fields are also required, but they can be empty strings.
Team and shopping cart responses add id, teamId, createdAt, and verifiedAt. The order.placedwebhook adds verifiedAt.
shippingAddressis nullin a team response when the team has no address, and in a shopping cart response when no address was recorded.
countryCodeis nullon addresses that were moved from the old format.
verifiedAtis nullwhen a lookup could not confirm the address. This does not mean that the address is wrong.
PUT /v1/teams/:teamIdreplaces the whole address. It responds with 400 if the country or first address line is missing, or if the address is a US PO box.
Other breaking changes:
archivedAtis removed from service part responses, workspace sync preview responses, and service part inventory responses.
Inventory writes and deletes at /v1/service-part-inventorynow respond with 400 if the target is a snapshot workspace. Write to the source workspace instead.
The deprecated POST /v1/workspaces/:workspaceId/send-order-placed-emailendpoint now validates its body. customerEmail, a structured shippingAddress, and paramsare required.

New Endpoints

GET /v1/service-parts/:servicePartId/inventoryreturns the inventory of one part. It responds with 200 and nullif the part has no stock tracking, and with 404 if the part does not exist or is deleted.
POST /v1/shopping-carts-publicplaces a guest order and needs no authentication. It accepts 5 requests per minute from each client. This endpoint takes the address as a mailingAddressstring, and it identifies parts by partNumber.
GET /v1/workspaces/:workspaceId/shopping-carts-publiclists a workspace's guest orders, with limitand offset. Only workspace members can use it.

Other Changes

Client portal settings now include optionalLoginEnabledAt. A portal that requires or offers login must keep at least one sign-in method on.
Inventory reads on a snapshot workspace now return the live stock of its source workspace, matched by part number. Parts that exist in only one of the two workspaces are not matched.
In the place-order email parameters, dataTypeis now optional and defaults to "String".
This embedded link can't be shown.
Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.