Version 3.0.1
August 11, 2024
Fixed
- Fix an error with field validation not working correctly when not providing a price value.
- Fix an error related to
columnType
for the Product Details field.
Version 3.0.0
May 13, 2024
Changed
- Now requires PHP
8.2.0+
. - Now requires Craft
5.0.0+
.
Version 2.1.6
August 11, 2024
Fixed
- Fix an error with field validation not working correctly when not providing a price value.
Version 2.1.5
March 1, 2024
Fixed
- 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.
Version 2.1.4
January 31, 2024
Fixed
- Fix
textEmailTemplate
typing. (thanks @tobystokes). - Fix dashboard widget icon.
Version 2.1.3
January 23, 2024
Added
- Add 404 handling for detail view of objects.
- Add french translations. (thanks @scandella).
Fixed
- Fix a migration error.
- Fix Shipstation shipments.
- Fix display of “Total Spent” values.
- Fix metadata typing.
Version 2.1.2
December 19, 2023
Added
- Add plugin setting to modify plugin name.
- Add
craft.snipcart.plugin
andcraft.snipcart.pluginName
. - Add translations file.
- Add some missing English translations.
Fixed
- Fix subscriptions viewing items.
- Fix an error for abandoned cart users.
- Fix welcome image alignment.
- Fix type errors for API keys.
Version 2.1.1
December 12, 2023
Fixed
- Fix lack of
showPrice
forcraft.snipcart.cartLink()
. - Fix URL param for buy now button.
Version 2.1.0
December 12, 2023
The plugin’s package name has changed to
verbb/snipcart
. Snipcart will need be updated to 1.7.0 from a terminal, by runningcomposer require verbb/snipcart && composer remove fostercommerce//craft-snipcart
.
Changed
- Migration to
verbb/snipcart
. - Now requires Craft 4.5+.
Version 2.0.0
September 11, 2023
Added
- 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.
Changed
- Update plugin to work with Craft 4.
- Move to using native Craft content table instead of custom
product_details
table.
Removed
- Removed legacy class alias for field type.
Version 1.6.1
September 14, 2023
Changed
- Added back PHP 7.4 compatibility
Version 1.6.0
June 20, 2023
Added
- Add compatibility with PHP 8.0
Fixed
- Fixed customer counts in overview
Version 1.5.7
January 11, 2022
Fixed
- Removed debug code left in the
ProductDetails
class
Version 1.5.6
November 26, 2021
Fixed
- Fixed deprecation warning for
getSourceId()
Version 1.5.5
July 9, 2021
Changed
craft.snipcart.cartLink
now renders HTML passed as its first argument, not just text.ShippingRateEvent
is now acraft\events\CancelableEvent
. SetisValid
tofalse
to display an error message, which can be customized with theerrors
property.
Version 1.5.4
March 5, 2021
Removed
- Removed unnecessary warning log when transforming model data.
Version 1.5.3
February 28, 2021
Fixed
- Fixed encoded onload value when loading Snipcart's JS.
- Fixed some Control Panel screens using the incorrect currency symbols.
Version 1.5.2
February 28, 2021
Fixed
- Saving product details on non-default sites cleared the field data (#31)
Version 1.5.1.1
February 9, 2021
Fixed
- Fixed composer and package plugin version number.
Version 1.5.1
February 1, 2021
Fixed
- Fixed aliases to use new
@fostercommerce
instead of@workingconcept
. Thanks @mattstein.
Version 1.5.0
January 22, 2021
Links to deprecated classes have been removed. Be sure to update any custom modules or plugins relying on Snipcart prior to 1.4.0.
Changed
- Changed
workingconcept
namespace tofostercommerce
.
Removed
- Removed deprecated class links to get rid of composer warnings.
Version 1.4.4.1
September 21, 2020
Fixed
- Fixed an issue preventing new webhook events from being logged.
Version 1.4.4
September 21, 2020
Added
- Added support for
order.refund.created
andorder.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
.
Changed
- Uninstalling now properly removes all plugin data.
Fixed
- Fixed an issue that prevented plugin from uninstalling successfully.
Version 1.4.3.1
September 8, 2020
Fixed
- Fixed a bug that kept the Product Details currency symbol from being displayed.
Version 1.4.3
September 6, 2020
Fixed
- Fixed a bug that could have misidentified duplicate SKUs in Craft 3.5. (#21)
- Updated Codeception setup, added simple unit tests.
Changed
- Refactored format helper to do a better job returning an explicitly-requested currency’s symbol.
Version 1.4.2
August 29, 2020
Added
- Exposed order item subscription details in control panel views.
Fixed
- Various minor improvements for control panel templates.
- Product details
getBuyNowButton()
no longer requires a|raw
Twig filter.
Version 1.4.1.1
August 1, 2020
Fixed
- Recent Orders summary displays order completion dates rather than creation dates.
Version 1.4.1
August 1, 2020
Fixed
- 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.
Changed
- The Recent Orders summary now uses relative timestamps rather than
m/d
format.
Version 1.4.0
July 21, 2020
This release re-namespaces some classes for PSR-4 compliance. If you’re using event hooks or other custom code relying on the
workingconcept\snipcart\models\*
orworkingconcept\snipcart\providers\*
namespaces, you may need to update those references.
Fixed
- Product Details price is displayed and saved properly when a user’s preferred language is German. (#17)
Changed
- Code quality improvements: cleanup, formatting, and minor refactoring.
Deprecated
workingconcept\snipcart\models\Dimensions
is nowworkingconcept\snipcart\models\snipcart\Dimensions
.workingconcept\snipcart\models\Item
is nowworkingconcept\snipcart\models\snipcart\Item
.workingconcept\snipcart\models\Address
is nowworkingconcept\snipcart\models\snipcart\Address
.workingconcept\snipcart\models\OrderEvent
is nowworkingconcept\snipcart\models\snipcart\OrderEvent
.workingconcept\snipcart\models\DigitalGood
is nowworkingconcept\snipcart\models\snipcart\DigitalGood
.workingconcept\snipcart\models\Category
is nowworkingconcept\snipcart\models\snipcart\Category
.workingconcept\snipcart\models\Order
is nowworkingconcept\snipcart\models\snipcart\Order
.workingconcept\snipcart\models\Notification
is nowworkingconcept\snipcart\models\snipcart\Notification
.workingconcept\snipcart\models\Plan
is nowworkingconcept\snipcart\models\snipcart\Plan
.workingconcept\snipcart\models\Product
is nowworkingconcept\snipcart\models\snipcart\Product
.workingconcept\snipcart\models\Domain
is nowworkingconcept\snipcart\models\snipcart\Domain
.workingconcept\snipcart\models\Discount
is nowworkingconcept\snipcart\models\snipcart\Discount
.workingconcept\snipcart\models\Customer
is nowworkingconcept\snipcart\models\snipcart\Customer
.workingconcept\snipcart\models\AbandonedCart
is nowworkingconcept\snipcart\models\snipcart\AbandonedCart
.workingconcept\snipcart\models\SubscriptionEvent
is nowworkingconcept\snipcart\models\snipcart\SubscriptionEvent
.workingconcept\snipcart\models\Tax
is nowworkingconcept\snipcart\models\snipcart\Tax
.workingconcept\snipcart\models\ShippingEvent
is nowworkingconcept\snipcart\models\snipcart\ShippingEvent
.workingconcept\snipcart\models\PaymentSchedule
is nowworkingconcept\snipcart\models\snipcart\PaymentSchedule
.workingconcept\snipcart\models\CustomField
is nowworkingconcept\snipcart\models\snipcart\CustomField
.workingconcept\snipcart\models\ShippingRate
is nowworkingconcept\snipcart\models\snipcart\ShippingRate
.workingconcept\snipcart\models\ProductVariant
is nowworkingconcept\snipcart\models\snipcart\ProductVariant
.workingconcept\snipcart\models\TaxesEvent
is nowworkingconcept\snipcart\models\snipcart\TaxesEvent
.workingconcept\snipcart\models\UserSession
is nowworkingconcept\snipcart\models\snipcart\UserSession
.workingconcept\snipcart\models\CustomerStatistics
is nowworkingconcept\snipcart\models\snipcart\CustomerStatistics
.workingconcept\snipcart\models\Refund
is nowworkingconcept\snipcart\models\snipcart\Refund
.workingconcept\snipcart\models\ShippingMethod
is nowworkingconcept\snipcart\models\snipcart\ShippingMethod
.workingconcept\snipcart\models\Subscription
is nowworkingconcept\snipcart\models\snipcart\Subscription
.workingconcept\snipcart\models\Package
is nowworkingconcept\snipcart\models\snipcart\Package
.workingconcept\snipcart\providers\ShipStation
is nowworkingconcept\snipcart\providers\shipstation\ShipStation
.
Version 1.3.4
June 23, 2020
Added
- Added support for using Product Details fields in element queries.
Changed
- 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
- Fixed minor styling issues with price field in Craft 3.4.
- Fixed CSS inliner call during email rendering.
Version 1.3.3
May 18, 2020
Changed
- Exceptions will be thrown if Snipcart’s API is erroring or unresponsive.
Fixed
- Fixed error that could occur if a failed request did not include a response.
- Weightless Snipcart orders now report
0
weight to ShipStation rather thannull
.
Version 1.3.2
April 12, 2020
Added
- 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.
Changed
- ShipStation orders now include
carrierCode
only if aserviceCode
is provided for the shipping method. This makes it possible to request custom shipping methods not provided by any carrier.
Version 1.3.1
February 29, 2020
Fixed
- 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.
Version 1.3.0
January 17, 2020
Added
- Added multi-site support for the Product Details field.
- Added support for Item
pausingAction
andcancellationAction
properties.
Fixed
- Email notifications display with item
unitPrice
andtotalPrice
. - 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.
Changed
- Improved display of product options in email notification.
- Removed field delta saving to avoid bugs.
- Tidied up order notification email templates.
Version 1.2.4
December 12, 2019
Fixed
- Fixed a type error that could prevent automatic quantity deprecation for non-shippable products. (#13)
Version 1.2.3
November 21, 2019
Added
- Added support for Product Details delta saving in Craft 3.4+.
Fixed
- Fixed missing
£
in some templates.
Version 1.2.2
November 8, 2019
Added
- 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
£
.
Changed
- Console ShipStation verifier skips checking orders without shippable items.
Version 1.2.1
November 1, 2019
Added
- Added support for test mode!
- Added
Discounts::updateDiscount()
. - Added status constants to Snipcart Order model.
Fixed
- 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.)
Version 1.2.0
October 17, 2019
Added
- Added GraphQL support to Product Details fields.
- Exposed shipping data re-feed attempt window as a configurable setting.
Fixed
- Minor code improvements.
Version 1.1.4
September 23, 2019
Fixed
- Removed a changed API reference that caused an error in the Abandoned Cart list.
Version 1.1.3
August 15, 2019
Fixed
- Fixed a query error that could prevent Product Details fields from saving.
Version 1.1.2
July 6, 2019
Fixed
- Added support for Craft 3.2.0-RC2.
Version 1.1.1
June 2, 2019
Fixed
- Fixed a template bug that caused the Customers search field to disappear when there were no results.
Version 1.1.0
May 31, 2019
Deprecated
InventoryEvent::$entry
is now deprecated. UseInventoryEvent::$element
instead.Products::reduceProductInventory()
is now deprecated. UseProducts::reduceInventory()
instead, which takes a single Snipcart Item as an argument.Orders::updateElementsFromOrder()
is now deprecated. UseOrders::updateProductsFromOrder()
instead.
Added
- Added Matrix support for Product Details field.
- Added ability to provide a custom
name
andurl
ingetBuyNowButton()
, which defaults to Entry or parent Entry’s Title and URL.
Fixed
- Product Details SKU is now properly validated to be unique.
Version 1.0.7
April 28, 2019
Added
- Added code to prevent Snipcart API changes from resulting in control panel errors.
Fixed
- 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.
Changed
- Updated charting library and made minor stylistic and readability improvements.
Version 1.0.6.1
March 18, 2019
Fixed
- Fixed a bug that affected chart’s date range display.
Version 1.0.6
March 18, 2019
Added
- Added store performance chart to the CP section and made date range editable.
- Improved dashboard widget charts.
- Added
FormatHelper::formatCurrency()
andcraft.snipcart.formatCurrency()
for consistent currency display that honors default store currency setting.
Changed
- Optimized AssetBundles.
Fixed
- Fixed minor padding issues for the very last elements in some control panel views.
Version 1.0.5
March 10, 2019
Added
getBuyNowButton()
can now take animage
parameter.cartLink()
supports ashowCount
setting for optionally removing the cart button’s dynamic item count.
Changed
cartSnippet()
now includes Snipcart’s base theme stylesheet by default.getBuyNowButton()
now adds.btn
as a default that can be removed.
Version 1.0.4
March 9, 2019
Added
- Added Twig template methods:
craft.snipcart.getCustomer()
,craft.snipcart.getOrder()
andcraft.snipcart.getSubscription()
. - Added ability to override Twig
getBuyNowButton()
price with support for multiple currencies. getBuyNowButton()
can now include custom options with negative price adjustments.
Fixed
- 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.
Version 1.0.3
March 5, 2019
Fixed
- Fixed a bug where passing a
null
value for Product DetailscustomOptions
would throw a warning in PHP 7.2.
Version 1.0.2
March 4, 2019
Fixed
- Fixed bug populating existing Element’s product detail.
Version 1.0.1
March 3, 2019
Added
- Added support for pre-3.1 versions of Craft CMS.
Fixed
- 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.
Version 1.0.0
February 27, 2019
Changed
- Removed beta tag! 🎉
Version 1.0.0-beta.27
February 27, 2019
Fixed
- Improved safety of CraftQL check.
Version 1.0.0-beta.26
February 27, 2019
Fixed
- Fixed Install migration to prevent blocking re-install.
Changed
- Added a nicer configured+empty landing state graphic.
Version 1.0.0-beta.25
February 26, 2019
Fixed
- Cleaned up docblocks and variable names for consistency.
Changed
- Required endpoint parameter for
get()
,post()
,put()
, anddelete()
API service methods.
Version 1.0.0-beta.24
February 24, 2019
Fixed
- Fixed a bug that kept static config settings from counting toward a configured state.
Version 1.0.0-beta.23
February 24, 2019
Added
- Added pagination support to Abandoned Carts.
- Added a friendlier CP section empty state before plugin is configured.
Changed
- Ajaxified CP landing stat panels to speed up page load.
- Spiffed up the Craft Commerce comparison table in the readme.
Fixed
- 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.
Version 1.0.0-beta.22
February 18, 2019
Added
- Added Notifications service.
Fixed
- Fixed bug in console Snipcart → ShipStation verification utility.
Version 1.0.0-beta.21
February 17, 2019
Added
- Added CraftQL support for field data.
- Improved support for Webhooks plugin.
Changed
- Isolated API caches with TagDependency.
- Refactored webhooks into component.
Fixed
- Stopped inventory event from firing for products that don’t store inventory.
Version 1.0.0-beta.20
February 17, 2019
Added
- Added support for additional AbandonedCart attributes.
Version 1.0.0-beta.19
February 16, 2019
Added
- Added Fields service.
Fixed
- Improved webhook resilience in some cases when incoming payloads contain unexpected attributes.
Version 1.0.0-beta.18
February 15, 2019
Added
- Added new Order and Item attributes.
Version 1.0.0-beta.17
February 14, 2019
Added
- 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.
Changed
- 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.
Removed
- Deleted many SnipcartVariable methods after refactor.
- Cleaned up Orders interface, removing several methods.
- Removed ability to define custom product fields.
- Removed unused Packaging Types.
Version 1.0.0-beta.16
December 27, 2018
Added
- 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.
Changed
- Improved plugin settings control panel layout.
- Refactored and expanded Events.
- References to
WebhookEvent
should now beShippingRateEvent
.
Version 1.0.0-beta.15
December 24, 2018
Changed
- Refactored ShippingProvider to expose REST API methods.
- Various code quality improvements.
Fixed
- Fixed incorrect item weights when converting a Snipcart order into a ShipStation order.
Version 1.0.0-beta.14
December 20, 2018
Changed
- ShipStation’s
_getOrderNotes()
and_getGiftNote()
will no longer return empty values.
Version 1.0.0-beta.13
December 20, 2018
Changed
- 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
’spackaging
property is nowpackage
.- 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 whichEVENT_BEFORE_RETURN_SHIPPING_RATES
has moved. Listeners should subscribe toShipments::EVENT_BEFORE_RETURN_SHIPPING_RATES
. - Listeners should now subscribe to
Orders::EVENT_BEFORE_REQUEST_SHIPPING_RATES
instead ofSnipcartService::EVENT_BEFORE_REQUEST_SHIPPING_RATES
. - Listeners should now subscribe to
Products::EVENT_PRODUCT_INVENTORY_CHANGE
instead ofSnipcartService::EVENT_PRODUCT_INVENTORY_CHANGE
.
Version 1.0.0-beta.12
December 18, 2018
Fixed
- Fixed missing ShipStation fields, prevent wrapping additional email prices.
Version 1.0.0-beta.11
December 17, 2018
Fixed
- Fixed token verification.
Version 1.0.0-beta.10
December 17, 2018
Changed
- VerifyController requests un-cached Snipcart orders.
Version 1.0.0-beta.9
December 17, 2018
Added
- Spiffed up and added re-feed attempt status to order failure notifications.
Changed
- Added explicit type coercion in a few places.
Fixed
- Fixed type error that impacted VerifyController.
- Reverted ShipStationOrderItem
fields()
.
Version 1.0.0-beta.8
December 17, 2018
Added
- Separated parts of SnipcartService into new ApiService.
Changed
- Changed the way API exceptions are handled to reduce disruption and log failures.
- Refactored SnipcartService to be cleaner.
- Renamed SnipcartService’s
processShippingRates()
togetShippingRatesForOrder()
. - 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 insuccess: false
. - Renamed
listAbandoned
template variable tolistAbandonedCarts
.
Fixed
- Minor fix for mobile order email price wrapping.
Version 1.0.0-beta.7
December 15, 2018
Added
- Added package detail to Snipcart rate response.
Changed
- 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()
tobadRequestResponse()
.
Fixed
- 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.
Version 1.0.0-beta.6
December 14, 2018
Added
- Added weight property to SnipcartItem model.
- Added hasPhysicalDimensions() for both Snipcart and ShipStation item models.
Changed
- Changed ShipStation service method names to better reflect what they do.
Fixed
- Fixed incorrect docblock details.
Version 1.0.0-beta.5
December 13, 2018
Changed
- ShipStationService’s getWeightFromSnipcartData() is now getWeightFromSnipcartOrder().
Version 1.0.0-beta.4
December 13, 2018
Changed
- Improved code quality throughout models.
Fixed
- Fixed SnipStation gift setting detection.
Version 1.0.0-beta.3
December 13, 2018
Changed
- 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
- Fixed webhook and service bugs.
Version 1.0.0-beta.2
December 13, 2018
Changed
- Improved class documentation.
- Improved console verification tool.
- Improved code quality with optimizations and type hints.
Fixed
- Fixed several incorrect references.
Version 1.0.0-beta.1
December 10, 2018
Added
- Initial GitHub release.