We’re trying to figure out the best way to detect when product translations are updated in Shopify.
Use case:
We sync product data (including translations) to our system, the only way seems to be to call the graphql api at the time you need the translations but we wanted to instead store the translations in our database for fast access. So we need to know when translations are changed, so that we can re-sync only the affected products.
What we’ve observed so far:
- There doesn’t seem to be a dedicated webhook for translation updates (e.g. product title/description translations)
- Translation changes made via Translate & Adapt / Markets don’t always trigger products/update webhook.
- Even when products/update fires, the webhook payload doesn’t include translation data
- We have also tried to use productFeeds webhook as suggested on another forum thread here, but we don’t receive this webhook on product update translations.
Questions:
- Is there an official or recommended way to detect product translation updates?
- Are there any plans to introduce a webhook or signal specifically for translation changes?
- How are other apps handling this efficiently without heavy polling?
Any guidance, best practices, or confirmation would be really helpful.
Hi @ShivaPushOwl! I had a look into this and it seems the Product Feeds API is the right approach here, and it should fire for translation updates. The contextual product feeds docs explicitly list “Product translations are updated” as a trigger for PRODUCT_FEEDS_INCREMENTAL_SYNC.
A few things to check on your setup:
-
Did you create a ProductFeed for the specific locale/market you’re testing? You need to call productFeedCreate with the country and language you want to track. If you only created a feed for the primary context (no input args), it won’t track translations for other locales.
-
Are the products you’re testing published to your app’s sales channel? The feed only tracks products published to your app.
-
Do you have the read_product_listings scope?
If you’ve got all that set up and it’s still not firing, I’d be interested to see your productFeedCreate mutation and webhook subscription config. The incremental sync should trigger when translations change via Translate & Adapt or the API.
One thing to note is that the webhook payload won’t include the actual translation content - it just notifies you that something changed on that product for that locale/market context. You’d still need to query the translations via GraphQL after receiving the webhook.