2024
New features, enhancements, and fixes released on the Swell platform in 2024.
December 2024
Platform
- Removed wording regarding shipping in the default order confirmation email template, if the order contains only digital products
- Updated cart validation conditions when creating new orders to not throw an error when the
billing.methodfield is missing, since this is not explicitly required to successfully process an order
Developer
[swelljs]
- Fixed module imports for Node 22+ compatibility
- Fixed Typescript default export
- Patched dependencies
November 2024
Platform
- Any changes made to settings records are now visible in developer logs
- Voided invoices are now skipped when attempting to retry subscription payments
- Fixed bug in failed payment notifications where the default card on the account would be displayed instead of the card from the order/invoice
- Precision of item weight calculations has been increased to get more accurate totals for very lightweight products
- Fixed bug where product variants with a
nullprice were incorrectly converted to0for currencies other than the store’s base currency, overriding the fallback price - Fixed bug where variant images could not be updated for existing products on stores with certain model configurations
- Fixed bug where the shipment weight of bundle products was not being added to the cart correctly
Dashboard
- Fixed issue with account credit balance not converting correctly when changing a customer’s currency
October 2024
Platform
- Fixed bug where base currency symbol was not being rendered in order confirmation email templates
- Fixed bug with the
product.stock_adjustedwebhook that causedprev_stock_levelto always return as0
Dashboard
- Reports: Partial refunds on subscription invoices are now included in subscription sales report calculation logic
- Reports: Sales amounts across multiple currencies are now converted to the store’s base currency in all reports
- Orders: When the order total includes taxes in the item or shipping prices, a tooltip is now displayed with a breakdown for each
- Orders: Fixed error that would occur when a product has been deleted from an order
- Multi-currency: Added check to ensure sale price cannot be higher than list price if using priced currencies
- Custom fields: Fixed the vertical alignment of date/time input fields
Hosted checkout
- Address autofill on USA stores had stopped working after an upstream SDK update; this has now been patched
Apps
- Added error handling for cases where webhook handler functions have been deleted
Developer
[swell-js]
- Refactored array merging logic to handle nested values more reliably when using
$setand$unsetmethods on cart objects
[swell-node]
A new major version (v6.0.0) has been released with multiple changes:
- The entire library has been rewritten in TypeScript
- Node v16 or higher is required
- The previous wire protocol was replaced with plain HTTP to improve performance instrumentation, address occasional hard-to-debug state issues, and pave the way for a new caching strategy
- As a result, client-side caching is no longer supported and support for event listeners (e.g.,
client.on('error', ...)has been dropped
Upgrading to this release is strongly recommended.
September 2024
Platform
- Webhooks that continue returning an error are now disabled after 3 days (down from 7 days)
- Custom
from:email addresses are now supported on notifications sent via Mailgun - Notifications now include
undeliverableandundeliverable_reasonfields in case the email cannot be delivered to the recipient’s inbox
Dashboard
- Fixed visual bug where the labels of custom media fields were hidden by the preview image container
- Improved handling of products and variants imported via CSV
- Sales reports now include partial refund amounts when calculating net sales amounts
- Improved accuracy of Sales by product reports where multiple order items include the same product
- Fixed bug with formula fields resetting when editing the field configuration
Apps
- Authorize.net: Currency amounts are now rounded to 2 decimal places to avoid a “Payment authorization failed” error from the gateway during processing
- Klaviyo: Phone numbers are now encoded with
E.164format to address issue with Klaviyo rejecting orders with improperly entered phone numbers - Shipstation:
- Orders now include the
requestedShippingServiceto identify which shipping service the customer selected during checkout - Added variant details on shipment line items
- Added ability to pass custom headers in Shipstation API requests
- Orders now include the
Developer
[graphql]
A new and improved GraphQL endpoint is now available at https://<your-store-id>.swell.store/graphql/v2. We’ve refactored how connections between models are generated to enable automatic expansion of linked objects within a query, improving support for fetching across models.
August 2024
Platform
- Subscription coupons are now removed from subsequent orders once their limit of cycles has been reached
- Added support for additional special characters in customer account emails—the validator now matches the HTML email field validator specification.
- Optimized lookup speed of session and user queries
- Improved data integrity of secondary languages during CSV import
- Added extra billing method check on subscriptions created from orders to persist payment changes via API during order processing
- Fixed error when trying to make POST requests to
/accountswith a password, if the account does not have password set - Addressed promotions edge case where product B would be added to cart while the minimum quantity of product A was not reached
Dashboard
- Disabled
contentnamespace for pages model to prevent field name collisions - Expanded permissions for non-owner users to enable developer tools regardless of user role
- Fixed page freeze after adding a new custom field
- Fixed visual alignment of remove button on gift card denominations
Hosted checkout
- Fixed sizing of Amazon pay button to avoid visual overlap with input form
- Added extra order validation check to ensure no promotions expired while the customer was going through the checkout process
Apps
- Zapier: Fixed invalid credentials error and improved error messages shown in UI
July 2024
Platform
- Added fixed (non-recurring) coupon discount logic for shipping and order total on subscription orders/invoices
- Added automatic tax calculation for digital bundle products on subscriptions
- Fixed bug where applying both a coupon and promotion to a category can result in a negative total
- Addressed case where customer credit balance resets when deleting a credit card
- Fixed bug where subscriptions could not start the next cycle if a product is discontinued
Dashboard
- Rate limited requests are now displayed in developer console logs
- Improved UX for removing a group from customer account profiles
- Added support for partial subscription payments using account credit
- Users are now shown in activity feed even if they have been deleted
- Address book now shows more than 15 addresses
- Fixed visual bug when there are too many product options to be displayed inline
- Out-of-stock tab now includes products and variants without a
stock_levelvalue when stock tracking is enabled
Hosted checkout
- Added the ability to set a default value for the marketing email opt-in checkbox
Developer
[admin console]
- Rate limited requests are now displayed in developer console logs
[swell-js]
- Added
page_limitto paginated results object - Added types for pagination limit
- CORS/credential headers are now included only on requests originating from the browser
June 2024
Platform
- Billing addresses added during checkout are now automatically added to the customer account’s address book
- Reworked shipping discount calculation so that shipping gets calculated after item discounts are applied
- Fixed changing a subscription address when the default was previously used
- Fixed discount calculation when creating a subscription from an order
- Fixed bug that caused child models to lose standard fields when removing custom fields from the parent model
- Fixed ObjectID validation logic causing some emails to be treated as objectIDs
- Fixed stock tracking for extra fulfilled items on orders
Dashboard
- Fixed some products showing as on sale when they aren’t
- Fixed 0.01 shipping price difference in subscription view
Hosted checkout
- Added support for Bancontact payments via Stripe
- Fixed selection of address country when switching pages
- Fixed race condition that allowed tax calculation to be bypassed
Apps
- Added account fields email_optin, first_name, and last_name to Zapier hook payload
- Fixed error in TaxJar tax calculation when there are no line items
Developers
[swell-js]
- Added error response types for
accounts,carts, andsubscriptions - Updated Stripe dependencies to support Bancontact payments
May 2024
Platform
- The
limitcount on subscriptions now includes the initial order that created the subscription before triggering thesubscription.completedevent cart.abandonedflag is now set to false if the cart becomes active again- Fixed bug with account credit being assigned when changing to cheaper subscription plans
- Fixed bug preventing deletion of carts which had coupons applied
- Fixed pricing calculation where base subscription product pricing would override invoice item pricing when added to an existing subscription
Dashboard
- Date picker fields now default to the current date unless otherwise specified
- Fixed URL routing for viewing orders in test environments
Hosted checkout
- Checkout now goes straight to payment step if cart contains only digital items
- Fixed coupon bug where promotional item would be added to the cart without the discount being applied in checkout
Apps
- Algolia integration now supports product syncing with 1000+ categories
- Shipstation integration now sets the
closedflag to true when an order is paid, avoiding orders getting stuck in in a pending state due to previously unpaid subscription invoices
April 2024
Platform
- Added support for applying gift cards to invoices
- Fixed a bug causing subscription billing to be configured incorrectly when using the default card on file
- Fixed issue with duplicated locales and currencies in test environments
Dashboard
- Improved UI for managing order payments
- Logs in the developer console can now be filtered to reveal slow API queries
- Fixed a bug preventing selection of an alternative payment method
- Resolved error preventing creation of new categories from the product view
Hosted checkout
- Support for co-badged cards is now available when using Stripe payments
- Enabled setting
display_brandparameter when tokenizing a card via Stripe
Developer
[swell-js]
- Stripe payment fixes and improvements
- Pass display_brand from Stripe to Swell card object
- Fixed
zip_checkafter creating Stripe payment
- Build and type updates
- Fixed typing issue with snake case vs camel case fields
- Fixed UMD build
- Added tests for each build type
- Added types for the
utilsnamespace - Updated npm dependencies
Discount rule logic
The logic for applying discount rules in carts and orders has been updated to ensure consistent totals between carts and orders with multiple discounts. The new rules are detailed below.
- Promotions are always applied before coupons.
- Discounts are calculated in this order:
- Product discounts
- Fixed/Percentage
- Buy X Get Y
- Category discounts
- Fixed/Percentage
- Buy X Get Y
- Shipping discounts
- Product discounts
March 2024
Platform
- Fixed tax calculation for bundles when not all items are taxable
- Resolved issue with category-based subscription coupons not applying when included products are changed after the subscription is created
Dashboard
- Fixed price rules not displaying for GBP currency
- Addressed issue with custom select fields being treated as range sliders if the option values are all numbers
Developer
[swell-js]
- Updated type definitions for subscription status
- Updated dependencies
[swell-node]
- Fixed duplicate products being returned in paginated queries when filtering by category
February 2024
Dashboard
- Added
subscription.completedevent for webhooks. - More than 1,000 product attributes can now be added and edited from the dashboard.
- Links to records within table/list views can now be opened in a new window or tab.
- Fixed bug causing localized variant data to disappear when options were added back after deletion.
- Fixed issue with bundle products not showing refunded status on refunded orders.
- Fixed numeric-like values being saved as numbers in custom select fields.
Hosted checkout
- Addressed Stock unavailable error appearing when payment is not required.
Apps & Integrations
- Product attributes are now included in Algolia indexes.
Developer
Swell.js
- Category data is now expanded when filtering products by category.
- Fixed issue with category sorting that caused inconsistent pagination results.
- Fixed storefront settings being fetched from live environment when using a test public key.
- Refactored Google Pay via Stripe to use the payment request button.
January 2024
Platform
- Fixed payment bug where Stripe payment status was out of sync when transactions used 3D Secure.
- Shipping rules are now recalculated after updating discounts, fixing a bug that could cause incorrect shipping prices with certain configurations.
- Fixed issue with setting sale price of product variants with add-on pricing.
Dashboard
- Optional product select attributes no longer require a default value.
- Fixed various issues with product options using the
toggleinput type. - Fixed bug where subscription prices were not being displayed in the subscriptions list.
- Fixed image editing modal bug on product attributes and variants.
- Fixed bug preventing deletion of carts by
cart.number. - Fixed bug that sometimes caused the model namespace to revert to default when adding custom fields.
- Fixed bug preventing editing of existing product prices after switching the store currency.
Browse by year