For the complete documentation index, see llms.txt. This page is also available as Markdown.

Product Insert

This tutorial explains how the Product Insert 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.

For channel-level setup (feature flags, category mapping, failed integration rules, etc.), see Trendyol Marketplace Setup Configurations tutorial.

What is Product Insert?

Product Insert sends products that exist in the Omnitron catalog but have not been successfully listed on Trendyol yet — either because they were never sent before, or because they were sent but are still waiting for Trendyol's approval. On the Logs screen, this process appears under the flow name Product Create.

When Does It Run?

  • Controlled by the send_products_inserted feature flag in the channel settings. When active, it runs automatically every 5 minutes.

  • It can also be triggered manually from the Dashboard screen. Manual triggering from the Dashboard only covers the create (insert) process — it does not trigger updates of already-listed products.

  • 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?

By default (unless the channel's only_valid_products setting is disabled), a product is picked up only if it has:

  • Stock greater than or equal to 0 or 1, depending on the send_products_with_stock_only channel setting (see below)

  • A Category assigned

  • A Price greater than 0

  • At least one Product Image

The stock threshold used above depends on the send_products_with_stock_only channel config:

  • If enabled, only products with stock ≥ 1 are picked up (productstock__stock__gte=1).

  • If disabled (default), products are picked up as long as they have a stock record at all, even if that stock is 0 (productstock__stock__gte=0).

Fetching Products from Omnitron

Eligible products are fetched from Omnitron's catalog with a request such as:

This whole set of extra filters (productstock__stock__gte, productcategory__category__isnull, productprice__price__gt, productimage__isnull) is only added to the request when the channel's only_valid_products setting is enabled (the default). If it's disabled, none of these filters are applied and the request only carries product_type, sort, limit, and page.

Example (simplified) response:

For each product returned, Omnitron is queried again to collect its mapped attributes, price, stock, category, and required attribute values — this combined data is what gets converted into the Trendyol payload in the next step.

Checking the Product's Current Status on Trendyol

Before deciding how to send a product, Trendyol is asked whether the product already exists there:

  • 404 → the product does not exist on Trendyol yet → it will be sent as a new product.

  • 200, "approved": false → the product already exists on Trendyol but is still unapproved → it will be sent through the unapproved-update request instead of being created again.

Sending Products to Trendyol

Depending on the check above, products are grouped and sent to Trendyol in one of two batch requests:

New products:

Products that already exist but are still unapproved:

Example request body (same schema for both endpoints):

Where Each Field Comes From

Payload field
Source
If not mapped / not available

title

Mapped attribute Title

product.name

barcode

Mapped attribute RemoteId

product.sku

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

categoryId

The category mapped to this product via the Mapper

— (required; the product stops earlier with 2005 if missing)

description

Mapped attribute Description

Empty string ""

dimensionalWeight

Mapped attribute DimensionWeight, then DimensionalWeight

1

currencyType

Mapped attribute CurrencyType

"TRY"

quantity

—

Always 0 (see hint above)

listPrice

Omnitron's retail price for the product

—

salePrice

Omnitron's sale price for the product

—

vatRate

Omnitron's tax rate, converted to a whole number

0

images

The product's images in Omnitron

Only the first 8 are sent — any beyond that are not included

brandId and origin are also part of the payload, but they aren't a simple mapped-attribute-or-fallback lookup like the fields above (brand resolution and country-of-origin mapping use separate lookups) — not detailed in this table.

Trendyol processes this request asynchronously and immediately returns a batch ID:

On the Logs screen, this is reflected in the requestData field: if the product was sent before and is still unapproved, it appears under unapproved_items; if it is being sent for the first time, it appears under insert_items.

Delivery Duration and Other Optional Fields

Four extra fields are only included in the create payload if the product has the matching mapped attribute set in Omnitron (via the Mapper) — if a mapped attribute is empty, its field is left out of the payload entirely and Trendyol falls back to its own default for that product/category:

Omnitron mapped attribute
Payload field
Notes

ShippingLatency

deliveryOption.deliveryDuration

Sent as a whole number (e.g. number of days).

CargoCompanyId

cargoCompanyId

Sent as a number.

ReturningAddressid

returningAddressId

ShipmentAddressId

shipmentAddressId

deliveryDuration is nested inside a deliveryOption object ("deliveryOption": {"deliveryDuration": 3}) — it is not a flat top-level field.

Checking the Result

The batch result is checked periodically (about every 40 seconds) until Trendyol marks it as completed:

How the Process Works — Summary

  1. Eligible products are fetched from Omnitron.

  2. Each product is enriched with its price, stock, category, mapped attributes, required attribute values, and its current status on Trendyol.

  3. Required fields are validated; a product with missing data stops here with the relevant error code (see below).

  4. Valid products are converted into Trendyol's product schema and split into new vs. unapproved-update groups (delivery duration, cargo company, and address fields are added here if mapped — see Delivery Duration and Other Optional Fields).

  5. Each group is sent to Trendyol as a batch request.

  6. The batch result is polled until Trendyol reports it as completed.

  7. For accepted barcodes, Trendyol's content ID is fetched and stored.

  8. The outcome of every product is written back and becomes visible on the Logs screen.

Approval Is Required for a Real Success

  • Products that are accepted by Trendyol's batch request move into Trendyol's approval stage — they are not yet approved.

  • Within this flow, only a product that is already approved on Trendyol is logged as success. A product that was accepted and moved into the approval stage is still logged as fail here, with error code 2026 ("waiting for marketplace approval"), until it actually gets approved.

  • Products in the approval stage are not individually re-checked one by one. Instead, the Get Listing Products flow periodically pulls the products Trendyol has approved within the last 2 weeks and matches them against the corresponding products in Omnitron. Depending on Trendyol's review time, a product's approval is typically reflected this way within 4 to 48 hours after it was sent.

Monitoring

  1. From the left menu, go to Trendyol > Marketplace Operations > Logs.

  2. Filter by flow name Product Create.

  3. Use the SKU or Execution ID filters to locate a specific product.

Seeing "not found" as the error message? This is a generic fallback message shown when Trendyol's result for that product could not be matched. If the product was actually rejected by Trendyol directly, click the ResponseData box on that log row to see Trendyol's raw response — it contains Trendyol's own error text, which shows the real reason the product was rejected (e.g. an invalid attribute value, a category mismatch, etc.).

Error Codes and Explanations

Code
Meaning

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.

2003

Stock information did not come from Omnitron.

2004

Price information did not come from Omnitron.

2005

Category information did not come from Omnitron.

2006

A required attribute 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.

2014

An error occurred while fetching product data from Omnitron.

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.

2017

An error occurred while moving the product records into processing.

2026

The product has passed Trendyol's approval process and is waiting for marketplace approval — see Approval Is Required for a Real Success above.

Products that keep failing are retried according to the channel's Failed Integration settings. If a product stops being retried, it needs to be resent manually via the Update by Uploading Files option in the channel settings.

  • Category Ids and Mapper — determine which categories and attributes products can be mapped to.

  • send_products_inserted feature flag — enables/disables the automatic 5-minute run of this process.

  • Failed Integration settings — control how long and how often failed products are retried.

Last updated

Was this helpful?