: Staging
: Production
✨ New
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
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.
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.
Filter orders by invoice number
Added the ability to use the search
filter to find orders
and nauticalOrders
by invoice number.
Invoice refresh mutation
Added the invoiceRefresh
mutation, which regenerates an order document using the same invoice number as originally generated.
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
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
, orsucceeded
Transaction error enum replaced
The Transaction.error
field is now a string type instead of an enum.
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.
Plugin allow sellers field
The plugin
model now has the allowSellers
boolean field, which indicates whether sellers can configure the plugin.
🪲 Fixed
Fixed an issue where the option to fulfill items remained available from the marketplace order even after a seller order was cancelled.
Fixed an issue where stock allocated to draft orders wasn't being deallocated upon bulk deletion of those orders.
Fixed an issue that could prevent order emails from being sent with the type error Object of type X is not JSON serializable
.
Fixed an issue that prevented the activation of the HERE plugin.