Every Core dna product, release by release, newest first. Each product ships on its own schedule.
Platform2025.6
What’s new in Core dna Platform 2025.6
Taxes and Shipping
New Tax and Shipping modules bring Avalara tax calculation and shipping rates coded in a template. Shoppers gain wishlists, and cart items can carry custom attributes.
Key highlights
Tax calculated by Avalara at checkout, through the new Taxes module.
Shipping rates from a template, for rules no rate table can express.
Wishlists for signed-in customers.
Custom attributes on cart items, such as engraving text or a gift message.
Tax calculated by Avalara
The new Taxes module connects your store to a tax provider, starting with Avalara AvaTax, for accurate tax in regions with complex rules, such as the US. Add it under Taxes › Providers by choosing Avalara in Add new Tax provider, then enter the Account ID and License Key and save. The saved provider offers Test connection to check the credentials, and a Company to record the tax against.
Sandbox sends requests to Avalara's test environment, which has its own credentials.
Submit Documents records each purchase with Avalara, so it counts towards your tax returns.
Shipping Tax Code and Default Item Tax Code set the codes for shipping and for products without a tax category.
Taxes › Providers › Add new Tax provider
Shipping rates from a template
A new shipping method type, Template, works out the rates in code you write, for shipping rules no rate table can express. The code goes in the method's Template code field, in the site's template engine, and the variables it receives are listed below the field. It offers each rate with $rates->create(), giving the price and the name the shopper sees:
{# Rates by delivery country #}
{% set address = fulfillment.getDeliveryAddress() %}
{% set country = address ? address.getCountry() : null %}
{% set code = country ? country.getAlpha2Code() : '' %}
{% if code == 'AU' %}
{{ rates.create('9.95', 'Standard post', 'standard') }}
{{ rates.create('19.95', 'Express post', 'express') }}
{% else %}
{{ rates.create('25.00', 'International post', 'international') }}
{% endif %}
Wishlists
Signed-in customers can save products to a wishlist and review it in their account. A product template can show whether the product is already on the list:
Template code
{* On a product page *}
{if $product->isInWishlist()}
<p>On your wishlist</p>
{/if}
{# On a product page #}
{% if product.isInWishlist() %}
<p>On your wishlist</p>
{% endif %}
Add a product to the signed-in customer's wishlist
Each cart item can now carry its own key and value pairs, such as engraving text or a gift message, sent as attributes when the item is added or changed. An item holds up to 20 attributes; keys are up to 50 characters and values up to 500. A new endpoint, GET /cdna-api/cart/carts, lists carts.
{* For each item in the cart *}
{foreach $_cart->getCart()->getItems() as $item}
{if $item->getAttribute('engraving')}
<p>Engraving: {$item->getAttribute('engraving')}</p>
{/if}
{/foreach}
{# For each item in the cart #}
{% for item in _cart.getCart().getItems() %}
{% if item.getAttribute('engraving') %}
<p>Engraving: {{ item.getAttribute('engraving') }}</p>
{% endif %}
{% endfor %}
Other improvements and bug fixes
Carts: An API endpoint has been added to enable the listing of carts.
Users: An issue preventing user deletion when linked to orders or carts has been resolved. The system now detaches the linked person prior to deletion in these situations.
Common: Our list of supported currencies has been updated.
Orders: When reviewing an order, a new link allows quick access to all other orders made by the same person.
Admin: A fix addresses an issue where creating a specific admin menu element could render the administration area inaccessible.