: Staging
: Production
💎 Changed
This release contains internal improvements and maintenance updates.
: Staging
: Production
This release contains internal improvements and maintenance updates.
: Staging
: Production
Purchase order (PO) numbers added to orders are now automatically included on generated invoices, making it easier to track and reconcile orders.
Added the ability to filter and sort marketplace orders by purchase order number, improving order search and management capabilities.
Fixed an issue where declining a fulfillment could result in incorrect tax calculations when using Avalara integration.
Fixed an issue where warehouse information could fail to serialize correctly when the associated address was deleted.
Fixed an issue where top-performing product reports could incorrectly include deleted product variants.
Fixed an issue where refund webhook events were not being logged correctly.
Fixed an issue where newly added price sync options were not displayed for existing Shopify seller configurations.
Fixed an issue with inventory deallocation for draft orders that could cause incorrect stock levels.
: Staging
: Production
This release contains internal improvements and maintenance updates.
: Staging
: Production
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.
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:
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.
Checkout and NauticalOrderAdded 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 an issue where bulk creation of variants resulted in a GraphQL error ID cannot represent value: None.
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.
Fixed an issue where the orderCancel or orderBulkCancel mutations were not triggering stock deallocated webhooks upon cancelling 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.
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 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.
Fixed an issue related to the caching of invoice shipping prices and order line tax amounts.
Fixed an issue where the query for top-performing products incorrectly included deleted variants.
Added the ability to sort marketplace orders (nauticalOrder) by PO numbers.
Fixed an issue where, when enableStockAllocationForDrafts=true, stock was not being deallocated after deleting draft orders.
Fixed an issue where the Shopify price sync toggle was not appearing for sellers with existing 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
Added comprehensive backorder handling throughout the platform:
Added support for purchase order (PO) numbers on marketplace orders, making it easier to track B2B transactions and match orders to external procurement systems.
Introduced initial subscription management capabilities, including new data models, queries, and filtering options for subscription-based products and services.
Fixed an issue where searching orders by customer company name would not return correct results.
Resolved performance issues with AvaTax integration that could cause slow tax calculations during checkout.
Fixed an issue where draft marketplace orders would not properly update addresses when customer information changed.
Fixed duplicate variant attributes being created during bulk operations, improving data consistency.
Fixed an issue where stock events were not being properly recorded during order cancellation.
Fixed invoice logo display to only show when explicitly configured.
Deprecated barcode-related queries. These will be removed in a future release.
: Staging
: Production
Added the ability to apply discount vouchers to draft orders and quote orders, providing more flexibility in managing promotional offers before order completion.
Added support for setting and updating out-of-stock thresholds on product variants and warehouse stocks, allowing better control over inventory availability notifications.
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.
Fixed an issue where shipping taxes were not being properly saved for seller orders, which could result in incorrect tax calculations.
Fixed an issue preventing seller profile updates when no seller agreement was attached to the account.
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 an issue where line totals were not recalculating correctly when updating line item quantities in checkout or orders.
: Staging
: Production
Added the following webhook event types:
category_deletedcategory_updatedcollection_createdcollection_deletedcollection_updatedprice_book_createdprice_book_updatedproduct_deletedrefund_createdrefund_deletedrefund_updatedstock_deletedvariant_deletedwarehouse_createdwarehouse_deletedwarehouse_updatedAdded a new setting to the Shopify app, is_product_price_sync_enabled, that updates Nautical product prices when they are updated in Shopify. Note that this is a one-way sync, with Shopify serving as the source of truth for pricing.
Added the timezone field to the MarketplaceConfiguration model, which accepts the IANA timezone name.
This field is now honored in queries for the insights APIs. We will be honoring it in other timezone fields
in a future release.
We are now storing the total price for each line item as returned from the tax-engine, eliminating several tax-related rounding errors.
The marketplace order can now be accessed as part of payment queries through a new nautical_order field on the Payment type
We made several performance improvements around draft order APIs when the order contains a high number of line items.
The orders and nauticalOrders queries have a new filter to query by company name.
The orderDeclineFulfillment mutation now requires the quantity to be listed with the associated warehouse via a new stocks field. This allows the declined items to be deallocated back to the correct warehouse.
mutation {
orderDeclineFulfillment(
order: "T3JkZXI6MTMzMDk="
input: {
notifyCustomer: true
lines: {
orderLineId: "T3JkZXJMaW5lOjMwMzIy",
stocks: [
{
quantityDeclined: 1,
warehouse: "V2FyZWhvd...mUyYWYxZQ=="
}
]
}
}
) {
fulfillments {
id
status
totalLinesQuantity
lines {
id
quantity
}
}
}
Fixed an issue where refunds were not including taxes in the refundPayment total. A new total_gross field is introduced to process the refundPayment with taxes included.
Fixed an issue where seller staff members could view products owned by other sellers when working with categories.
Fixed an issue where the stock_allocated, stock_deallocated, and stock_updated webhooks were not being triggered by order events.
Fixed an issue where the payout_updated and vendor_payout_updated webhooks were not being triggered by certain payout events.
Fixed an issue where the seller_updated webhook was not being triggered when metadata updates.
Fixed an issue filtering categories when the seller is a member of a master marketplace.
Fixed an issue where the quantity field on order types should be required. Note: This field has been deprecated. We will eventually
prefer the quantityOrdered field.
Fixed an issue where line quantity updates were not always triggering updates in tax calculation plugins.
Fixed an issue where multi-currency environments would crash if a discount was applied.
Added the ability to add and remove vouchers on a draft or quote order. Vouchers can be managed on draft or quote orders through the following new mutations:
NauticalOrderUpdateApplyVoucherCodeNauticalOrderUpdateDeleteDiscountOrderUpdateApplyVoucherCodeOrderUpdateDeleteDiscountmutation {
NauticalOrderUpdateApplyVoucherCode(
id: "TmF1dGljYWxPcmRlcjo1"
voucherCode: "SEPT10OFF"
) {
nauticalOrder {
id
discount {
amount
}
voucher {
id
name
code
}
}
orderErrors {
field
message
code
}
}
}
Added the display of VAT Business Identification No to invoices generated from a marketplace order. The value is pulled from the taxId field on the seller account reserved for the marketplace (seller #1).
Date search filters now respect the marketplace timezone.
Fixed an issue with seller order filtering when searching by both first and last name in the search filter.
Fixed an issue where shipping taxes for seller orders were not being saved when manually creating a payment against a draft order.
Fixed an issue where the updateSeller mutation would fail if the seller did not have an attached agreement.
: Staging
: Production
Added webhooks for many platform events, giving integrations more visibility into marketplace activities:
Webhooks now support plural permissions, making it easier to configure which apps can receive specific events.
Added the ability to enable backorders at both the marketplace and product variant level:
Added timezone support to marketplace configuration, allowing you to:
Order line totals are now stored directly on order line models, improving query performance and data consistency.
Made several performance improvements across the platform:
Marketplace product prices now automatically sync with Shopify product prices, keeping pricing consistent across platforms.
Fixed an issue where refund totals were calculated incorrectly when processing payment refunds.
Fixed an issue where sellers could see products from other sellers within category views.
Fixed product visibility handling for master marketplace categories.
Fixed an issue where stock webhooks were not firing correctly when orders were placed and fulfilled.
Fixed an issue where the Avalara tax plugin was returning incorrect values in certain scenarios.
Fixed an issue where items were not properly deallocated when fulfillments were declined.
Fixed an issue where searching orders by company name was not working correctly.
Fixed an issue where checkout discounts were not being recalculated correctly in certain contexts.
: Staging
: Production
Added webhook events for warehouse operations, enabling integrations to receive real-time notifications about warehouse changes.
Added price_book_created and price_book_updated webhook events to notify integrations when price books are created or modified.
Added webhook events for category operations, including category_deleted and category_updated, allowing integrations to track category lifecycle changes.
Added product_deleted and variant_deleted webhook events to notify integrations when products or variants are removed from the marketplace.
Added webhook events for collection operations, including collection_created and collection_deleted, enabling integrations to track collection changes.
Added the ability to configure a timezone for the marketplace, improving accuracy of date and time displays across the platform.
Marketplace product prices now automatically sync with Shopify product prices, ensuring price consistency across both platforms.
Fixed an issue where refund totals could be calculated incorrectly, now properly using the gross amount from refund lines.
Fixed an issue where sellers could see products from other sellers within a category. Sellers now only see their own products when viewing category listings.
Fixed an issue where stock-related webhooks were not firing properly when orders were placed and fulfilled.
Fixed issues with the payout_updated and vendor_payout_updated mutations to ensure they work correctly.