โ ๏ธ Breaking Change
Impact Score: 7/10
Saleor 3.14.0 โ Release Notes & Engineering Impact
Source available โ automated, not human-reviewed
Component: saleor ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
Breaking-change evidence from the source
Breaking changes - Gift cards can now be applied to checkouts without requiring an email and they are no longer locked to a single email after use. The fields `GiftCard.usedBy` and `GiftCard.usedByEmail` are deprecated and will be removed in Saleor 4.0. - #13019 by @tomaszszymanski129
This breaking change affects any custom plugins in open-source Saleor if they override any of the above-mentioned methods.
โก Executive Summary (TL;DR)
Saleor 3.14.0. Source highlight: Welcome to the 3.14 release of Saleor!
Who Does This Impact? (Role-Based Analysis)
๐ป Software Engineers & Devs
Check the source notes against the package and APIs you use before upgrading.
๐ Product & Engineering Leads
Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.
โ๏ธ DevOps & Security
Verify the target version, runtime requirements and rollback procedure in the official documentation.
โ ๏ธ Breaking Changes & Deprecations (2)
- Breaking changes - Gift cards can now be applied to checkouts without requiring an email and they are no longer locked to a single email after use. The fields `GiftCard.usedBy` and `GiftCard.usedByEmail` are deprecated and will be removed in Saleor 4.0. - #13019 by @tomaszszymanski129
- This breaking change affects any custom plugins in open-source Saleor if they override any of the above-mentioned methods.
โจ New Features & Capabilities (6)
- [Preview] Add `orderBulkCreate` mutation - #12269
- [Preview] Add `attributeBulkTranslate` and `attributeValueBulkTranslate` mutations - #12965
- [Preview] Add `where` and `search` filtering options on `products` query - #12960
- Add `checkoutCreateFromOrder` mutation to create checkout from order - #12628
- Introduce channel permissions - #10423
- Add `enableAccountConfirmationByEmail` option in the `shopSettingsUpdate` mutation, which allows controlling whether account confirmation should be sent on new account registrations (before it was controlled by env variable `ENABLE_ACCOUNT_CONFIRMATION_BY_EMAIL`) - #12781
๐ง Bug Fixes & Patches (3)
- Fix saving `description_plaintext` for product - #12586
- Fix sending `product_created` event in `ProductBulkCreate` mutation - #12605
- Fix adding new lines to draft order when the existing line has deleted product - #12711
๐ View Raw Release Notes (Original Developer Log)
Welcome to the 3.14 release of Saleor!
### Highlights
#### Order import with the new `orderBulkCreate` mutation - #12269 by @zedzior
This mutation enables the creation of multiple orders with a single request, which is useful for importing orders from external systems. The mutation is more flexible in terms of the data it accepts, as most of the validation and calculations that occur when placing orders are skipped. For more details, please refer to the documentation at https://docs.saleor.io/docs/3.x/developer/bulks/bulk-orders.
#### Channel permissions for orders - #10423 by @IKarbowiak
Saleor 3.14 introduces the ability to restrict staff user access to selected channel data. Currently, this feature is only available for queries and mutations protected by the `MANAGE_ORDERS` permission, but it will be extended to other permissions in the future. For more information, please refer to the documentation at https://docs.saleor.io/docs/3.x/developer/permissions#user-permissions.
#### Create checkout from order with the `checkoutCreateFromOrder` mutation - #12628 by @korycins
The new `checkoutCreateFromOrder` mutation enables the creation of a checkout based on an existing order. By accepting an order ID, it creates a new checkout with the same checkout lines as in the provided order. This feature makes it easier to implement an "order again" flow. For more information, please refer to the documentation at https://docs.saleor.io/docs/3.x/developer/checkout/order-to-checkout.
### Breaking changes
- Gift cards can now be applied to checkouts without requiring an email and they are no longer locked to a single email after use. The fields `GiftCard.usedBy` and `GiftCard.usedByEmail` are deprecated and will be removed in Saleor 4.0. - #13019 by @tomaszszymanski129
- The `ProductBulkCreateError.path` field for errors related to product variants input in the `productBulkCreate` mutation will now return more detailed error paths, e.g. `variants.1.stocks.0.warehouse` instead of `variants.1.warehouses` - #12534 by @SzymJ
- The `discounts` field has been removed from the listed plugin manager methods. Instead of the `discounts` argument, an applied `discount` is now assigned to each line in the `CheckoutLineInfo` inside the `CheckoutInfo` object. - #11934 by @fowczarek
- `calculate_checkout_total`
- `calculate_checkout_subtotal`
- `calculate_checkout_shipping`
- `get_checkout_shipping_tax_rate`
- `calculate_checkout_line_total`
- `calculate_checkout_line_unit_price`
- `get_checkout_line_tax_rate`
- `preprocess_order_creation`
This breaking change affects any custom plugins in open-source Saleor if they override any of the above-mentioned methods.
### GraphQL API
- [Preview] Add `orderBulkCreate` mutation - #12269 by @zedzior
- [Preview] Add `attributeBulkTranslate` and `attributeValueBulkTranslate` mutations - #12965 by @SzymJ
- [Preview] Add `where` and `search` filtering options on `products` query - #12960 by @zedzior
- Allow setting metadata during user creating and updating - #12577 by @IKarbowiak
- The following mutations have been updated:
- `customerCreate`
- `customerUpdate`
- `staffCreate`
- `staffUpdate`
- `accountUpdate`
- `customerBulkUpdate`
- Add `checkoutCreateFromOrder` mutation to create checkout from order - #12628 by @korycins
- Allow setting metadata during invoice creating and updating - #12641 by @IKarbowiak
- Introduce channel permissions - #10423 by @IKarbowiak
- Limit staff users to access only certain channels. Granted permissions only apply to channels that the user has already been given access to.
- Add `enableAccountConfirmationByEmail` option in the `shopSettingsUpdate` mutation, which allows controlling whether account confirmation should be sent on new account registrations (before it was controlled by env variable `ENABLE_ACCOUNT_CONFIRMATION_BY_EMAIL`) - #12781 by @SzymJ
- Add `path` field to `ProductVariantBulkError` - #12534 by @SzymJ
- Add `enable_account_confirmation_by_email` to `SiteSettings` model and allow to update it via `shopSettingsUpdate` mutation - #12781 by @SzymJ
- Add `brand` optional field with brand data (initially logo image) to `Manifest`, `AppInstallation` and `App` - #12361 by @przlada
- Add `externalReference` field to `AttributeValueInput`, `BulkAttributeValueInput` and `AttributeValueSelectableTypeInput` - #12823 by @SzymJ
### Saleor Apps
- Introduce channel permissions - #10423 by @IKarbowiak
- Extend the OpenID connect configuration with `Staff user domains` and `Default permission group name for new staff users`.
- When the OpenID plugin is active, the default staff permission group is created, and all staff users are assigned to it.
- To ensure the proper functioning of OAuth permissions, ensure that the
`Default permission group name for new staff users` is set to a permission group with no channel restrictions.
- [Preview] Add `ORDER_BULK_CREATED` event, which is sent for successfully imported orders - #12536 by @zedzior
### Other changes
- Fix saving `description_plaintext` for product - #12586 by @SzymJ
- Fix sending `product_created` event in `ProductBulkCreate` mutation - #12605 by @SzymJ
- Add `ORDER_REFUNDED`, `ORDER_FULLY_REFUNDED`, `ORDER_PAID` webhooks - #12533 by @korycins
- Add functionality to delete expired orders automatically - #12710 by @korycins
- Handle error raised by 0Auth when fetching token - #12672 by @IKarbowiakg
- Fix adding new lines to draft order when the existing line has deleted product - #12711 by @SzymJ
- Upgrade checkout `complete_checkout` to assign guest checkout to account if it exists - #12758 by @FremahA
- Remove `ENABLE_ACCOUNT_CONFIRMATION_BY_EMAIL` env variable from settings - ##12781 by @SzymJ
- Remove default `EMAIL_URL` value pointing to console output; from now on `EMAIL_URL` has to be set explicitly - #12580 by @maarcingebala
- Match `Orders` to `User` when creating a user using the OIDC plugin. - #12863 by @kadewu
- Allow defining a custom price in draft orders - #12855 by @KirillPlaksin
- Update price resolvers - use `discounted_price` on `ProductChannelListing` and `ProductVariantChannelListing` channel listings to return the pricing - #12713 by @IKarbowiak