Saleor 3.17.0stable Released Oct 11, 2023
โš ๏ธ Breaking Change Impact Score: 7/10

Saleor 3.17.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 - Deprecate `external_url` on `Invoice` GraphQL type in favor of `url`. No matter if the invoice is stored on Saleor or is a link to an external invoice it will get returned in the `url` field.
Read the original context โ†—
Source flags breaking changes โ€” review applicability
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Saleor 3.17.0. Source highlight: Welcome to Saleor 3.17 release!

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 (1)

  • Breaking changes - Deprecate `external_url` on `Invoice` GraphQL type in favor of `url`. No matter if the invoice is stored on Saleor or is a link to an external invoice it will get returned in the `url` field.

โœจ New Features & Capabilities (5)

  • Introduce promotions, that allow applying discounts based on certain conditions.
  • Add new subscriptions:
  • Add new event types:
  • **Feature preview change**:
  • Add a new `updatedAt` field and a filter for product categories. - #13825

๐Ÿ”ง Bug Fixes & Patches (1)

  • Fix thumbnail redirects sometimes failing with an unsafe redirect warning - #14023
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
Welcome to Saleor 3.17 release! ### Highlights - Introduce promotions, that allow applying discounts based on certain conditions. The promotions are replacements for current sales, cover all sales functionalities, and provide additional features. - #12980 by @IKarbowiak @zedzior - Add new types: - `Promotion` - Represents the promotion. - `PromotionRule` - Specifies conditions that must be met to apply the discount. - `PromotionTranslation` - Represents promotion translations. - `PromotionTranslatableContent` - Represents promotion's original translatable fields and related translations. - `PromotionRuleTranslation` - Represents promotion rule translations. - `PromotionRuleTranslatableContent` - Represents the promotion rule's original translatable fields and related translations. - Add new mutations: - `promotionCreate` - Creates a new promotion. - `promotionUpdate` - Updates an existing promotion. - `promotionDelete` - Deletes a promotion. - `promotionBulkDelete` - Deletes multiple promotions. - `promotionRuleCreate` - Creates a new promotion rule. - `promotionRuleUpdate` - Updates an existing promotion rule. - `promotionRuleDelete` - Deletes a promotion rule. - `promotionTranslae` - Translates a promotion. - `promotionRuleTranslae` - Translates a promotion rule. - Add new webhooks: - `PROMOTION_CREATED` - triggered when promotion is created. - `PROMOTION_UPDATED` - triggered when the promotion is updated. - `PROMOTION_DELETED` - triggered when the promotion is deleted. - `PROMOTION_STARTED` - triggered when the promotion is started. - `PROMOTION_ENDED` - triggered when the promotion is ended. - `PROMOTION_RULE_CREATED` - triggered when the promotion rule is created. - `PROMOTION_RULE_UPDATED` - triggered when the promotion rule is updated. - `PROMOTION_RULE_DELETED` - triggered when the promotion rule is deleted. - Add new subscriptions: - `PromotionCreated` - Event sent when promotion is created. - `PromotionUpdated` - Event sent when the promotion is updated. - `PromotionDeleted` - Event sent when promotion is deleted. - `PromotionStarted` - Event sent when promotion is started. - `PromotionEnded` - Event sent when promotion is ended. - `PromotionRuleCreated` - Event sent when promotion rule is created. - `PromotionRuleUpdated` - Event sent when promotion rule is updated. - `PromotionRuleDeleted` - Event sent when promotion rule is deleted. - Add new event types: - `PromotionCreatedEvent` - Represents the history log of the promotion created event. - `PromotionUpdatedEvent` - Represents the history log of the promotion updated event. - `PromotionStartedEvent` - Represents the history log of the promotion started event. - `PromotionEndedEvent` - Represents the history log of the promotion ended event. - `PromotionRuleCreatedEvent` - Represents the history log of the promotion rule created event. - `PromotionRuleUpdatedEvent` - Represents the history log of the promotion rule updated event. - `PromotionRuleDeletedEvent` - Represents the history log of the promotion rule deleted event. - `PromotionEventInterface` - Interface for promotion-related event history log. - `PromotionRuleEventInterface` - Interface for promotion rule-related event history log. - Deprecate types (Saleor 4.0): - `Sale` - Use `Promotion` and `PromotionRule` instead. - `SaleChannelListing` - Use `PromotionRule` instead. - Deprecate mutations (Saleor 4.0): - `saleCreate` - Use the `promotionCreate` mutation instead. - `saleUpdate` - Use the `promotionUpdate` mutation instead. - `saleDelete` - Use the `promotionDelete` mutation instead. - `saleBulkDelete` - Use the `promotionBulkDelete` mutation instead. - `saleCataloguesAdd` - Use the `promotionRuleCreate` mutation instead. - `saleCataloguesRemove` - Use `promotionRuleUpdate` or `promotionRuleDelete` mutations instead. - `saleChannelListingUpdate` - Use `promotionRuleCreate` or `promotionRuleUpdate` mutations instead. - `saleTranslate` - Use the `promotionTranslate` mutation instead. - Deprecate webhooks (Saleor 4.0): - `SALE_CREATED` - Use the `PROMOTION_CREATED` instead. - `SALE_UPDATED` - Use the `PROMOTION_UPDATED` instead. - `SALE_DELETED` - Use the `PROMOTION_DELETED` instead. - `SALE_TOGGLE` - Use `PROMOTION_STARTED` and `PROMOTION_ENDED` instead. - Deprecate subscriptions (Saleor 4.0): - `SaleCreated` - Use the `PromotionCreated` instead. - `SaleUpdated` - Use the `PromotionUpdate` instead. - `SaleDeleted` - Use the `PromotionDeleted` instead. - `SaleToggle` - Use `PromotionStarted` and `PromotionEnded` instead. ### Breaking changes - Deprecate `external_url` on `Invoice` GraphQL type in favor of `url`. No matter if the invoice is stored on Saleor or is a link to an external invoice it will get returned in the `url` field. ### GraphQL API - **Feature preview change**: - Order bulk creation allows to import archive orders - #14177 by @kadewu - `orderBulkCreate` now will attempt to create an order with the `IGNORE_FAILED` policy even if: - `User` cannot be resolved and `email` wasn't provided. - `Variant` wasn't provided but `product_name` was provided. ### Saleor Apps ### Other changes - Fix thumbnail redirects sometimes failing with an unsafe redirect warning - #14023 by @patrys - New environment variable `PUBLIC_URL` to define the URL on which Saleor is hosted (e.g., https://api.example.com/). Takes precedence over `ENABLE_SSL` and `Shop.domain` for URL generation - #13841 by @przlada - Add a new `updatedAt` field and a filter for product categories. - #13825 by @rafiwts - Made the triggering frequency of update-search Celery beat tasks customizable (settable using `BEAT_UPDATE_SEARCH_FREQUENCY`) - #14152 by @NyanKiyoshi