{"id":9066,"date":"2022-01-24T11:53:12","date_gmt":"2022-01-24T11:53:12","guid":{"rendered":"https:\/\/spreecommerce.org\/?p=9066"},"modified":"2026-03-13T14:44:56","modified_gmt":"2026-03-13T14:44:56","slug":"spree-commerce-4-4-is-even-more-composable-and-customizable","status":"publish","type":"post","link":"https:\/\/spreecommerce.org\/spree-commerce-4-4-is-even-more-composable-and-customizable\/","title":{"rendered":"Spree Commerce 4.4 is even more composable and customizable"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">In this latest release, following the low-code and no-code trends, Spree becomes even more composable by introducing Webhooks and Platform API as well as more customizable with Metadata. That translates into easier integration opportunities and shorter delivery timelines. On the business front, this latest Spree version introduces <a href=\"https:\/\/spreecommerce.org\/digital-product-sales\/\" target=\"_blank\" rel=\"noopener\">downloadable Digital Product<\/a> sales (documents, ebooks, images, audio tracks, video files) and Wishlists making it an even more universally useful <a href=\"https:\/\/spreecommerce.org\/\">open-source eCommerce platform<\/a>.\u00a0<\/span><!--more--><\/p>\n<h2><span style=\"font-weight: 400;\">Digital Products downloads\u00a0<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">With the new Digital Products downloads functionality you may use Spree to sell the following example product and file types:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">E-BOOK file types: mobi, epub, pdf<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">POSTER file types: jpg, png<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">IMAGE file types: png in 3 resolutions<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">DOCUMENT TEMPLATE file type: PDF, Word\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">LARGER DOCUMENTS file type: ZIP<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">DATA SETS file type: CSV, TXT<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">You may also sell any variations of the above download types such as e-tickets, <a href=\"https:\/\/spreecommerce.org\/stories\/digital-products-marketplace-from-south-africa-acquired-for-100m-by-us-nasdaq-listed-edtech-giant\/\" target=\"_blank\" rel=\"noopener\">e-courses<\/a>, music and <a href=\"https:\/\/spreecommerce.org\/stories\/dissolve-a-canadian-high-end-stock-footage-provider-uses-spree-commerce-for-its-digital-products-marketplace\/\" target=\"_blank\" rel=\"noopener\">videos files<\/a>, and just about anything else that comes in a digital format.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This feature also allows you to attach files to physical products, such as users manuals, vouchers, or exclusive digital artworks associated with the product.<\/span><\/p>\n<p><a href=\"https:\/\/spreecommerce.org\/digital-product-sales\/\"><span style=\"font-weight: 400;\">Digital products<\/span><\/a><span style=\"font-weight: 400;\"> are created the same way as physical products (for the most part), with the only difference being that when a customer has only digital products in their cart, the delivery step of the checkout will be skipped entirely. After purchase, the customer will be able to download their files.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As any Spree feature, Digital Products may be managed through the admin panel and are fully supported with API endpoints in Storefront and Platform API collections.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9106\" src=\"https:\/\/spreecommerce.org\/wp-content\/uploads\/2022\/01\/digital-products-slider-1-293x300.png\" alt=\"digital products \" width=\"400\" height=\"409\" srcset=\"https:\/\/spreecommerce.org\/wp-content\/uploads\/2022\/01\/digital-products-slider-1-293x300.png 293w, https:\/\/spreecommerce.org\/wp-content\/uploads\/2022\/01\/digital-products-slider-1-768x786.png 768w, https:\/\/spreecommerce.org\/wp-content\/uploads\/2022\/01\/digital-products-slider-1-586x600.png 586w, https:\/\/spreecommerce.org\/wp-content\/uploads\/2022\/01\/digital-products-slider-1.png 865w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/p>\n<h2><span style=\"font-weight: 400;\">Wishlists for upselling<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">A Wishlist allows registered users to create personalized collections of products they want to buy and then save them for future reference in their user account. Wishlists represent your customers\u2019 interest in the product without an immediate intent to purchase or if the product is currently out of stock.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Wishlists provide you with a wide range of marketing opportunities, from identifying user trends and tracking marketing campaign effectiveness to planning new email or PPC campaigns centered around the items commonly included within users\u2019 wishlists.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As any Spree feature, Wishlists are fully supported with API endpoints in Storefront and Platform API collections.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Webhooks for no-code integrations<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Anyone may use Webhooks as a no-code way to connect Spree with 3rd party solutions. For instance, an order webhook may send an updated, up-to-date list of orders every time someone makes a purchase. Getting this information using API would require sending periodic API requests to the \u201cReturn a list of Orders\u201d endpoint. On the other hand, a properly set up webhook would feed the relevant order information only when the order list changes triggered by a new purchase.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">Webhooks are one of the many ways that apps can communicate with one another by sending automated messages or information. A webhook delivers data to other applications as it happens, meaning you get data immediately and without asking for it.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">So the main upside of using webhooks is that applications don\u2019t have to make periodic calls to APIs while waiting for changes. Instead, webhooks will notify your application on a specific endpoint informing them that something interesting has happened.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">There are many integration platforms as a service (iPaaS), such as Zapier, Celigo, Workato, Mulesoft Anypoint, Automate.io, which allow for no-code system integrations and composing event-triggered workflows.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With Webhooks you may use these platforms to easily configure tens of connections between systems and compose software solutions yourself without doing any development work whatsoever. Pretty great, huh?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, <\/span><a href=\"https:\/\/zapier.com\/apps\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Zapier<\/span><\/a><span style=\"font-weight: 400;\"> allows you to create automated workflows by connecting over 3000 applications without any coding involved:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">when a new order is placed, notify me with Slack, send it to <a href=\"https:\/\/spreecommerce.org\/integrations\/hubspot-integration-with-spree\/\" target=\"_blank\" rel=\"noopener\">Hubspot<\/a> and Quickbooks,<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">when a new user signs up for an account, add their email to <a href=\"https:\/\/spreecommerce.org\/integrations\/mailchimp-and-spree-integration\/\" target=\"_blank\" rel=\"noopener\">Mailchimp<\/a> and send a welcome email from the CEO,<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">when a new payment is made in <a href=\"https:\/\/spreecommerce.org\/integrations\/stripe-integration-with-spree\/\" target=\"_blank\" rel=\"noopener\">Stripe<\/a>, generate a receipt in Quickbooks and send it to the customer by email,<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">when a new shipment is delivered, ask this user for a review,<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">Metadata for low-code platform customization<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Every eCommerce platform is a bit different but customizing it with code changes and database schema adjustments not only requires engineering know-how and skills but also introduces complexity and possibly bugs, complicates future upgrade paths, and generally is not recommended.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With Spree 4.4 you may use the Metadata functionality to easily add custom attributes on the fly for Products, Variants, Taxons, Orders, Carts, or Users without any code or database changes. Meta fields may be either public or private and all are easily accessible using <a href=\"https:\/\/api.spreecommerce.org\/\" target=\"_blank\" rel=\"noopener\">Spree APIs<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">an eCommerce platform combining content and commerce may store related blog post identifiers for each product<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">a B2B store may need to distinguish user types<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">any store may need to allow for additional information for orders for analytics purposes<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">Platform API for app to app integrations<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">If the low-code Metadata method is not sufficient to customize your Spree platform, you may need to consider using Platform API to create an external app talking to Spree Platform API.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Platform API also comes in handy when connecting Spree with 3rd party systems which may consume its API responses.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Platform API is \u200b\u200buseful for application to application integrations based on oAuth 2.0 authentication and permissions.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8527\" src=\"https:\/\/spreecommerce.org\/wp-content\/uploads\/2021\/09\/spree_commerce_spree_api_6.png\" alt=\"\" width=\"1400\" height=\"703\" srcset=\"https:\/\/spreecommerce.org\/wp-content\/uploads\/2021\/09\/spree_commerce_spree_api_6.png 1400w, https:\/\/spreecommerce.org\/wp-content\/uploads\/2021\/09\/spree_commerce_spree_api_6-300x151.png 300w, https:\/\/spreecommerce.org\/wp-content\/uploads\/2021\/09\/spree_commerce_spree_api_6-1024x514.png 1024w, https:\/\/spreecommerce.org\/wp-content\/uploads\/2021\/09\/spree_commerce_spree_api_6-768x386.png 768w, https:\/\/spreecommerce.org\/wp-content\/uploads\/2021\/09\/spree_commerce_spree_api_6-600x301.png 600w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Platform API is built on the same foundations and technology as Storefront API, which means JSON API format, Swagger (Open API) documentation, and oAuth 2.0 authentication.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Platform API is the biggest and most capable API for Spree with the largest number of API endpoints to cover all features available in the Admin Panel plus much more.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This API completely replaces API v1 which will be extracted from Spree in 5.0.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Admin dashboard experience improvements<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Spree 4.4 comes equipped with a much smoother dashboard user experience thanks to <\/span><a href=\"https:\/\/hotwired.dev\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Hotwire<\/span><\/a><span style=\"font-weight: 400;\"> (Turbo and Stimulus).\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With Turbo you get the speed of a single-page web application without having to write any JavaScript. Stimulus pairs beautifully with Turbo to provide a complete solution for fast, compelling applications with a minimal amount of effort.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As DHH has said: \u201cThis is how we&#8217;re building <\/span><a href=\"https:\/\/world.hey.com\/jason\/the-path-to-basecamp-4-7516ee5b\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Basecamp 4<\/span><\/a><span style=\"font-weight: 400;\">. This is <\/span><a href=\"https:\/\/twitter.com\/dhh\/status\/1275901955995385856?s=20\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">how we built HEY<\/span><\/a><span style=\"font-weight: 400;\">. Now it&#8217;s going to be <\/span><a href=\"https:\/\/world.hey.com\/dhh\/rails-7-will-have-three-great-answers-to-javascript-in-2021-8d68191b\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">the default answer to JavaScript in the latest framework version<\/span><\/a><span style=\"font-weight: 400;\"> together with the new import-map approach. All the missing pages are being printed.\u201d\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">That being said, we\u2019re excited to present you with this huge Spree 4.4 release and are already working on Spree 5.0 running on the latest framework version with all its goodies included.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this latest release, following the low-code and no-code trends, Spree becomes even more composable by introducing Webhooks and Platform API as well as more customizable with Metadata. That translates into easier integration opportunities and shorter delivery timelines. On the business front, this latest Spree version introduces downloadable Digital Product sales (documents, ebooks, images, audio [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":9068,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"none","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","footnotes":""},"categories":[146,52],"tags":[860,859],"class_list":["post-9066","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-open-source-ecommerce","category-open-source","tag-digital-products","tag-webhooks"],"acf":[],"_links":{"self":[{"href":"https:\/\/spreecommerce.org\/wp-json\/wp\/v2\/posts\/9066","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spreecommerce.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spreecommerce.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spreecommerce.org\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/spreecommerce.org\/wp-json\/wp\/v2\/comments?post=9066"}],"version-history":[{"count":0,"href":"https:\/\/spreecommerce.org\/wp-json\/wp\/v2\/posts\/9066\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/spreecommerce.org\/wp-json\/wp\/v2\/media\/9068"}],"wp:attachment":[{"href":"https:\/\/spreecommerce.org\/wp-json\/wp\/v2\/media?parent=9066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spreecommerce.org\/wp-json\/wp\/v2\/categories?post=9066"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spreecommerce.org\/wp-json\/wp\/v2\/tags?post=9066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}