Skip to content
Open

8.0 #222

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
8bb0f46
WIP prduct translations
nfourtythree Jun 10, 2026
ad2749d
tidy translations
nfourtythree Jun 10, 2026
ac3eedd
General tidying
nfourtythree Jun 10, 2026
5699421
Merge branch '7.2' into nathaniel/pt-3135-fetching-translations-for-p…
nfourtythree Jun 10, 2026
e10e92a
Add changelog
nfourtythree Jun 10, 2026
468c3b9
WIP Readme update
nfourtythree Jun 10, 2026
be3c939
fix cs
nfourtythree Jun 10, 2026
dd90413
Readme, please! :)
AugustMiller Jun 11, 2026
f2f6a57
WIP make `shopifyId` and `shopifyGid` consistent across the system
nfourtythree Jun 17, 2026
42d0c30
WIP PW tests
nfourtythree Jun 18, 2026
47798e9
Update workflows for 8.0
nfourtythree Jun 18, 2026
e429031
Merge branch '7.x' into 8.0
nfourtythree Jun 18, 2026
4db08c4
Merge branch '7.x' into 8.0
nfourtythree Jun 18, 2026
d329214
Merge branch '8.0' into nathaniel/pt-3135-fetching-translations-for-p…
nfourtythree Jun 18, 2026
a595227
Changelog WIP
nfourtythree Jun 18, 2026
5ce724e
Merge branch '7.x' into 8.0
nfourtythree Jun 19, 2026
71fc700
Remove Craft 4 support
nfourtythree Jun 19, 2026
947fd92
bump deps
nfourtythree Jun 23, 2026
86ee523
Merge branch '8.0' into bugfix/8.0-shopify-id-and-gid-consistency
nfourtythree Jun 23, 2026
c281062
Revert "WIP PW tests"
nfourtythree Jun 23, 2026
19b60ce
fix cs
nfourtythree Jun 23, 2026
810561e
More tests
nfourtythree Jun 23, 2026
33175e3
Metafield normalization tidy
nfourtythree Jun 25, 2026
07f4688
Tweak delete product
nfourtythree Jun 30, 2026
5e25d3c
bump schema version
nfourtythree Jun 30, 2026
bee928a
Add default for little extra security
nfourtythree Jun 30, 2026
7b583af
Tweak changeling
nfourtythree Jun 30, 2026
c6b73c2
Tweak deprecated method
nfourtythree Jun 30, 2026
32236cb
Merge branch 'bugfix/8.0-shopify-id-and-gid-consistency' of github.co…
nfourtythree Jun 30, 2026
d80e96d
Merge pull request #221 from craftcms/bugfix/8.0-shopify-id-and-gid-c…
nfourtythree Jun 30, 2026
122dac6
Merge branch '8.0' into nathaniel/pt-3135-fetching-translations-for-p…
nfourtythree Jun 30, 2026
2966ee6
Tweak context config event naming
nfourtythree Jun 30, 2026
e5abd77
fix cs
nfourtythree Jun 30, 2026
46f6c4a
Merge pull request #219 from craftcms/nathaniel/pt-3135-fetching-tran…
nfourtythree Jul 1, 2026
ce5cb02
Fix event docs
nfourtythree Jul 1, 2026
0847d1e
Added upgrading section
nfourtythree Jul 2, 2026
c21de85
Tidy settings additional features for better typing
nfourtythree Jul 2, 2026
82030a1
tidy
nfourtythree Jul 2, 2026
2b41698
DRY normalising the API scopes
nfourtythree Jul 2, 2026
d2b1bb4
Tidy settings JS
nfourtythree Jul 2, 2026
3463eeb
Use helper method
nfourtythree Jul 2, 2026
efbd25e
fix cs
nfourtythree Jul 2, 2026
85441f1
WIP drop SDK usage
nfourtythree Jul 13, 2026
1f4efa8
fix composer lock
nfourtythree Jul 13, 2026
64b5159
fix cs
nfourtythree Jul 13, 2026
8e03588
Fix webhook topics usage
nfourtythree Jul 14, 2026
4af7f55
fix cs
nfourtythree Jul 14, 2026
8229aa1
Use Craft’s create guzzle client method
nfourtythree Jul 14, 2026
7e00a95
exceptions
nfourtythree Jul 14, 2026
1ec2fc8
doc block fix
nfourtythree Jul 21, 2026
186c283
Throw errors on webhook handle so Shopify knows
nfourtythree Jul 21, 2026
96c4d60
Add tests
nfourtythree Jul 21, 2026
785f296
Merge pull request #223 from craftcms/feature/8.0-change-sdk-usage
nfourtythree Jul 22, 2026
9f28ded
Tidy changelog
nfourtythree Jul 22, 2026
9ccda9a
README updates
nfourtythree Jul 22, 2026
4e0cc6e
udpate readme
nfourtythree Jul 22, 2026
4c68df8
Remove previously deprecated items
nfourtythree Jul 22, 2026
8792f73
Header levels
AugustMiller Aug 12, 2026
0995265
Generalize upgrade alert
AugustMiller Aug 12, 2026
493a0f5
Upgrade intro
AugustMiller Aug 12, 2026
226cd48
8.x upgrade cleanup
AugustMiller Aug 12, 2026
87f7035
7.x upgrade notes
AugustMiller Aug 12, 2026
856464a
Link bounds, newline
AugustMiller Aug 12, 2026
6c557e5
Link to elements docs
AugustMiller Aug 12, 2026
019cccb
Product::getVariants() clarifications
AugustMiller Aug 12, 2026
eafff0e
Additional `shopifyGid` warning
AugustMiller Aug 12, 2026
6850288
Remove Buy Button and JS Buy SDK sections.
AugustMiller Aug 12, 2026
1cf5909
Notes at top of Changelog
AugustMiller Aug 12, 2026
0673b28
Hoist actionable changelog entries (extensibility)
AugustMiller Aug 12, 2026
d68c995
Additional… removal? :sweat_smile:
AugustMiller Aug 12, 2026
867a93b
Remove blank item
AugustMiller Aug 12, 2026
d5e1ae0
Cleanup: already imported
AugustMiller Aug 12, 2026
9f2d25b
Screenshot of OAuth flow
AugustMiller Aug 12, 2026
133533d
Tidy changelog
nfourtythree Aug 13, 2026
7b05773
Add ability to create tests for live Shopify API interaction
nfourtythree Aug 13, 2026
351fc97
Merge branch '8.x' into 8.0
nfourtythree Aug 17, 2026
8e110aa
Changelog tweaks
brandonkelly Aug 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ on:
workflow_dispatch:
push:
branches:
- '7.x'
- '8.x'
- '8.0'
pull_request:
permissions:
contents: read
Expand Down
78 changes: 0 additions & 78 deletions .github/workflows/craft4-ci.yml

This file was deleted.

77 changes: 77 additions & 0 deletions CHANGELOG-WIP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# WIP Release Notes for Shopify 8.0

> [!IMPORTANT]
> Ensure the Craft queue is empty before upgrading. Any pending sync jobs will be unable to update their status after the migration runs.
>
> If you change the **Additional Features** or **Custom Scopes** settings after the app is already authorized, you must update the scopes in your Shopify app configuration and then re-authorize the app.

This is primarily a maintenance release, focusing on Shopify API compatibility, authorization, and overall consistency.

Developers should review their templates and extensions for potentially breaking changes to products’ and variants’ `shopifyId` property.
See [Upgrading](https://github.com/craftcms/shopify/blob/8.x/README.md#upgrading) for details.

### Store Management

- Added support for syncing product translations from Shopify. ([#215](https://github.com/craftcms/shopify/issues/215))
- It’s now possible to view the required API scopes in the plugin settings.
- It’s now possible to extend the API scopes with opt-in additional features and custom scopes.
- Added support for Shopify API versions `2026-04` and `2026-07`.
- Product inventory is now synced when Shopify sends `inventory_items/update` webhooks.

### Extensibility

- Added `craft\shopify\auth\OAuthFlow`.
- Added `craft\shopify\clients\GraphqlClient`.
- Added `craft\shopify\controllers\SettingsController::actionGetScopes()`.
- Added `craft\shopify\enums\ApiVersion`.
- Added `craft\shopify\enums\WebhookTopics`.
- Added `craft\shopify\exceptions\InvalidOAuthException`.
- Added `craft\shopify\exceptions\ShopifyApiCommunicationException`.
- Added `craft\shopify\exceptions\ShopifyApiException`.
- Added `craft\shopify\helpers\Metafield`.
- Added `craft\shopify\helpers\ShopifyHelper`.
- Added `craft\shopify\models\Settings::REQUIRED_SCOPES`.
- Added `craft\shopify\models\Settings::getAdditionalFeatures()`.
- Added `craft\shopify\models\Settings::getAdditionalFeaturesOptions()`.
- Added `craft\shopify\models\Settings::getCustomScopes()`.
- Added `craft\shopify\models\Settings::getScopes()`.
- Added `craft\shopify\models\Settings::setAdditionalFeatures()`.
- Added `craft\shopify\models\Settings::setCustomScopes()`.
- Added `craft\shopify\models\Variant::$shopifyGid`.
- Added `craft\shopify\services\Api::connect()`.
- Added `craft\shopify\services\Api::getShopLocalesGql()`.
- Added `craft\shopify\services\Api::getWebhookTopics()`.
- Added `craft\shopify\services\BulkOperations::getBulkOperationByShopifyGid()`.
- Added `craft\shopify\services\Products::deleteProductByShopifyGid()`.
- Added `craft\shopify\services\Products::deleteShopifyDataByShopifyGid()`.
- Added `craft\shopify\services\Products::syncProductByShopifyGid()`.
- Added `craft\shopify\webhooks\WebhookRegistry`.
- `craft\shopify\elements\Product::setMetafields()` and `craft\shopify\models\Variant::setMetafields()` now require a list-shaped array of `{key, value}` objects (or a JSON-encoded string of the same), and throw `\InvalidArgumentException` for anything else. Previously, an associative `key => value` map was also accepted without validation.
- `craft\shopify\handlers\Webhook::handle()` no longer implements `Shopify\Webhooks\Handler`, and its `$topic` argument is now a `craft\shopify\enums\WebhookTopics` enum instead of a string.
- `craft\shopify\models\Variant::$shopifyId` now holds the numeric Shopify ID. The full GID is now available via `$shopifyGid`.
- `craft\shopify\records\ShopifyData::$shopifyId` is now a generated (read-only) column containing the numeric Shopify ID. The full GID is now available via `$shopifyGid`.
- `craft\shopify\services\Api::getGqlClient()` now returns a `craft\shopify\clients\GraphqlClient` instance instead of `Shopify\Clients\Graphql`.
- API and webhook errors are now thrown as `craft\shopify\exceptions\ShopifyApiException` and `craft\shopify\exceptions\InvalidOAuthException`, rather than the `Shopify\Exception\*` classes from the (now-removed) `shopify/shopify-api` package.
- Renamed `craft\shopify\jobs\ProcessBulkOperationData::$bulkOperationShopifyId` to `$bulkOperationShopifyGid`.
- Renamed `craft\shopify\models\BulkOperation::$shopifyId` to `$shopifyGid`.
- Deprecated `craft\shopify\services\BulkOperations::getBulkOperationByShopifyId()`. Use `getBulkOperationByShopifyGid()` instead.
- Deprecated `craft\shopify\services\Products::deleteProductByShopifyId()`. Use `deleteProductByShopifyGid()` instead.
- Deprecated `craft\shopify\services\Products::deleteShopifyDataByShopifyId()`. Use `deleteShopifyDataByShopifyGid()` instead.
- Deprecated `craft\shopify\services\Products::syncProductByShopifyId()`. Use `syncProductByShopifyGid()` instead.
- Removed `craft\shopify\console\controllers\SyncController::$throttle`.
- Removed `craft\shopify\models\Settings::getApiKey()`. Use `getClientId()` instead.
- Removed `craft\shopify\models\Settings::getApiSecretKey()`. Use `getClientSecret()` instead.
- Removed `craft\shopify\models\Settings::setApiKey()`. Use `setClientId()` instead.
- Removed `craft\shopify\models\Settings::setApiSecretKey()`. Use `setClientSecret()` instead.
- Removed `craft\shopify\services\Api::WEBHOOK_TOPICS`. Use `getWebhookTopics()` instead.
- Removed `craft\shopify\services\Api::getSession()`. Use `connect()` instead.
- Removed `craft\shopify\services\Api::initializeContext()`.

### System

- Shopify for Craft now requires Craft CMS 5.10.7 or later. Craft 4 is no longer supported.
- The `shopify_data` table’s `shopifyId` column has been renamed to `shopifyGid`. A new `shopifyId` generated column has been added, set to the numeric ID at the end of the GID.
- The `shopify_bulkoperations` table’s `shopifyId` column has been renamed to `shopifyGid`.
- Removed the `shopify/shopify-api` Composer dependency.
- Fixed a bug where validation errors for the “Context Pricing Countries” setting weren’t displaying correctly.
- Fixed a bug where `inventory_levels/update` webhooks weren’t triggering a product sync.
Loading