Snipcart 3.x is on version 2.1.6
, released on Aug 11, 2024
Released Aug 11, 2024
Fix an error with field validation not working correctly when not providing a price value.
Released Mar 01, 2024
Fix an error when migrating from Craft 3.
Fix an error when generating buttons when overriding class
attributes.
Fix order of operations when uninstalling the plugin.
Released Jan 31, 2024
Fix textEmailTemplate
typing. (thanks @tobystokes).
Fix dashboard widget icon.
Released Jan 23, 2024
Add 404 handling for detail view of objects.
Add french translations. (thanks @scandella).
Fix a migration error.
Fix Shipstation shipments.
Fix display of “Total Spent” values.
Fix metadata typing.
Released Dec 19, 2023
Add plugin setting to modify plugin name.
Add craft.snipcart.plugin
and craft.snipcart.pluginName
.
Add translations file.
Add some missing English translations.
Fix subscriptions viewing items.
Fix an error for abandoned cart users.
Fix welcome image alignment.
Fix type errors for API keys.
Released Dec 12, 2023
Fix lack of showPrice
for craft.snipcart.cartLink()
.
Fix URL param for buy now button.
Released Dec 12, 2023
Migration to verbb/snipcart
.
Now requires Craft 4.5+.
Released Sept 11, 2023
Add migration to move product data from the custom product_details
table to Craft native content tables.
Add snipcart/cleanup console command to remove legacy
product_details` table when required.
Update plugin to work with Craft 4.
Move to using native Craft content table instead of custom product_details
table.
Removed legacy class alias for field type.
Released Sept 14, 2023
Added back PHP 7.4 compatibility
Released June 20, 2023
Add compatibility with PHP 8.0
Fixed customer counts in overview
Released Jan 11, 2022
Removed debug code left in the ProductDetails
class
Released Nov 26, 2021
Fixed deprecation warning for getSourceId()
Released July 09, 2021
craft.snipcart.cartLink
now renders HTML passed as its first argument, not just text.
ShippingRateEvent
is now a craft\events\CancelableEvent
. Set isValid
to false
to display an error message, which can be customized with the errors
property.
Released Mar 05, 2021
Removed unnecessary warning log when transforming model data.
Released Feb 28, 2021
Fixed encoded onload value when loading Snipcart's JS.
Fixed some Control Panel screens using the incorrect currency symbols.
Released Feb 28, 2021
Saving product details on non-default sites cleared the field data (#31)
Released Feb 09, 2021
Fixed composer and package plugin version number.
Released Feb 01, 2021
Fixed aliases to use new @fostercommerce
instead of @workingconcept
. Thanks @mattstein.
Released Jan 22, 2021
Changed workingconcept
namespace to fostercommerce
.
Removed deprecated class links to get rid of composer warnings.
Released Sept 21, 2020
Fixed an issue preventing new webhook events from being logged.
Released Sept 21, 2020
Added support for order.refund.created
and order.notification.created
webhooks.
Added template hooks: cp.snipcart.cart.detail
, cp.snipcart.customer.detail
, cp.snipcart.discount.detail
, cp.snipcart.order.detail
, cp.snipcart.subscription.detail
.
Uninstalling now properly removes all plugin data.
Fixed an issue that prevented plugin from uninstalling successfully.
Released Sept 08, 2020
Fixed a bug that kept the Product Details currency symbol from being displayed.
Released Sept 06, 2020
Fixed a bug that could have misidentified duplicate SKUs in Craft 3.5. (#21)
Updated Codeception setup, added simple unit tests.
Refactored format helper to do a better job returning an explicitly-requested currency’s symbol.
Released Aug 29, 2020
Exposed order item subscription details in control panel views.
Various minor improvements for control panel templates.
Product details getBuyNowButton()
no longer requires a |raw
Twig filter.
Released Aug 01, 2020
Recent Orders summary displays order completion dates rather than creation dates.
Released Aug 01, 2020
Fixed custom email notifications.
Order notification email subjects are now translatable.
Admin order email notifications will only display a ShipStation ID when it’s not empty.
The Recent Orders summary now uses relative timestamps rather than m/d
format.
Released July 21, 2020
Product Details price is displayed and saved properly when a user’s preferred language is German. (#17)
Code quality improvements: cleanup, formatting, and minor refactoring.
workingconcept\snipcart\models\Dimensions
is now workingconcept\snipcart\models\snipcart\Dimensions
.
workingconcept\snipcart\models\Item
is now workingconcept\snipcart\models\snipcart\Item
.
workingconcept\snipcart\models\Address
is now workingconcept\snipcart\models\snipcart\Address
.
workingconcept\snipcart\models\OrderEvent
is now workingconcept\snipcart\models\snipcart\OrderEvent
.
workingconcept\snipcart\models\DigitalGood
is now workingconcept\snipcart\models\snipcart\DigitalGood
.
workingconcept\snipcart\models\Category
is now workingconcept\snipcart\models\snipcart\Category
.
workingconcept\snipcart\models\Order
is now workingconcept\snipcart\models\snipcart\Order
.
workingconcept\snipcart\models\Notification
is now workingconcept\snipcart\models\snipcart\Notification
.
workingconcept\snipcart\models\Plan
is now workingconcept\snipcart\models\snipcart\Plan
.
workingconcept\snipcart\models\Product
is now workingconcept\snipcart\models\snipcart\Product
.
workingconcept\snipcart\models\Domain
is now workingconcept\snipcart\models\snipcart\Domain
.
workingconcept\snipcart\models\Discount
is now workingconcept\snipcart\models\snipcart\Discount
.
workingconcept\snipcart\models\Customer
is now workingconcept\snipcart\models\snipcart\Customer
.
workingconcept\snipcart\models\AbandonedCart
is now workingconcept\snipcart\models\snipcart\AbandonedCart
.
workingconcept\snipcart\models\SubscriptionEvent
is now workingconcept\snipcart\models\snipcart\SubscriptionEvent
.
workingconcept\snipcart\models\Tax
is now workingconcept\snipcart\models\snipcart\Tax
.
workingconcept\snipcart\models\ShippingEvent
is now workingconcept\snipcart\models\snipcart\ShippingEvent
.
workingconcept\snipcart\models\PaymentSchedule
is now workingconcept\snipcart\models\snipcart\PaymentSchedule
.
workingconcept\snipcart\models\CustomField
is now workingconcept\snipcart\models\snipcart\CustomField
.
workingconcept\snipcart\models\ShippingRate
is now workingconcept\snipcart\models\snipcart\ShippingRate
.
workingconcept\snipcart\models\ProductVariant
is now workingconcept\snipcart\models\snipcart\ProductVariant
.
workingconcept\snipcart\models\TaxesEvent
is now workingconcept\snipcart\models\snipcart\TaxesEvent
.
workingconcept\snipcart\models\UserSession
is now workingconcept\snipcart\models\snipcart\UserSession
.
workingconcept\snipcart\models\CustomerStatistics
is now workingconcept\snipcart\models\snipcart\CustomerStatistics
.
workingconcept\snipcart\models\Refund
is now workingconcept\snipcart\models\snipcart\Refund
.
workingconcept\snipcart\models\ShippingMethod
is now workingconcept\snipcart\models\snipcart\ShippingMethod
.
workingconcept\snipcart\models\Subscription
is now workingconcept\snipcart\models\snipcart\Subscription
.
workingconcept\snipcart\models\Package
is now workingconcept\snipcart\models\snipcart\Package
.
workingconcept\snipcart\providers\ShipStation
is now workingconcept\snipcart\providers\shipstation\ShipStation
.
Released June 23, 2020
Added support for using Product Details fields in element queries.
Improved precision of price, weight, and dimensions by storing as decimals rather than floats.
Orders without any shippable items are not sent to ShipStation.
Fixed minor styling issues with price field in Craft 3.4.
Fixed CSS inliner call during email rendering.
Released May 18, 2020
Exceptions will be thrown if Snipcart’s API is erroring or unresponsive.
Fixed error that could occur if a failed request did not include a response.
Weightless Snipcart orders now report 0
weight to ShipStation rather than null
.
Released Apr 12, 2020
Added support for Swiss Franc (CHF).
Added ShipStation::EVENT_BEFORE_SEND_ORDER
event for modifying the ShipStation order before it’s sent to their REST API.
ShipStation orders now include carrierCode
only if a serviceCode
is provided for the shipping method. This makes it possible to request custom shipping methods not provided by any carrier.
Released Feb 29, 2020
Fixed various date format issues in the control panel. (User’s preferred format is now honored.)
Fixed Customer list search field display in Craft 3.4.
Updated pagination style in control panel listings.
Released Jan 17, 2020
Added multi-site support for the Product Details field.
Added support for Item pausingAction
and cancellationAction
properties.
Email notifications display with item unitPrice
and totalPrice
.
ShipStation orders are built with each item’s adjusted unit price.
Fixed error that kept Product Details field from being used in Quick Post Dashboard widget.
Improved display of product options in email notification.
Removed field delta saving to avoid bugs.
Tidied up order notification email templates.
Released Dec 12, 2019
Fixed a type error that could prevent automatic quantity deprecation for non-shippable products. (#13)
Released Nov 21, 2019
Added support for Product Details delta saving in Craft 3.4+.
Fixed missing £
in some templates.
Released Nov 08, 2019
Added ability to force ShipStation re-feed attempts from the command line.
Improved logging for ShipStation re-feed attempts.
Console ShipStation verifier now has an optional limit
argument.
Added support for GBP £
.
Console ShipStation verifier skips checking orders without shippable items.
Released Nov 01, 2019
Added support for test mode!
Added Discounts::updateDiscount()
.
Added status constants to Snipcart Order model.
Fixed a template bug that could have wrongly indicated an expired discount.
Fixed an error when clearing the Snipcart API cache from the Clear Caches utility.
Fixed a few template template display bugs where some details may not be present.
Custom product options can now be plain text inputs. (No array of choices required.)
Released Oct 17, 2019
Added GraphQL support to Product Details fields.
Exposed shipping data re-feed attempt window as a configurable setting.
Minor code improvements.
Released Sept 23, 2019
Removed a changed API reference that caused an error in the Abandoned Cart list.
Released Aug 15, 2019
Fixed a query error that could prevent Product Details fields from saving.
Released July 06, 2019
Added support for Craft 3.2.0-RC2.
Released June 02, 2019
Fixed a template bug that caused the Customers search field to disappear when there were no results.
Released May 31, 2019
InventoryEvent::$entry
is now deprecated. Use InventoryEvent::$element
instead.
Products::reduceProductInventory()
is now deprecated. Use Products::reduceInventory()
instead, which takes a single Snipcart Item as an argument.
Orders::updateElementsFromOrder()
is now deprecated. Use Orders::updateProductsFromOrder()
instead.
Added Matrix support for Product Details field.
Added ability to provide a custom name
and url
in getBuyNowButton()
, which defaults to Entry or parent Entry’s Title and URL.
Product Details SKU is now properly validated to be unique.
Released Apr 28, 2019
Added code to prevent Snipcart API changes from resulting in control panel errors.
Fixed minor control panel view inconsistencies.
Fixed an error that could occur if ModelHelper::stripUnknownProperties() received non-iterable data.
Fixed a bug that prevented API response cache from being disabled.
Added a new Discount property that might have thrown errors in the control panel.
Updated charting library and made minor stylistic and readability improvements.
Released Mar 18, 2019
Fixed a bug that affected chart’s date range display.
Released Mar 18, 2019
Added store performance chart to the CP section and made date range editable.
Improved dashboard widget charts.
Added FormatHelper::formatCurrency()
and craft.snipcart.formatCurrency()
for consistent currency display that honors default store currency setting.
Optimized AssetBundles.
Fixed minor padding issues for the very last elements in some control panel views.
Released Mar 10, 2019
getBuyNowButton()
can now take an image
parameter.
cartLink()
supports a showCount
setting for optionally removing the cart button’s dynamic item count.
cartSnippet()
now includes Snipcart’s base theme stylesheet by default.
getBuyNowButton()
now adds .btn
as a default that can be removed.
Released Mar 09, 2019
Added Twig template methods: craft.snipcart.getCustomer()
, craft.snipcart.getOrder()
and craft.snipcart.getSubscription()
.
Added ability to override Twig getBuyNowButton()
price with support for multiple currencies.
getBuyNowButton()
can now include custom options with negative price adjustments.
Currency setting is now saved properly.
Improved consistency of currency values displayed in the control panel and email templates.
Fixed UnknownPropertyException when viewing Discounts because of new normalizedRate
property.
Released Mar 05, 2019
Fixed a bug where passing a null
value for Product Details customOptions
would throw a warning in PHP 7.2.
Released Mar 04, 2019
Fixed bug populating existing Element’s product detail.
Released Mar 03, 2019
Added support for pre-3.1 versions of Craft CMS.
Fixed an issue that would cause a Section re-save task to fail after a Product Details field is added to an existing Section.
Product defaults are honored correctly per field setting on new and existing entries.
Fixed a JS error in Product Details field settings.
Released Feb 27, 2019
Removed beta tag! 🎉
Released Feb 27, 2019
Improved safety of CraftQL check.
Released Feb 27, 2019
Fixed Install migration to prevent blocking re-install.
Added a nicer configured+empty landing state graphic.
Released Feb 26, 2019
Cleaned up docblocks and variable names for consistency.
Required endpoint parameter for get()
, post()
, put()
, and delete()
API service methods.
Released Feb 24, 2019
Fixed a bug that kept static config settings from counting toward a configured state.
Released Feb 24, 2019
Added pagination support to Abandoned Carts.
Added a friendlier CP section empty state before plugin is configured.
Ajaxified CP landing stat panels to speed up page load.
Spiffed up the Craft Commerce comparison table in the readme.
Fixed template error when shipFrom
settings are empty.
Fixed incorrect reference that interfered with subscription invoice creation webhook.
Invalid/unparsed environment variables won’t count as a “configured” state for the plugin.
Released Feb 18, 2019
Added Notifications service.
Fixed bug in console Snipcart → ShipStation verification utility.
Released Feb 17, 2019
Added CraftQL support for field data.
Improved support for Webhooks plugin.
Isolated API caches with TagDependency.
Refactored webhooks into component.
Stopped inventory event from firing for products that don’t store inventory.
Released Feb 17, 2019
Added support for additional AbandonedCart attributes.
Released Feb 16, 2019
Added Fields service.
Improved webhook resilience in some cases when incoming payloads contain unexpected attributes.
Released Feb 15, 2019
Added new Order and Item attributes.
Released Feb 14, 2019
Added inventory to the Product Details field type.
Added the ability to designate a custom admin order notification email template.
Webhook log now stores mode
.
Added support for displaying Subscriptions and cancelling them from the control panel.
Added Overview tab for control panel section.
Added Event hook for registering shipping providers.
Some settings now offer env and template suggestions.
Added environment variable support for Snipcart + ShipStation API keys.
Flattened migrations into single Install.
Improved several control panel views.
Optimized control panel assets.
Vastly improved speed and flexibility of Dashboard widget.
Refactored control panel views.
Deleted many SnipcartVariable methods after refactor.
Cleaned up Orders interface, removing several methods.
Removed ability to define custom product fields.
Removed unused Packaging Types.
Released Dec 27, 2018
Added Product Details field type for quick setup.
Added control panel views for Discounts, Abandoned Carts, and Subscriptions.
Added ability to create a Discount via control panel.
Improved plugin settings control panel layout.
Refactored and expanded Events.
References to WebhookEvent
should now be ShippingRateEvent
.
Released Dec 24, 2018
Refactored ShippingProvider to expose REST API methods.
Various code quality improvements.
Fixed incorrect item weights when converting a Snipcart order into a ShipStation order.
Released Dec 20, 2018
ShipStation’s _getOrderNotes()
and _getGiftNote()
will no longer return empty values.
Released Dec 20, 2018
Breaking changes for everyone!
Massively refactored services and models, which will definitely break any services or models you’re using directly.
Renamed all ShipStation models and moved them to their own namespace.
Renamed all Snipcart models.
WebhookEvent
’s packaging
property is now package
.
Abstracted ShipStation service into Shipments, meaning it’s now accessed via Snipcart::$plugin->shipments->shipStation
. Note that the intent is for other services to interact directly with Shipments, to which EVENT_BEFORE_RETURN_SHIPPING_RATES
has moved. Listeners should subscribe to Shipments::EVENT_BEFORE_RETURN_SHIPPING_RATES
.
Listeners should now subscribe to Orders::EVENT_BEFORE_REQUEST_SHIPPING_RATES
instead of SnipcartService::EVENT_BEFORE_REQUEST_SHIPPING_RATES
.
Listeners should now subscribe to Products::EVENT_PRODUCT_INVENTORY_CHANGE
instead of SnipcartService::EVENT_PRODUCT_INVENTORY_CHANGE
.
Released Dec 18, 2018
Fixed missing ShipStation fields, prevent wrapping additional email prices.
Released Dec 17, 2018
Fixed token verification.
Released Dec 17, 2018
VerifyController requests un-cached Snipcart orders.
Released Dec 17, 2018
Spiffed up and added re-feed attempt status to order failure notifications.
Added explicit type coercion in a few places.
Fixed type error that impacted VerifyController.
Reverted ShipStationOrderItem fields()
.
Released Dec 17, 2018
Separated parts of SnipcartService into new ApiService.
Changed the way API exceptions are handled to reduce disruption and log failures.
Refactored SnipcartService to be cleaner.
Renamed SnipcartService’s processShippingRates()
to getShippingRatesForOrder()
.
Models now use proper DateTime values.
Improved ShipStation order verifier accuracy.
Updated webhook controller’s handleOrderCompletedEvent()
to continue through problems and report errors by model. Any errors at all will result in success: false
.
Renamed listAbandoned
template variable to listAbandonedCarts
.
Minor fix for mobile order email price wrapping.
Released Dec 15, 2018
Added package detail to Snipcart rate response.
Use billingAddressName instead of cardholderName in order notification emails.
Return JSON for all webhook requests.
Keep ShipStation service from failing if Snipcart order has null
value for custom fields.
Rename webhook controller’s badResponse()
to badRequestResponse()
.
Fix type issues with SnipcartOrder model.
Return magic variables when SnipcartOrder is treated as an array.
Respond calmly to missing webhook event names or content and don’t allow logging.
Released Dec 14, 2018
Added weight property to SnipcartItem model.
Added hasPhysicalDimensions() for both Snipcart and ShipStation item models.
Changed ShipStation service method names to better reflect what they do.
Fixed incorrect docblock details.
Released Dec 13, 2018
ShipStationService’s getWeightFromSnipcartData() is now getWeightFromSnipcartOrder().
Released Dec 13, 2018
Improved code quality throughout models.
Fixed SnipStation gift setting detection.
Released Dec 13, 2018
Made cosmetic fixes to console order verification tool.
ShipStation order model no longer limits string length; longer customer and gift messages won’t cause webhook failure.
Fixed webhook and service bugs.
Released Dec 13, 2018
Improved class documentation.
Improved console verification tool.
Improved code quality with optimizations and type hints.
Fixed several incorrect references.
Released Dec 10, 2018
Initial GitHub release.