I’ve been hesitating to submit this because it’s seemingly non-deterministic and is difficult to reproduce, and to date has only impacted a small subset of our merchants. But for months now we have been running into issues that we believe are related to Data Synchronization and the ProductSearch API, and the instances of this occurring seem to be increasing.
For one of our apps we use api.productSearch.searchProducts and pass the SKU as the queryString, and sometimes the product search API will return no results whatsoever for these searches, permanently. We had a merchant using our app happily for over a year who suddenly began encountering this. We asked them to confirm that it showed “Synced” under Products and Inventory for Data Synchronization and the answer was yes.
The only solution seems to be telling them to follow these steps that were once given to us by Partner Support:
Open the iPad’s Settings app and scroll down to Apps > Shopify POS
At the bottom, tap Reset Account.
Toggle the Reset Account switch
Force close the Shopify POS app
Re-open the POS app and log back in as normal.
Wait for the Data Synchronization to complete
If that fails, uninstall and reinstall Shopify POS
We have another app where we populate a list of a merchants’ products again using api.productSearch.searchProducts. Then, we will filter the list down further by filtering against a specific product tag that they specify or as they type into a SearchBar.
In the case of this merchant who has previously been using our app without issues for years, this weekend when they selected the product from the list, inexplicably the variantId was sometimes being returned as the value for product.id which would break our app’s business logic.
When we had them send us a video of them reproducing the bug, when they opened our app’s tile, only a subset of products were showing in our app’s product list which suggested some kind of Data Synchronization issue.
Our requests:
For apps like ours that depend heavily on the ProductSearch API, we need to be informed somehow if Data Synchronization is still being completed AND/OR that the Product Search API product count != their products/count.json for POS products. For example, if you login to Shopify POS and then immediately open our app’s tile and try to start searching for products, you won’t get any results because Data Synchronization hasn’t completed. This results in a poor experience for merchants.
More importantly though, there seems to be some difficult to reproduce Data Synchronization related bug that can affect / break the Product Search API wherein the merchant is forced to Reset Account in order to get things working again
Thank you for providing such a thorough description of the issues you’re seeing. I wanted to let you know that these problems have recently been identified and investigated by our team. There should be fix already available in 10.7 and above.
We appreciate your patience and your detailed feedback. If you continue to experience these issues after updating, please reach out so we can investigate further.
@Victor_Chu just checking - are you sure this fix is for the same Data Synchronization issue I mentioned? I had another merchant experience this issue on Saturday, and I realized 10.7 has now been out for several weeks. The matching variantId and productId issue is one that didn’t begin popping up until about a week ago.
@derrick We’ve added a couple of additional fixes to 10.9 which we were not able to make for 10.7. Could you check if the newest version fixes the issue?
@Victor_Chu the bug is ongoing in 10.9.1. There is a new merchant now experiencing this bug at this very moment, we just got off the phone with them and had them do a test:
“jsonPayload”: { “variantId”: 45286695927960, “vendor”: “”, “productId”: “45286695927960”, // this is returning the variantId by mistake “locationId”: “61846651032”, },
shop: four-horsemen-comics-and-gaming-morgantown
In this case they can’t even Reset Account to resync their data because the staff members don’t know the POS password to log back in.
Hey @derrick, we really appreciate the detailed bug report! It took a while to fully understand the root issue but we’re confident that a fix coming out with POS 10.11 will address it.
The problem stemmed, as you observed, from the POS synchronization state affecting the Product Search API. Whilst the local data source is being updated during the synchronization phase, POS switches to using a remote data source for searching products.
This remote data source incorrectly assigned the variantId to the productId field when processing the returned data. This has now been updated to return the `id` of the product as expected.
Thanks again for the detailed report, it really helped, and I hope this resolves the issue for you and the merchants you support. Please do let us know if it does.
Hi @Aaron_Schubert@Victor_Chu, this problem has begun popping up again in recent weeks where we’ve had to tell merchants to Reset Account for the Shopify POS App in iOS settings in order for the Product Search API to find certain products. Was an update pushed recently that might have broken the previous fix here?