Shopify Connector - Release Notes
[v1.15]
Support of Shopify Admin API version 2024-04.
A bug is fixed around having DefaultVariantSKU and DefaultVariantBarcode mapped at the same product.
To prevent missing updates to SyncId, SyncDate and SyncMsg a retry delay is added before the Shopify Connector try to update the values again.
A new mapping DefaultVariantWeight is added to set weight for products without variants.
The Shopify Connector 1.15 use Shopify Rest API and this API can not handle multiple images. Try to increase the timeout in the config file. It is recommended to upgrade the Shopify Connector to version 2.x which use Shopify GraphQL API.
To prevent errors like “This product is currently being modified. Please try again later“ a retry delay is added before the Shopify Connector try to update a product again.
[v1.14]
Support of Shopify Admin API version 2023-10.
Project dependencies (NuGet packages) updated.
Add BearerToken to config file.
[v1.13]
Support of Shopify Admin API version 2022-10.
[v1.12]
Admin API authentication using access token.
Support of Shopify Admin API version 2022-01.
[v1.11]
Shop resource 'force_ssl' property removed.
Metafield resource 'value_type' property change to 'type'.
Metafield resource 'type' property value support update.
Product Tags parameter parsing fixed.
Metafield Namespace parameter validation fixed.
Support of Shopify API version 2021-10.
[v1.10]
UTC time use instead of local time.
Support of Shopify API version 2021-01.
[v1.9]
Support of Shopify API version 2020-04
Metafield value and description definition separated to independent mappings
Error reporting fixed to update product/category sync failures back to Perfion immediatelly.
[v1.8]
Default variant inventory tracking status handling updated. The tracking is automatically enabled if the DefaultVariantQuantity is specified.
Default variant inventory quantity, SKU and Cost handling updated. These values will be set in Shopify by the Connector only if mappings for those values are defined in product mappings.
[v1.7]
Support of Shopify API version 2020-01.
Support of default product variant.
Variant metafield synchronization fix.
EC Setting mapping parameters were made to be case insensitive.
Error logging improved for EC products and categories when invalid EC response is received.
Error logging improved for products, when variants have duplicate options.
Configuration check updated for SyncID, SyncMsg and SyncDate fields in order to detect misconfigurations when these parameters are incorrectly created in Perfion as selectable features.
[v1.6]
Support of Shopify API version 2019-10.
New parameter added to EC Settings mappings: ShopifyApiVersion. It allows specifying Shopify API version the Shopify Connector should use when sychronizing data with Shopify.
Shopify API version information added to log.
Shopify API version information added to debug response messages from Shopify.
Product relation to categories status synchronization to Shopify fixed.
Product SyncType "UpdateOnce" functionality fixed.
A bug fixed which did not allow to synchronize products without images.
SSL/TSL issue fixed.
[v1.5]
Shopify request quota information data added in debug messages when logging Shopify response messages.
Various thresholds updated to lower the probability of triggering Shopify over quota error.
Quota control algorithm updated to account for Shopify's flawed quota reporting algorithm.
Logging timestamp updated to show milliseconds.
Variant synchronization error fixed when KeepExistingVariantData option is enabled, but product variant sync is not enabled. The error was introduced in v1.4.
[v1.4]
Variant quantity update fixed when using KeepExistingVariantData option.
[v1.3]
EC API minimum version requirement updated to 2019 R1 (4.5.52) in order to support the new Perfion licensing model.
Logging related updates:
Logger handling updated to allow using a custom logger with Connector. The only requirement is that the new logger supports Perfion ILogger interface.
The logger was made as optional, e.g. connector will work fine without any logger (not recommended).
Logging message handling updated to better report context and exception information
Warning error reporting fixed for products and categories
Error type logging updated to include better explanations what happened
Debug logging updated. New messages for independent product and category synchronization start
The Connector as console application was updated to report what is happening in Connector manager to the console. When console application is started, it will show what is happening in manager in real time.
Shopify Connector synchronization manager updates:
The synchronization manager was moved to independent library and can be included into custom project in order to build a custom application. An example of console application project have been added to manual.
The synchronization manager was updated to stop Connector nicely. In the previous version the Connector was always abruptly terminated when, e.g. Windows service was stopped. The new version will try finishing synchronizing those items which it synchronizes at the moment (e.g. those, which were already partly synchronized, but not completed yet) and will stop the manager right after. In case this finalization procedure takes too long, the Connector will still use abrupt termination after some grace period. In case the Connector is not in synchronization state, e.g. waiting for next synchronization, then Connector will be stopped immediately.
The synchronization manager was updated to allow custom application builders to request information about its status. The information can be retrieved directly from the manager or one can also subscribe to various events, which will inform user each time mangers state changes. The following information can be retrieved from manager hile it is running:
If manager is running in manager mode or is executing a single synchronization request.
Manager's current state. The state information shows what manager is currently doing.
Manager's current error state. The error state shows if manager has some errors, e.g. if it failed retrieving configuration.
Manager's synchronization related states. When manager is in synchronization state one can get more detailed information about what manager is doing, e.g.: Which entity is being synchronized, e.g. product/category, how many items there were detected for synchronization, e.g. new/updated/deleted item counts, how many items succeeded/failed so far, progress in percent.
Manager's sleep information. In case manager is in waiting mode, one can get information about when manager will wake up to do next planned action.
Unpublished product and category data support added (new EC setup parameter UpdateUnpublishedItems)
Support for Shopify inventory system was implemented. Functionality:
Variant update will update Inventory Item entity.
SKU parameter update (previously SKU was saved directly in variant entity)
Cost parameter update (new variant parameter)
Tracked parameter update (new variant parameter)
KeepExistingVariantData parameter supports Inventory Item entity, which means that when updating existing variant with partial data, then data from Inventory Item entity will be kept as it is in Shopify.
Variant update will update Inventory Level entities. The new Shopify inventory system allows to save variant quantities for different locations.
Multiple locations are supported
Multiple quantities can be updated for each variant
Variant quantity update for fulfillment service location is supported
New variant parameter 'DoNotUseDefaultQuantities' added to support updating variant quantities using fulfillment service and also manual quantity control independently for each variant.
In order to be able to synchronize products the Shopify shop's private app should be updated by enabling the following access rights:
Inventory read/write
Locations read
The new Shopify inventory system introduced significant structural changes, which will negativelly affect product synchronization performance.
Updated ECommerce settings mappings:
RefLoc_*. The reference location parameters, which maps Shopify locations to Perfion reference locations.
UpdateUnpublishedItems. The parameter allows to contorl update of unpublished products and categories.
Updated ECommerce variant mappings:
SKU. SKU data is no longer saved as variant data, but instead as Inventory Item data.
Cost. The new variant field, which is part of the new Inventory Item entity data.
Tracked. The new variant field, which is part of the new Inventory Item entity data. The field controls if variant quantities are used.
DoNotUseDefaultQuantities. The new Connector parameter, which allows to disable use of default quantity values. By default Connector uses default values for all fields defined in mappings. This parameter will disable such functionality for variant quantities, which allows controling variant quantities by using fulfillment service or manually for each variant.
InventoryQuantity. This is the old variat quantity contorl parameter and it was removed, because Shopify do not use it any more to update variant quantity.
OldInventoryQuantity. This is the old variant quantity contorl parameter and it was removed, because Shopify do not use it any more to update variant quantity.
InventoryQuantityAdjustment. This is the old variant quantity contorl parameter and it was removed, because Shopify do not use it any more to update variant quantity.
Quantity_*. Multiple parameters, which allows to update variant quantities for multiple locations. * is the name of reference location, which has to be defined in EC Settings mappings and identifies to which Shopify location the quantity refers to.
RelocateIfNecessary. The new variant field, which is part of the new Inventory Level entity data. It is used when updating variant quantity data to determine how the data will be updated in Shopify.
isconnectIfNecessary. The new variant field, which is part of the new Inventory Level entity data. It is used when updating variant quantity data to determine how the data will be updated in Shopify.
4 new variant fields related to HS codes, country codes and province codes: CountryCodeOfOrigin, CountryHarmonizedSystemCodes, HarmonizedSystemCode, ProvinceCodeOfOrigin
Connector configuration file related updates:
Windows service and console application configuration file parameters updated. The parameter WorkDirectory was removed.
Connector console application was updated to handle configuration parameters in the same way as Windows service version of Connector. Console application have not used parameter default values in previous version, while in current version it will check if parameter is defined and will set default value if it is not present.
SyncMsg parameter validation added to Connector initialization in order to detect the error when this parameter is not correctly configured in EC mappings in Perfion. SyncMsg parameter is sync update type parameter and must always be linked to Text type feature. Validation is valid for Product and Category mappings.
ECommerce Mappings Sync type parameters, which are used for saving information from Connector back to Perfion validation updated to check that these parameters are defined in mappings as features and that they do not have feature data properties such as Localizable or Inheritable. The following fields fall into this category: SyncDate, SyncID, SyncMsg, SyncType.
Category retrieval procedure for product synchronization updated to handle category related errors. The more informative error message added in case such errors occurs and also the max number of allowed retries added in order to limit resource use.
Manual updated to document some of the introduced changes
[v1.2]
Product publishing issue fixed
[v1.101]
Statistics calculation updated
[v1.1]
Error corrected, where default values for Sync parameters were not set correctly in case user have not added Sync parameter in configuration.
The following parameters were updated:
Product: SyncProduct -> from 'true' to 'false'
Product: SyncVariants -> from 'true' to 'false'
Product: SyncImages -> from 'true' to 'false'
Variant: SyncVariant -> from 'true' to 'false'
Variant: SyncImage -> from 'true' to 'false'
Collection: SyncCollection -> from 'true' to 'false'
[v1.01]
Failure handling corrections
Console application
Run continuous like with service, but in command prompt: ShopifyConsoleApp.exe
Run once in command prompt: ShopifyConsoleApp.exe -runonce
[v1.0]
Product/category update in Perfion after product/category synchronization procedure fixed. Illegal XML character removal added from request message.
Project updated to use new libraries related to how failures are handled. This should not affect functionality, but there might be some changes related to how failures are logged to log file or shown in Perfion.
Additional Perfion ECommerce Mapping validation was added in Shopify Connector initialization in order to check if there are no technical errors in configuration. The standard Perfion ECommerce API functionality will ignore the misconfigured data in some cases, but this behavior may lead to data corruption or data not being synchronized correctly. For example, if in ECommerce Mappings user defines a feature, but misspells its name, then API will ignore that mapping without producing any errors. The updated version will be able to detect this and any failures will be written to the log file.
Validation if data is correctly received from Perfion. In some cases it happens, that data is not returned via EC API even when it is requested. In this case the previous version would not process this data at all without any error sent back to Perfion to indicate that given product/category synchronization failed. The new version will report this failure.
Product variant handling updated when synchronizing product with Shopify. The previous version of Shopify Connector have always recreated all variant data during product update, which lead to the loss of some variant data, which is not directly used from Perfion. The new version will do the same as before, but if ECommerce Settings Mapping parameter KeepExistingVariantData is set to 'true', then it will transfer all variant data, which is not controlled from Perfion, to the new variants. This is especially important in case the product and variant data in Shopify is synchronized using several solutions. For example, Perfion may update general product and variant data like names, descriptions, media, metadata, etc., while other 3rd party solutions may independently control variant prices and quantity. The new ECommerce Settings Mapping KeepExistingVariantData default value is 'false' (e.g. the same behavior as in previous version).
Note 1: setting KeepExistingVariantData parameter value to 'true' will affect synchronization performance. In order to transfer existing variant data to new variants the Shopify Connector will send one more request to Shopify per product.
Note 2: not all variant data can be transfered from existing variants to new variants. Shopify Connector supports these variant fields: Price, CompareAtPrice, Taxable, SKU, Barcode, Grams, WeightUnit, Weight, InventoryPolicy, OldInventoryQuantity, InventoryQuantity, InventoryQuantityAdjustment, FulfillmentService, InventoryManagement, RequiresShipping.
A new optional parameter KeepExistingVariantData added to ECommerce Settings Mappings to enable/disable variant data update. Default value is 'false', e.g. variant data update is disabled.
A new optional parameter EnableStatistics added to Shopify Connector configuration to enable/disable calculation and logging of statistics data. Default value is 'false'. Note: setting parameter value to 'true' will affect Shopify Connector performance.
Performance was optimized which may result in significantly faster synchronization times. Note: The achieved performance improvements depends on data quantity and complexity.
[v0.93]
ECTimeoutInSec config file parameter handling fixed
Some structural changes made in the code. More .dll files added to solution.
Service initialization procedure updated to fix the "The service takes too long to start" issue
Syncrhonization manager initialization updated. In case the EC API is not available during service start, it will continue to check its status continuosly every 10 minutes. The EC API is considered to be available if EC API version request is successful.
Test versions:
[v6]
Default values changed for some Sync type parameters:
Product: SyncProduct -> from 'true' to 'false'
Product: SyncVariants -> from 'true' to 'false'
Product: SyncImages -> from 'true' to 'false'
Variant: SyncVariant -> from 'true' to 'false'
Variant: SyncImage -> from 'true' to 'false'
Collection: SyncCollection -> from 'true' to 'false'
[v5]
ECommerce Setting new parameter SyncCategories added and code was changed to support it.
ECommerce Setting optional parameter parsing fixed in case it is not defined.
Category statistics computation fixed in case there are no categories for synchronization.
Category configuration parsing fixed in case there are no ECommerce Mappings for category.
Default log level changed to "Info".
[v4]
Decimal value handling fixed (variant price and weight )
Date formatting error fixed
Variant order in product fixed
Debug log level added
Performance tuning in various areas
[v3]
Removed ShopifyService_ECommerceApiWebRef_GetData parameter from config file
2 new parameters added to config file: ProgressReportStepInPct and ECDataChunkSize
Shopify API statistics calculation fixed
Statistics data updated with new parameters
Shopify product update fix when option order is changed
Shopify product update fix when number of options are changed
ECommerce API data retrieval in parallel with Shopify data processing implemented
SyncKeepDeletedMetafields parameter added for product and custom collection
[v2]
Serious performance issue fixed
Some warning message handling changed in various places
ECTimoutInSec parameter value in configuration file changed (60 => 300)
[v1]
First version