Retail Commerce: Replacement of REST API with GraphQL API for Shopify
Shopify is deprecating the REST API for apps and integrations after February 1, 2025, and switching to GraphQL instead. In MYOB Acumatica 2025.1, the corresponding changes have been implemented in the ecommerce connector. The connector synchronizes the following entities by using GraphQL:
- Stock Item
- Non-Stock Item
- Template Item
- Product Availability
Stock Item and Non-Stock Item Entities
The following table shows how the ecommerce connector maps MYOB Acumatica fields to Shopify fields when it synchronizes stock items and non-stock items with Shopify by using the GraphQL API.
Fields in MYOB Acumatica | Fields in Shopify | |||
---|---|---|---|---|
Field Name | Form Object | Field Name for Query | Object | Type |
The Stock Items (IN202500) form if the exported item is a stock item or the Non-Stock Items (IN202000) form if the exported item is a non-stock item | ||||
Description | Summary area | title | ProductCreateInput / ProductUpdateInput | String |
Item Class | General tab, Item Defaults section | productType | ProductCreateInput / ProductUpdateInput | String |
Description | Description tab | descriptionHtml | ProductCreateInput / ProductUpdateInput | HTML |
Vendor ID | Vendors tab | vendor | ProductCreateInput / ProductUpdateInput | String |
Search Keywords | eCommerce tab | tags | ProductCreateInput / ProductUpdateInput | String |
Category ID | Attributes tab, Sales Categories table | tags | ProductCreateInput / ProductUpdateInput | String |
Visibility: Visible | eCommerce tab | status: ACTIVE | ProductCreateInput / ProductUpdateInput | String |
Visibility: Featured | eCommerce tab | status: ARCHIVED | ProductCreateInput / ProductUpdateInput | String |
Visibility: Invisible | eCommerce tab | status: DRAFT | ProductCreateInput / ProductUpdateInput | String |
Inventory ID | Summary area | sku | ProductVariantsBulkInput / ProductVariantsBulkUpdate | String |
Weight | Packaging tab, Dimensions section | inventoryItem.measurement.weight.value | ProductVariantsBulkInput.inventoryItem > InventoryItemInput.measurement > InventoryItemMeasurementInput.weight | Decimal |
Weight UOM | Packaging tab, Dimensions section | inventoryItem.measurement.weight.unit | ProductVariantsBulkInput.inventoryItem > InventoryItemInput.measurement > InventoryItemMeasurementInput.weight | String |
Default Price | Price/Cost tab, Price Management section | price | ProductVariantsBulkInput / ProductVariantsBulkUpdate | Money |
Tax Category | General tab, Item Defaults section | taxable | ProductVariantsBulkInput / ProductVariantsBulkUpdate | Boolean |
MSRP | Price/Cost tab, Price Management section | compareAtPrice | ProductVariantsBulkInput / ProductVariantsBulkUpdate | Money |
Alternate Type: GTIN/EAN/UPC/ISBN or Barcode | Cross-Reference tab | barcode | ProductVariantsBulkInput / ProductVariantsBulkUpdate | String |
A stock item | requiresShipping | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean | |
A non-stock item, Require Shipment: Selected | General tab, Item Defaults section | |||
Page Title | eCommerce tab | Product.seo.title | ProductCreateInput.seo / ProductUpdateInput.seo | String |
Meta Description | eCommerce tab | Product.seo.description | ProductCreateInput.seo / ProductUpdateInput.seo | String |
Template Item Entity
The following table shows how the ecommerce connector maps MYOB Acumatica fields to Shopify fields when it synchronizes template items with Shopify by using the GraphQL API.
Fields in MYOB Acumatica | Fields in Shopify | |||
---|---|---|---|---|
Field Name | Form Object | Field Name for Query | Object | Type |
The Template Items (IN203000) form | ||||
Description | Summary area | title | ProductCreateInput / ProductUpdateInput | String |
Item Class | General tab, Item Defaults section | productType | ProductCreateInput / ProductUpdateInput | String |
Description | Description tab | descriptionHtml | ProductCreateInput / ProductUpdateInput | HTML |
Vendor ID | Vendors tab | vendor | ProductCreateInput / ProductUpdateInput | String |
Search Keywords | eCommerce tab | tags | ProductCreateInput / ProductUpdateInput | String |
Category ID | Attributes tab, Sales Categories table | tags | ProductCreateInput / ProductUpdateInput | String |
Visibility: Visible | eCommerce tab | status: ACTIVE | ProductCreateInput / ProductUpdateInput | String |
Visibility: Featured | eCommerce tab | status: ARCHIVED | ProductCreateInput / ProductUpdateInput | String |
Visibility: Invisible | eCommerce tab | status: DRAFT | ProductCreateInput / ProductUpdateInput | String |
As part of the synchronization of the Template Item entity, .matrix items are exported to Shopify. The following table shows how the ecommerce connector maps MYOB Acumatica fields to Shopify fields when it synchronizes matrix items with Shopify by using the GraphQL API.
Fields in MYOB Acumatica | Fields in Shopify | |||
---|---|---|---|---|
Field Name | Form Object | Field Name for Query | Object | Type |
The Template Items form | ||||
Attribute | Configuration tab, Attributes section | options | ProductCreateBulkInput / ProductUpdateBulkInput | Array |
Attribute Value | Item Creation tab | options values | ProductCreateBulkInput / ProductUpdateBulkInput | Array |
Default Price | Price/Cost tab, Price Management section | price | ProductCreateBulkInput / ProductUpdateBulkInput | Money |
Tax Category | General tab, Item Defaults section | taxable | ProductCreateBulkInput / ProductUpdateBulkInput | Boolean |
MSRP | Price/Cost tab, Price Management section | compareAtPrice | ProductCreateBulkInput / ProductUpdateBulkInput | Money |
Page Title | eCommerce tab | Product.seo.title | ProductCreateInput.seo / ProductUpdateInput.seo | String |
Meta Description | eCommerce tab | Product.seo.description | ProductCreateInput.seo / ProductUpdateInput.seo | String |
Availability: Set as Available (Track Qty.) | eCommerce tab | inventoryItem.tracked: true | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean |
Availability: Set as Available (Don't Track Qty.) | eCommerce tab | inventoryItem.tracked: false | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean |
Availability: Set as Pre-Order | eCommerce tab | inventoryItem.tracked: false | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean |
Availability: Do Not Update | eCommerce tab | inventoryItem.tracked: No changes | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean |
Availability: Set as Unavailable | eCommerce tab | inventoryItem.tracked: false | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean |
When Qty. Unavailable: Do Nothing | eCommerce tab | inventoryPolicy: No changes | ProductVariantsBulkInput.inventoryPolicy / ProductVariantsBulkUpdate.inventoryPolicy | String |
When Qty. Unavailable: Set as Unavailable | eCommerce tab | inventoryPolicy: DENY | ProductVariantsBulkInput.inventoryPolicy / ProductVariantsBulkUpdate.inventoryPolicy | String |
When Qty. Unavailable: Set as Pre-Order/Continue Selling | eCommerce tab | inventoryPolicy: CONTINUE | ProductVariantsBulkInput.inventoryPolicy / ProductVariantsBulkUpdate.inventoryPolicy | String |
The Stock Items (IN202500) form if the matrix item is a stock item or the Non-Stock Items (IN202000) form if the matrix item is a non-stock item | ||||
Inventory ID | Summary area | sku | ProductVariantsBulkInput / ProductVariantsBulkUpdate | String |
Weight | Packaging tab, Dimensions section | inventoryItem.measurement.weight.value | ProductVariantsBulkInput.inventoryItem > InventoryItemInput.measurement > InventoryItemMeasurementInput.weight | Decimal |
Weight UOM | Packaging tab, Dimensions section | inventoryItem.measurement.weight.unit | ProductVariantsBulkInput.inventoryItem > InventoryItemInput.measurement > InventoryItemMeasurementInput.weight | String |
Alternate Type: GTIN/EAN/UPC/ISBN or Barcode | Cross-Reference tab | barcode | ProductVariantsBulkInput / ProductVariantsBulkUpdate | String |
Product Availability Entity
The following table shows how the ecommerce connector maps MYOB Acumatica fields to Shopify fields when it exports the availability of stock items to Shopify by using the GraphQL API.
Fields in MYOB Acumatica | Fields in Shopify | |||
---|---|---|---|---|
Field Name | Form Object | Field Name for Query | Object | Type |
The Stock Items (IN202500) form | ||||
Availability: Set as Available (Track Qty.) | eCommerce tab | inventoryItem.tracked: true | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean |
Availability: Set as Available (Don't Track Qty.) | eCommerce tab | inventoryItem.tracked: false | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean |
Availability: Set as Pre-Order | eCommerce tab | inventoryItem.tracked: false | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean |
Availability: Do Not Update | eCommerce tab | inventoryItem.tracked: No changes | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean |
Availability: Set as Unavailable | eCommerce tab | inventoryItem.tracked: false | ProductVariantsBulkInput.inventoryItem / ProductVariantsBulkUpdate.inventoryItem | Boolean |
The Shopify Stores (BC201010) form when When Qty. Unavailable is set to Store Default on the eCommerce tab of the Stock Items form | ||||
When Qty. Unavailable: Do Nothing | eCommerce tab | inventoryPolicy: No changes | ProductVariantsBulkInput.inventoryPolicy / ProductVariantsBulkUpdate.inventoryPolicy | String |
When Qty. Unavailable: Set as Unavailable | eCommerce tab | inventoryPolicy: DENY | ProductVariantsBulkInput.inventoryPolicy / ProductVariantsBulkUpdate.inventoryPolicy | String |
When Qty. Unavailable: Set as Pre-Order/Continue Selling | eCommerce tab | inventoryPolicy: CONTINUE | ProductVariantsBulkInput.inventoryPolicy / ProductVariantsBulkUpdate.inventoryPolicy | String |
Fields Unavailable in GraphQL
The following table shows the Shopify fields that were available during the synchronization of the Stock Item, Non-Stock Item, and Template Item entities through the REST API but are unavailable with GraphQL.
Tabs of the Entities (BC202000) form | External Object | External Field | REST API Object | REST API Field |
---|---|---|---|---|
Import Mapping, Import Filtering | Product | Published | Published |
|
Import Mapping, Import Filtering, Export Mapping | Product | PublishedScope | PublishedScope |
|
Import Mapping, Export Mapping | Product -> Product Variants | FulfillmentService | Product > Product Variants | fulfillment_service |
PresentmentPrices | Product > Product Variants | presentment_prices |
The following table shows the Shopify fields that were available during the synchronization of the Product Availability entity through the REST API but are unavailable with GraphQL.
External Field | REST API Object | REST API Field |
---|---|---|
RelocateIfNecessary | InventoryLevel | relocate_if_necessary |
DisconnectIfNecessary | InventoryLevel | disconnect_if_necessary |