Product Update
This tutorial explains how the Product Update process works for the Trendyol integration in the Marketplace Dashboard: which products are picked up, which requests are made to Omnitron and Trendyol (with example data), how the end-to-end process works, and how to read the error codes it produces.
What is Product Update?
Product Update keeps the content of products that are already successfully listed on Trendyol in sync with Omnitron — description, images, and attributes. On the Logs screen, this process appears under the flow name Product Update.
When Does It Run?
Controlled by the
send_products_updatedfeature flag in the channel settings. When active, it runs automatically every 5 minutes.It can also be triggered manually from the Dashboard screen — a dedicated Product Update option exists in the trigger area, separate from the Product Create (insert) trigger. Alternatively, use "Update Bulk Product Version Date" under Update by Uploading a File in the channel settings to force a specific product to be picked up.
Runs are not overlapped: if a previous run of this flow is still in progress when the next 5-minute mark is reached, the new run waits for the running one to finish before it starts.
Which Products Are Eligible?
A product is picked up for update only if it:
Is already listed on Trendyol (see Approval Is Required for a Real Success in Product Insert).
Has content (description, images, or attributes) that has changed in Omnitron since the last successful sync.
During enrichment the flow also requires the product to already have mapped attributes, a category, and a price record in Omnitron (its value isn't sent by this flow, only its presence is checked) — missing any of these stops the product with the matching error code (see below).
Fetching Changed Products from Omnitron
Products with pending content changes are fetched from Omnitron:
For each product returned, Omnitron is queried again to collect its current mapped attributes, attribute configs, category, and (for validation only) price — the same enrichment step used by Product Insert, minus stock.
Resolving Trendyol's Content ID
Unlike Product Insert, an update needs to tell Trendyol which existing listing to update. The flow first checks whether Trendyol's contentId is already kept on the product:
If it is, that value is reused directly.
If it isn't, Trendyol is queried for the product by barcode, and the returned
contentIdis stored on the product so future updates skip this lookup:
If Trendyol doesn't return a contentId for the barcode (e.g. the product was removed from the Trendyol panel), the product stops here with error code 2004.
Sending the Update to Trendyol
Once enriched, the product is converted into Trendyol's product schema and sent as a single request:
Where Each Field Comes From
contentId
Trendyol's existing content ID for this listing
— (see Resolving Trendyol's Content ID above; required)
title
Mapped attribute Title
product.name
stockCode
Mapped attribute StockCode
product.sku
productMainId
Mapped attribute RemoteBaseCode
The product's parent product's ID (if it's a variant); if there's no parent, the product's own ID
description
Mapped attribute Description
Empty string ""
dimensionalWeight
Mapped attribute DimensionWeight, then DimensionalWeight
1
currencyType
Mapped attribute CurrencyType
"TRY"
vatRate
Omnitron's tax rate, truncated to a whole number
— (required; the product stops earlier with 2004 if there's no price record at all)
images
The product's images in Omnitron
Only the first 8 are sent — any beyond that are not included
origin
Mapped attribute Menşei
Empty string ""
Trendyol matches the item to the existing listing by contentId, updates its content, and processes the request asynchronously, returning a batch ID exactly like Product Insert:
Delivery Duration Sync
For every product this flow processes, its ShippingLatency mapped attribute (the same one used at creation time — see Delivery Duration and Other Optional Fields in the Product Insert tutorial) is re-read from Omnitron and sent to Trendyol through a dedicated endpoint:
This runs as its own independent asynchronous batch — its own
batchRequestId, polled separately (about every 40 seconds) — apart from the main content-update batch above.It only fires for products this flow has already picked up under Which Products Are Eligible? — it is not an independently scheduled sync on its own. If a product's content hasn't changed, changing only its
ShippingLatencymapped attribute may not be enough on its own to bring the product into this flow.If a product has no
ShippingLatencyvalue mapped, it is simply skipped for this step — other products in the same batch are still processed.
Checking the Result
The batch result is checked periodically (about every 40 seconds) until Trendyol marks it as completed:
How the Process Works — Summary
Products with content changes are fetched from Omnitron.
Each product is enriched with its mapped attributes, attribute configs, category, and (for validation only) price.
Trendyol's
contentIdfor the product is resolved — reused from Omnitron if already known, otherwise fetched from Trendyol and stored.Required fields are validated; a product with missing data stops here with the relevant error code (see below).
Valid products are converted into Trendyol's content schema and sent as a single
PUTbatch request.The batch result is polled until Trendyol reports it as completed.
In parallel, each product's delivery duration is re-synced to Trendyol through a separate batch request — see Delivery Duration Sync.
The outcome of every product is written back and becomes visible on the Logs screen.
Monitoring
From the left menu, go to Trendyol > Marketplace Operations > Logs.
Filter by flow name Product Update.
Use the SKU or Execution ID filters to locate a specific product.
Error Codes and Explanations
2001
Mapping information did not come from Omnitron — the product has not been mapped through the Mapper.
2002
Attribute configuration information did not come from Omnitron.
2004
Either price information did not come from Omnitron, or Trendyol did not return a contentId for the product's barcode (the two cases share this code).
2005
Category information did not come from Omnitron.
2006
A required attribute or brand value cannot be empty.
2007
An error occurred while posting the product to Trendyol.
2008
The product was sent to Trendyol but came back with a failed result.
2009
The product did not come back with a result from Trendyol.
2015
An unexpected error occurred while preparing the data to be sent to Trendyol.
2016
An unexpected error occurred while checking the data returned from Trendyol.
Related Settings
Category Ids and Mapper — determine which categories and attributes products can be mapped to.
send_products_updatedfeature flag — enables/disables the automatic 5-minute run of this process.Failed Integration settings (
productkey) — control how long and how often failed products are retried.Price and stock have their own separate feature flags and Failed Integration keys (
send_updated_product_price/productprice,send_updated_product_stock/productstock) — not covered by this tutorial.
Last updated
Was this helpful?

