Skip to main content

Changelog

Traide Changelog

We regularly update our product and API while providing detailed notes on each release. We first release to staging, then to production about a week later. Learn more about our release process.

: Staging

: Production

✨ New

Orders

Notes on order lines

Added the ability to include custom notes on individual order lines, providing more flexibility for capturing line-level details and instructions.

Emails

Original image URLs in email payloads

Email notifications now include the original image URLs for products, making it easier to display high-quality product images in custom email templates.

Products

Sort products by brand and manufacturer

Added support for sorting products and variants by brand and manufacturer, making it easier to organize and browse large product catalogs.

💎 Changed

Shipping

Improved shipping method handling

Simplified how shipping methods are managed for marketplace orders, improving reliability and making it easier to update shipping information after an order is placed.

API

Internal data structure improvements

Updated several internal data structures to improve consistency and maintainability across the platform. These changes are transparent to API consumers.

🪲 Fixed

Payments

Fixed an issue where payment webhook race conditions could cause inconsistent order states when multiple payment events occurred simultaneously.

API

Improved error messages when attempting to create duplicate authentication tokens, making it clearer what action needs to be taken.

Orders

Fixed an issue where the seller order status could be incorrect when checking if a seller is the only seller on a marketplace order.

Webhooks

Fixed an issue where webhook payloads could serialize date fields incorrectly, ensuring consistent date formatting across all webhook events.

: Staging

: Production

✨ New

Integrations

Enhanced Stripe integration with webhook listeners

Added webhook listeners for Stripe integrations, ensuring automatic updates to order payment statuses in Nautical. This is particularly useful for Stripe transactions where payment completion is delayed, like ACH payments.

Nautical will now reflect the following Stripe events:

  • payment_intent.amount_capturable_updated
  • payment_intent.canceled
  • payment_intent.payment_failed
  • payment_intent.processing
  • payment_intent.succeeded
note

To activate Nautical's Stripe webhook listening, you need to re-save your Stripe plugin configuration. This will automatically update the "Webhook endpoint" and "Webhook secret key" fields in the plugin.

Orders

Decline all order lines

You can now decline all order lines in a seller order. If all lines are cancelled, the seller order status updates to Cancelled. Additionally, the shipping cost for that order resets to $0, and its total cost is deducted from the marketplace order total.

Orders

Filter orders by invoice number

Added the ability to use the search filter to find orders and nauticalOrders by invoice number.

Invoices

Invoice refresh mutation

Added the invoiceRefresh mutation, which regenerates an order document using the same invoice number as originally generated.

Learn more ->

Invoices

Removed items section on invoices

Invoice documents for orders with declined fulfillments now include a "Removed Items" section, listing each line item that was removed from the order.

💎 Changed

Payments

Payment token validation

Updated the checkoutPaymentCreate and nauticalOrderPaymentCreate mutations to include validation of the supplied token. The validation checks ensure:

  • The token has not been previously used, preventing duplicate tokens.
  • The token is valid according to the gateway, and the amount provided to the API is appropriate for the token.

For Stripe in particular, we now perform the following validation:

  • The payment intent specified by the token exists
  • The payment amount specified matches the payment intent amount in Stripe
  • The payment intent status is either processing, requires_capture, or succeeded
Payments

Transaction error enum replaced

The Transaction.error field is now a string type instead of an enum.

Webhooks

Breaking change for webhooks

Implemented strictly typed data classes for more robust and structured webhooks. This approach negates the need for custom webhook fields, as we can now generate model-like payloads with more complex nested data structures.

The structure and contents of the following webhook payloads have been changed:

  • Product webhooks: product_created, product_updated, product_deleted
  • Variant webhooks: variant_created, variant_updated, variant_deleted
  • Warehouse webhooks: warehouse_created, warehouse_updated, warehouse_deleted
  • Stock webhooks: stock_created, stock_updated, stock_deleted
  • Stock allocation webhooks: stock_allocated, stock_deallocated
  • Agreement webhooks: agreement_created, agreement_updated, agreement_deleted
  • Microsite webhooks: microsite_created, microsite_updated
  • Collection webhooks: collection_created, collection_updated, collection_deleted

As a result of these changes, existing logic that utilizes the above webhooks should be updated to align with this new, more structured webhook format. Follow the learn more link below to view the new webhooks.

Learn more ->

Integrations

Plugin allow sellers field

The plugin model now has the allowSellers boolean field, which indicates whether sellers can configure the plugin.

🪲 Fixed

Orders

Fixed an issue where the option to fulfill items remained available from the marketplace order even after a seller order was cancelled.

Stock

Fixed an issue where stock allocated to draft orders wasn't being deallocated upon bulk deletion of those orders.

Emails

Fixed an issue that could prevent order emails from being sent with the type error Object of type X is not JSON serializable.

Integrations

Fixed an issue that prevented the activation of the HERE plugin.

: Staging

: Production

✨ New

Orders

Decline all order lines in a seller order

Added the ability to decline all order lines within a seller order at once, streamlining order management workflows.

Orders

Update PO numbers on finalized orders

You can now update purchase order (PO) numbers on marketplace orders even after they've been finalized, providing more flexibility in order tracking.

Orders

Invoice number filtering

Added the ability to filter orders and marketplace orders by invoice number, making it easier to locate specific orders.

Orders

Invoice refresh mutation

Introduced a new mutation to refresh invoices, allowing you to regenerate invoice documents when needed.

✨ New

Payments

Stripe payment metadata

Payment intents created through Stripe now include custom metadata, enabling better tracking and integration with external systems.

Payments

Stripe webhook integration

The Stripe payment plugin now listens to webhooks for real-time payment status updates, including successful payments, cancellations, pending states, failures, capture events, and refunds.

Payments

Gateway token validation

Payment gateway tokens are now validated when creating payments, improving security and reducing payment errors.

✨ New

Seller mgmt

Seller configuration limits

Marketplace operators can now limit which plugins and configurations are available to individual sellers, providing more granular control over seller capabilities.

✨ New

Integrations

Refined plugin categories

Plugin categories have been reorganized to improve discoverability and organization of integrations.

✨ New

Products

Removed items on documents

Invoices, packing slips, and purchase orders now include a dedicated section for removed items when applicable.

💎 Changed

Orders

Fulfillment for cancelled orders

Orders that have been cancelled can still be fulfilled if needed, providing more flexibility in handling edge cases.

🪲 Fixed

Orders

Fixed an issue where stock wasn't properly deallocated when bulk deleting draft orders.

🪲 Fixed

API

Fixed an issue where dates and decimal values weren't consistently returned as strings in API responses.

🪲 Fixed

Payments

Fixed an issue where transaction error messages could be incorrectly formatted.

🪲 Fixed

Integrations

Fixed an issue with the HERE Maps plugin authentication check URL.

: Staging

: Production

💎 Changed

API

This release contains internal improvements and maintenance updates.

: Staging

: Production

✨ New

Orders

Purchase order numbers on invoices

Purchase order (PO) numbers added to orders are now automatically included on generated invoices, making it easier to track and reconcile orders.

Orders

Filter and sort orders by PO number

Added the ability to filter and sort marketplace orders by purchase order number, improving order search and management capabilities.

🪲 Fixed

Tax

Fixed an issue where declining a fulfillment could result in incorrect tax calculations when using Avalara integration.

Orders

Fixed an issue where warehouse information could fail to serialize correctly when the associated address was deleted.

Products

Fixed an issue where top-performing product reports could incorrectly include deleted product variants.

Webhooks

Fixed an issue where refund webhook events were not being logged correctly.

Shopify

Fixed an issue where newly added price sync options were not displayed for existing Shopify seller configurations.

Orders

Fixed an issue with inventory deallocation for draft orders that could cause incorrect stock levels.

: Staging

: Production

💎 Changed

This release contains internal improvements and maintenance updates.

: Staging

: Production

✨ New

Orders

Backorders API

Added the ability to enable backorders with customizable settings, allowing you to set backorder thresholds and selectively activate this feature for specific product variants.

To activate the backorders feature, a new marketplace configuration enableBackorders field has been introduced. Once enabled, you can control which items are eligible for backordering through the allowBackorders boolean field on each product variant. By default, both fields are set to false (off) to maintain your current settings.

When adding or adjusting stock, StockInput now accepts the outOfStockThreshold field, which defaults to 0. This field allows you to set a negative value for how far stock levels can go below zero. When backorders and thresholds are set up, the quantityAvailable field can take on a negative value, but it cannot go past the limits defined by the outOfStockThreshold.

Learn more ->

Integrations

Webhook queue manager plugins

Refactored webhooks to enhance security and functionality in conjunction with queue manager plugins. If any of the following plugins are enabled, webhooks will now be directed to their respective queues:

  • Amazon Simple Queue Service
  • Google Cloud Pub/Sub
  • Microsoft Azure Service Bus
note

When you enable one of the above plugins, the queue is automatically subscribed to all webhook events. There is no filtering on the Nautical side as to which events are sent to the queue.

Orders

Store PO number on Checkout and NauticalOrder

Added the capability to store Purchase Order (PO) numbers in both the Checkout and NauticalOrder models. This includes the ability to search for purchase order numbers using the search filter.

During the checkout process, you can use the checkoutAddPoNumbers mutation to input one or more PO numbers, allowing buyers to easily reference these during transactions. You can also use the checkoutRemovePoNumber mutation to remove a PO number.

Once the checkout is completed, these PO numbers are saved to the resulting NauticalOrder. This ensures that each marketplace order can have one or more associated PO numbers for record-keeping and future reference. After checkout, you can manage PO numbers by updating the NauticalOrder directly.

🪲 Fixed

Catalog

Fixed an issue where bulk creation of variants resulted in a GraphQL error ID cannot represent value: None.

Orders

Fixed an issue that prevented searching for seller orders by the customer's company name. The search filter now includes the customer's company name if the token running the GraphQL query has the manage_users permission.

Webhooks

Fixed an issue where the orderCancel or orderBulkCancel mutations were not triggering stock deallocated webhooks upon cancelling orders.

Orders

Fixed an issue where changing the customer in a draft marketplace order did not update the customer address. Now, when you select a different customer, the address fields will automatically update to reflect the new customer's information.

: Staging

: Production

API v1.12.1

✨ New

Orders

Surface PO number on invoice

Invoices now display PO numbers if they are available on the corresponding marketplace order (NauticalOrder). Invoices must be regenerated for this change to take effect.

🪲 Fixed

Orders

Fixed an issue where declining the full quantity of an order line from a marketplace order did not update the nauticalOrder.total.tax.amount value to reflect the adjusted tax amount. This inconsistency also affected invoice information, making invoices different from what was displayed on the Order Details page in the dashboard.

Orders

Fixed an issue related to the caching of invoice shipping prices and order line tax amounts.

Insights

Fixed an issue where the query for top-performing products incorrectly included deleted variants.

: Staging

: Production

API v1.12.2

✨ New

Orders

Sort orders by PO number

Added the ability to sort marketplace orders (nauticalOrder) by PO numbers.

🪲 Fixed

Inventory

Fixed an issue where, when enableStockAllocationForDrafts=true, stock was not being deallocated after deleting draft orders.

Integrations

Fixed an issue where the Shopify price sync toggle was not appearing for sellers with existing integrations.

: Staging

: Production

API v1.12.3

🪲 Fixed

Integrations

Fixed an issue that prevented the order_creation email to send in certain circumstances with an TypeError: Object of type X is not JSON serializable error.

: Staging

: Production

✨ New

Products

Backorder support

Added comprehensive backorder handling throughout the platform:

  • Products now respect out-of-stock thresholds when determining availability.
  • Checkout completion accounts for backorders, allowing orders to be placed even when inventory levels are below the threshold.
  • Order line allocation properly handles backorder scenarios during order fulfillment.
Orders

Purchase order numbers

Added support for purchase order (PO) numbers on marketplace orders, making it easier to track B2B transactions and match orders to external procurement systems.

API

Subscription queries and models

Introduced initial subscription management capabilities, including new data models, queries, and filtering options for subscription-based products and services.

🪲 Fixed

Orders

Fixed an issue where searching orders by customer company name would not return correct results.

Tax

Resolved performance issues with AvaTax integration that could cause slow tax calculations during checkout.

Orders

Fixed an issue where draft marketplace orders would not properly update addresses when customer information changed.

Products

Fixed duplicate variant attributes being created during bulk operations, improving data consistency.

Orders

Fixed an issue where stock events were not being properly recorded during order cancellation.

Orders

Fixed invoice logo display to only show when explicitly configured.

🚫 Deprecated

API

Deprecated barcode-related queries. These will be removed in a future release.

: Staging

: Production

✨ New

Orders

Apply vouchers to draft and quote orders

Added the ability to apply discount vouchers to draft orders and quote orders, providing more flexibility in managing promotional offers before order completion.

Products

Out-of-stock threshold management

Added support for setting and updating out-of-stock thresholds on product variants and warehouse stocks, allowing better control over inventory availability notifications.

🪲 Fixed

Orders

Fixed an issue where searching for orders by customer name in the seller order list would not return accurate results when searching for both first and last name together.

Orders

Fixed an issue where shipping taxes were not being properly saved for seller orders, which could result in incorrect tax calculations.

🪲 Fixed

Seller mgmt

Fixed an issue preventing seller profile updates when no seller agreement was attached to the account.

🪲 Fixed

API

Fixed an issue where date search filters in GraphQL queries would not respect the marketplace's configured timezone, potentially returning incorrect results for date-based queries.

: Staging

: Production

🪲 Fixed

Orders

Fixed an issue where line totals were not recalculating correctly when updating line item quantities in checkout or orders.

Was this page helpful?