Product update: We've been building
After launching Commerce.js in January, the human behaviours that drive the world of commerce have shifted in a big way.
This digital renaissance means that every company is now a software company as businesses and customers default to online transactions. These recent events have further reinforced our mission as a company — increase the access to modern, API-first tools that lower the cost of experimentation for businesses.
We’ve spent the past few months building the foundation for our headless commerce platform so we can continue to support businesses and their evolving and unique use cases. The team have been working hard to make our APIs more robust and the dashboard a powerful place to manage products and orders.
Let’s highlight a few of the improvements, fixes, and wins we’ve made over the past few months.
Improvements
API
- Added support for using Stripe Payment Intents as a payment method
- Improved error handling when using Stripe payment gateway
- Added APIs for managing digital fulfillments on an order: list, get, revoke, enable
- Updating objects via PUT API requests are no longer idempotent, partial data updates are now allowed using this method, previously requests were idempotent
- All API endpoints now return appropriate no-cache HTTP headers
- Added CRUD endpoints for API keys
- Added API endpoints and support for webhooks and webhook delivery history
- Add unique signing key for merchants to verify authenticity of webhook delivery's signature
- Manual payments are now included in the
pending_payments
array of the order object - Optimised database table indexes to improve order API performance
Orders
- Order API now includes digital package expiry date
- Order object
metadata
attribute is now namedmeta
to be in line with other objects - Updating an order now supports defining a custom
meta
object - Orders may now be retrieved by the
customer_reference
identifier
Products
- Creating or updating a product via the API now supports configuring discounts for it in the same operation
- Creating or updating a product now returns the updated product object
- Products now support a custom
meta
attribute via the API - Added support for tax exempt products
- APIs for retrieving a product, adding to cart, and generating a new cart from a product may all now use the product's SKU as an identifier
Discounts
- The discount object now includes an
is_expired
boolean - Updating discounts is now supported via the API
- Discounts can now be applied to multiple products
Categories
- Added CRUD API endpoints for categories
- Creating and editing categories now allows for nullable
description
attributes - Deleting a category now returns the category's ID, and clears existing product associations
Dashboard
- Our new headless dashboard is being rolled out to deliver an elevated admin experience
- Digital packages in an order may now have their expiry date and download counter cleared
- Webhook delivery history records now include the first 500 characters of the callback URL's response body
Other notable updates
- Released a new demo store to highlight the power and flexibility of Commerce.js
- Launched HeadlessCommerce.org to drive awareness in the headless commerce ecosystem
- Listed Commerce.js as an integration partner with Manifold
- Beta integration with Zapier
- Added Commerce.js examples to the API documentation
- Added new integration resources for React.js, Next.js, Vue.js, Nuxt.js, Three.js, Gatsby
- JavaScript examples are now included in the Chec API documentation
- Improved response attribute documentation for discounts, categories, and developer log API endpoints
What’s next?
Without giving too much away, we’ve got some exciting updates and features in the pipeline. These include ongoing updates to the dashboard, the creation of new endpoints, and a documentation/ guides overhaul.
To get a first glance at these features and be closer to our developer community, join our community slack channel.