# Trendyol Marketplace Setup Configurations

## <mark style="color:red;">1. Deployment of the Marketplace Dashboard Application on ACC</mark> <a href="#g0nvdj1s2ipe" id="g0nvdj1s2ipe"></a>

The deployment of the Marketplace Dashboard application on ACC is necessary. To log in to your ACC account, access [https://console.akinoncloud.com](https://console.akinoncloud.com/) with your username and password.

Click on **App Store** from the navigation menu on the left. Locate Trendyol and initiate the deployment process by selecting your relevant project.

![](https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-5ef1bedc3af10bb00a1f276a504c569722110d6a%2F3%20\(2\).png?alt=media)

Once the deployment process is complete, click on **My Applications** from the left menu. Select the relevant application to navigate to the application page. Complete the necessary build and deployment processes. Upon completing these processes, the Tendyol application will become visible in the left menu of Omnitron.

After the deployment, databases and tables will be created in the backend.

![](https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-ce4aa58f643e73e4bc2595e4e5f096aff75636c1%2F4%20\(2\).png?alt=media)

After successful setup, Schema Update flow runs automatically to deploy default channel settings.

## <mark style="color:red;">2. Defining Sales Channels</mark> <a href="#w2q4r1yypq98" id="w2q4r1yypq98"></a>

After the deployment process of the application is completed in ACC, the sales channel will be automatically created in Omnitron. It is necessary to fill in the fields within this sales channel.

Access the settings for the sales channel via **Omnitron > Settings > Sales Channels**.

<table data-header-hidden><thead><tr><th width="135.3125"></th><th width="242.99609375"></th><th width="87.375"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Field Name</strong></td><td><strong>Description</strong></td><td><strong>Example</strong></td><td><strong>Information</strong></td><td><strong>Required</strong></td></tr><tr><td><strong>Channel Name</strong></td><td>Sales channel name</td><td>Trendyol</td><td>Automatically generated</td><td>Required (should not be changed)</td></tr><tr><td><strong>Catalog Name</strong></td><td>Catalog name created for Trendyol *Can vary from brand to brand</td><td>Trendyol</td><td>Automatically generated</td><td>Required (should not be changed)</td></tr><tr><td><strong>Channel Type</strong></td><td>Channel type *All sales channel types come as a dropdown in Omnitron</td><td>Sales Channel</td><td>Automatically generated</td><td>Required (should not be changed)</td></tr><tr><td><strong>Status</strong></td><td>No processes will run until the sales channel is activated</td><td>Passive</td><td>Predefined as inactive (should be activated)</td><td>Required</td></tr><tr><td><strong>Schema Type</strong></td><td><p>The field where information desired to be kept in the sales channel settings is defined. The information provided here and the necessary information for the operation of this sales channel are retrieved from Omnitron.</p><p>The schema containing the minimum requirements for the operation of the sales channel is automatically created. Additional information you want to keep can be added here (such as information needed for the ERP integration of the sales channel). The key-value information that will be included in Channel Config is provided here. In the "Value" section of the dictionary, you will find key, label, required, and data_type.</p><p>key -> Information on which key will be used to access the data through channel config.</p><p>label -> Information on how it will appear in the interface form in Omnitron Sales Channel settings.</p><p>required -> Information on whether the respective value is mandatory (true/false).</p><p>data_type -> Information on the data type of the respective value (list, text, integer, bool, json).</p></td><td><p>{</p><p>"store_code": {</p><p>"key": "StoreCode",</p><p>"label": "Mağaza Kodu",</p><p>"required": false,</p><p>"data_type": "text"</p><p>},</p><p>"base_url": {</p><p>"key": "base_url",</p><p>"label": "Base Url",</p><p>"required": true,</p><p>"data_type": "text"</p><p>}</p><p>}</p></td><td>Default information has been automatically entered.</td><td>Required (Can be added, but existing fields should not be changed)</td></tr><tr><td><strong>Base Url</strong></td><td>Trendyol's API URL</td><td>https://api.trendyol.com/sapigw</td><td>Automatically filled in by default</td><td>Required</td></tr><tr><td><strong>Sales Url</strong></td><td>Trendyol’s site URL</td><td>https://www.trendyol.com/</td><td>Automatically filled in by default</td><td>Required</td></tr><tr><td><strong>Username</strong></td><td>Seller's designated username information for Trendyol API, provided by Trendyol</td><td>******************</td><td>Obtained by contacting Trendyol (API KEY information in Trendyol Seller Panel)</td><td>Required</td></tr><tr><td><strong>Password</strong></td><td>Seller's designated password information for Trendyol API, provided by Trendyol</td><td>******************</td><td>Obtained by contacting Trendyol (API SECRET KEY information in Trendyol Seller Panel)</td><td>Required</td></tr><tr><td><strong>Supplier ID</strong></td><td>Seller's designated supplier ID information, provided by Trendyol</td><td>144</td><td>Obtained by contacting Trendyol (supplierid information in Trendyol Seller Panel)</td><td>Required</td></tr><tr><td><strong>Category Ids</strong></td><td>Main category IDs to be used via the https://api.trendyol.com/sapigw/product-categories endpoint by Trendyol</td><td>368, 522, 1070</td><td>It is left blank by default. (Obtained from Trendyol)</td><td>Required</td></tr><tr><td><strong>Feature Flags</strong></td><td>Enables the activation or deactivation of running processes. The crucial point to note here is that even if the respective process is not functioning, it must be added here with a value of false. (Detailed information about feature flags is provided in the Feature Flags section under Title 9 below.)</td><td><p>{</p><p>"get_brands": true,</p><p>"get_orders": true,</p><p>"get_cancel_orders": true,</p><p>"get_refund_orders": false,</p><p>"send_invoice_link": true,</p><p>"send_delete_products": true</p><p>}</p></td><td><p>All predefined flags have been set to false.</p><p>.</p></td><td>Required</td></tr><tr><td><strong>Brands</strong></td><td>The brand name information for the products sold by the brand on Trendyol is entered here. (This information is obtained from Trendyol.)</td><td>Akinon</td><td>It is left blank by default.</td><td>v</td></tr><tr><td><strong>Cargo Company Id</strong></td><td>The cargo company ID on the Omnitron side, used to determine the selected shipping information when transferring orders from Trendyol to Omnitron. If this value is empty, Omnitron will default to selecting the first-found cargo company based on predefined mapping made according to the cargo company in the "Cargo Company Settings" section in Omnitron, based on the shipping information received from Trendyol. If this cargo company is not added in the cargo company settings, orders cannot be written.</td><td>104</td><td>It is left blank by default.</td><td>Optional</td></tr><tr><td><strong>Return Cargo Company Id</strong></td><td>Configuration for the cargo company to be used in easy returns.</td><td>1</td><td>Default value: <code>0</code></td><td>Optional</td></tr><tr><td><strong>Use Neighborhood</strong></td><td>Whether the neighborhood information in the address data will be used during order creation is determined by this information. If it is active, when creating an order, the neighborhood information in the shipping and billing addresses on the order is processed in the step of creating the address for the relevant order in Omnitron.</td><td>Passive</td><td>Predefined as passive. If the neighborhood information is mandatory in the company's system, this field must be activated.</td><td>Optional</td></tr><tr><td><strong>Default Reason Id</strong></td><td>If the reason id in the return data retrieved from Trendyol is not included in the Refund Reason Mapping, the refund data is retrieved and written to Omnitron with the entered Omnitron refund reason id information. (The id information can be obtained with {omniton_url}/api/v1/channel/{channel_id}/cancellation_reasons/?cancellation_type=refund&#x26;is_active=true)</td><td>5</td><td>It is left blank by default.</td><td>Required</td></tr><tr><td><strong>Refund Reason Mapping</strong></td><td>Mapping the refund reason information on Trendyol with the refund reason information in Omnitron for the return process. The key should be the reason id on Trendyol (can be checked at https://developers.trendyol.com/docs/marketplace/iade-entegrasyonu/iade-sebepleri), and the value should be the reason id in Omnitron ({omniton_url}/api/v1/channel/{channel_id}/cancellation_reasons/?cancellation_type=refund&#x26;is_active=true to get id information).</td><td><p>{</p><p>“501”:”7” ,</p><p>“551”:”5”</p><p>}</p></td><td>It is left blank by default. When left blank, the refund reasons are written with the "Default Reason Id" information in the step above when return information is retrieved from Trendyol.</td><td>Optional</td></tr><tr><td><strong>Refund Start Date</strong></td><td>The initial start date information when returns will begin to be retrieved. The format should be in epoch timestamp</td><td>1696974480</td><td>It is left blank by default.</td><td>Optional</td></tr><tr><td><strong>Orders Refundable Days</strong></td><td>The information about how many days after the order creation date the return can be made.</td><td>15</td><td>Set to 15 days by default.</td><td>Optional. When left blank, the default is 15 days.</td></tr><tr><td><strong>Channel Store Code</strong></td><td>Store code information to be sent to ERP.</td><td>4042</td><td>It is left blank by default.</td><td>Optional</td></tr><tr><td><strong>Failed Integration</strong></td><td>Records with errors in the integration process are penalized and held for a certain period. (Detailed information is given in the 3rd heading in the Failed Integration Setting section below.)</td><td><p>{</p><p>"order": {</p><p>"RETRY_INTERVAL": 28800,</p><p>"EXPIRATION_DATE": 57601,</p><p>"MAX_RETRY_COUNT": 3</p><p>},</p><p>"DEFAULT": {</p><p>"RETRY_INTERVAL": 28800,</p><p>"EXPIRATION_DATE": 57601,</p><p>"MAX_RETRY_COUNT": 2</p><p>},</p><p>"product": {</p><p>"RETRY_INTERVAL": 28800,</p><p>"EXPIRATION_DATE": 57601,</p><p>"MAX_RETRY_COUNT": 2</p><p>},</p><p>"productprice": {</p><p>"RETRY_INTERVAL": 28800,</p><p>"EXPIRATION_DATE": 57601,</p><p>"MAX_RETRY_COUNT": 2</p><p>},</p><p>"productstock": {</p><p>"RETRY_INTERVAL": 28800,</p><p>"EXPIRATION_DATE": 57601,</p><p>"MAX_RETRY_COUNT": 2</p><p>},</p><p>"sent_to_remote": {</p><p>"EXPIRATION_HOUR": 6</p><p>}</p><p>}</p></td><td>Automatically filled in by default.</td><td>Required</td></tr><tr><td><strong>ERP Code</strong></td><td>Sales channel code defined for Trendyol in the brand.</td><td>TY</td><td>It is left blank by default.</td><td>Optional</td></tr><tr><td><strong>Send Shipping Info</strong></td><td>The field is related to whether Trendyol or the brand will manage the shipping process.</td><td>Passive</td><td>Predefined as passive. (If passive or not selected at all, Trendyol manages the shipping process.. If active, the brand manages the shipping process itself.)</td><td>Optional</td></tr><tr><td><strong>Get Discount Amount</strong></td><td>Information about using discount data when fetching the order data. If the value is inactive or not selected, the discount information is not used. If it is active, the discount information is used.</td><td>Inactive</td><td>The default is set to inactive.</td><td>Optional</td></tr><tr><td><strong>Order Number Format</strong></td><td>When fetching the order data from Trendyol to Omnitron, the order number is adjusted according to this format. If this value is left empty, the order number will be written to Omnitron by default in the format of “{orderNumber}-{id}”</td><td>TRD-{orderNumber}-{id}</td><td>The default is left blank.</td><td>Optional</td></tr><tr><td><strong>Cancellation Reason ID</strong></td><td>Information about which reason ID will be used when fetching canceled orders from Trendyol to Omnitron. (The ID can be retrieved using the endpoint: {omnitron_url}/api/v1/channel/{channel_id}/cancellation_reasons/?cancellation_type=cancel&#x26;is_active=true)</td><td>4</td><td>The default is left blank.</td><td>Required</td></tr><tr><td><strong>Unsupplied Reason ID</strong></td><td>Information about the reason ID to be assigned for packages with the status “Unsupplied” when fetching canceled orders from Trendyol. (The ID can be retrieved using the endpoint: {omnitron_url}/api/v1/channel/{channel_id}/cancellation_reasons/?cancellation_type=cancel&#x26;is_active=true)</td><td>4</td><td>The default is left blank.</td><td>Optional (If this value is not provided, the “Cancellation Reason Id” from the previous item will be used.)</td></tr><tr><td><strong>Unpacked Reason ID</strong></td><td>Information about the reason ID to be assigned for packages with the status “Unpacked” when fetching canceled orders from Trendyol. (The ID can be retrieved using the endpoint: {omnitron_url}/api/v1/channel/{channel_id}/cancellation_reasons/?cancellation_type=cancel&#x26;is_active=true)</td><td>3</td><td>The default is left blank.</td><td>Optional (If this value is not provided, the “Cancellation Reason Id” from the previous item will be used.)</td></tr><tr><td><strong>Send Cancel Reason ID</strong></td><td>It is the ID defined on the Trendyol side that will be used when sending the cancellation information created in Omnitron (not coming from Trendyol) back to Trendyol. (A value must be entered from the reasonId column in the following link:<a href="https://developers.trendyol.com/docs/marketplace/siparis-entegrasyonu/tedarik-edememe-bildirimi"> https://developers.trendyol.com/docs/marketplace/siparis-entegrasyonu/tedarik-edememe-bildirimi</a>)</td><td>506</td><td>The default is left blank.</td><td>Optional</td></tr><tr><td><strong>Attribute Set Strategy</strong></td><td>A strategy setting that determines which feature set the products belong to.</td><td>CategoryNode</td><td>The default is filled in.</td><td>Required (Should not be changed)</td></tr><tr><td><strong>Order Start Date</strong></td><td>The start date of the order integration. The format should be dd-MM-yyyy.</td><td>30-07-2023</td><td>The default is left blank.</td><td>It should be filled in when order fetching begins</td></tr><tr><td><strong>Exclude Cargo Company IDs</strong></td><td>Cargo company IDs to be ignored when fetching orders are specified here. When an order arrives from Trendyol, the cargo company corresponding to the IDs defined here will be used, and the order data will be written to Omnitron with the information entered in the Cargo Company Id.</td><td><p>132</p><p>159</p></td><td>The default is left blank.</td><td>Optional</td></tr><tr><td><strong>Exclude Send Shipping Info</strong></td><td>The list of cargo IDs that the brand does not want to send to Trendyol. When order data is fetched from Trendyol, if the “Send Shipping Info” value is active and the cargo ID corresponding to the order’s shipping information is not in this list, the tracking number will be written as “null” to Omnitron.</td><td>104<br>125<br></td><td>The default is left blank.</td><td>Optional</td></tr><tr><td><strong>Use Channel ID In Address Mapping</strong></td><td>If the brand wishes, this field can be activated to perform address mapping operations on a channel basis. When this field is activated, the channel ID will be added before the address data in the mapping operations, and in search operations, the address will be queried using the sales channel filter with the channelId_address information.</td><td>Inactive</td><td>The default is left blank.</td><td>Optional</td></tr><tr><td><strong>Buffer Stock</strong></td><td>The value to be deducted from the product's current stock when sending stock information to Trendyol. If no value is entered, the product's current stock will be sent to Trendyol.</td><td>3</td><td>The default is left blank.</td><td>Optional</td></tr><tr><td><strong>Update Warehouse</strong></td><td>A boolean channel configuration that enables or disables the Update Warehouse logic inside the SendUpdateOrders flow. See section 11 "Update Warehouse" for details</td><td>Inactive</td><td>The default is false</td><td>Optional</td></tr><tr><td><strong>Update Warehouse ID</strong></td><td>In order to enable the updating of the warehouse id field on the Trendyol side, this field must first be activated. The update process is carried out by feeding data with the key. See section 11 "Update Warehouse" for details.<strong>update_warehouse_id</strong> in the <strong>extra_field</strong> section of the order data in Omnitron.</td><td>Inactive</td><td>It is left blank by default.</td><td>Optional</td></tr><tr><td><strong>Check Unpack On Attribute</strong></td><td>When this field is activated, order packages will be split only for products with the unPack value set to "YES" in their product attributes.</td><td>Inactive</td><td>Inactive</td><td>Optional</td></tr><tr><td><strong>Easy Return Enabled</strong></td><td>This field must be enabled to use the Easy Return feature.</td><td>Inactive</td><td>Inactive</td><td>Optional</td></tr><tr><td><strong>Alternative Delivery Enabled</strong></td><td>This field must be enabled to use the Alternative Delivery option. To use this option, it is mandatory to report the tracking number to Trendyol.</td><td>Inactive</td><td>Inactive</td><td>Optional</td></tr><tr><td><strong>Digital Product Attribute</strong></td><td>This field specifies the product attribute that will be checked during the order update step to determine whether the product is digital.</td><td>is_digital_product</td><td>The default is left blank.</td><td>Optional</td></tr></tbody></table>

### <mark style="color:red;">2.1 Flows that run automatically after channel settings are saved</mark> <a href="#postsetup" id="postsetup"></a>

When certain fields in the channel settings are saved or updated, a sequence of maintenance flows is automatically queued. These flows prepare the channel for correct product, brand and attribute operations. Manual triggering is NOT required (visible on the Monitoring / Logs screen).

**A. When Category Ids are added or changed** (the `Category Ids` field in the channel config):

1. **Category Node** – Fetches the full category tree for each newly added root category.
2. **Category Attributes** – Fetches attribute definitions belonging to the fetched categories.
3. **Default Attributes** – Creates / refreshes internal baseline attributes (e.g. `remote_id`, `title`) used during mapping and product send flows.
4. **Brands** – Refreshes brand data (runs if at least one brand name is present OR the `get_brands` feature flag is active).

All four flows are started automatically (The more category entries there are, the longer the Category Attributes process will take). Product mapping should ONLY begin after Category Node, Category Attributes, Default Attributes and Get Brands flows have completed successfully.

**B. When Brands field is updated** (a brand name is added / edited):

* **Brands** flow is queued automatically to synchronize brand definitions; it finishes usually within 60 minutes.

**Operational notes & quick checks:**

* No CSV or manual trigger is needed for the above maintenance flows.
* If one of the flows does not appear or ends in error, check Monitoring > Logs (filter by flow name). Re‑save the channel settings if necessary; if the issue persists contact support.
* Avoid re‑saving the channel repeatedly.

**Ready for next steps:** Proceed to Section 4 once the Category Node, Category Attributes, Default Attributes and Get Brands flows show success in Logs.

## <mark style="color:red;">3. Failed Integration Setting</mark> <a href="#id3ai0cixnys" id="id3ai0cixnys"></a>

Records that encounter errors in the integration process are temporarily put on hold (penalty). The values for `RETRY_INTERVAL` and `EXPIRATION_DATE` are durations expressed in seconds.

* `RETRY_INTERVAL`: Wait time (seconds) before the next retry attempt.
* `EXPIRATION_DATE`: Total duration (seconds) added to the first failure time. After this duration the resulting absolute timestamp (`expiration_date`) is passed, no further retries occur. This is a duration, not a stored absolute timestamp.
* `MAX_RETRY_COUNT`: Upper limit of total allowed attempts for a single failed record (including the first failed attempt). Condition check: `retry_count < MAX_RETRY_COUNT`.
* `sent_to_remote.EXPIRATION_HOUR`: In channel configuration (`FAILED_INTEGRATION.sent_to_remote.EXPIRATION_HOUR`), the maximum hour window during which the remote system (Trendyol) response is awaited. `BatchRequest` entries still in `sent_to_remote` or ongoing beyond this window are marked fail (see `finalize_sent_to_remote_batch_requests`).

`EXPIRATION_DATE` and `MAX_RETRY_COUNT` jointly restrict retry behavior:

* `MAX_RETRY_COUNT`: Stops retries once the limit is reached even if time remains.
* `EXPIRATION_DATE`: Stops retries once the time window has elapsed even if the count limit is not reached.

Effective retry condition: `(retry_count < MAX_RETRY_COUNT) AND (expiration_date is None OR current_time < expiration_date)`.

An integration is eligible for retry only if `retry_count < MAX_RETRY_COUNT` and (if set) current time is before `expiration_date`. Retries stop when either the maximum attempt count is reached or the end timestamp is passed.

**Adjusting values based on error volume:** For high error rate processes (e.g. frequently failing product or stock updates), use lower `RETRY_INTERVAL`, `MAX_RETRY_COUNT`, and `EXPIRATION_DATE` so faulty records do not remain long and block others. For low error rates, increase these to allow more retry chances. Optimize according to operational needs and error analysis. In critical flows, as error volume rises, aggressively reduce retry duration and count to preserve stability.

Changes to these values apply to subsequently created `FailedIntegration` records. Example: if a SKU stock update fell into penalty with a 3‑hour interval and the interval is changed to 2 hours, the existing record still retries after 3 hours; if it fails again the new record uses the 2‑hour interval.

Default Format:

```json
{
  "order":
  {
    "RETRY_INTERVAL": 28800,
    "EXPIRATION_DATE": 57601,
    "MAX_RETRY_COUNT": 3
  },
  "DEFAULT":
  {
    "RETRY_INTERVAL": 28800,
    "EXPIRATION_DATE": 57601,
    "MAX_RETRY_COUNT": 3
  },
  "product":
  {
    "RETRY_INTERVAL": 28800,
    "EXPIRATION_DATE": 57601,
    "MAX_RETRY_COUNT": 3
  },
  "productprice":
  {
    "RETRY_INTERVAL": 28800,
    "EXPIRATION_DATE": 57601,
    "MAX_RETRY_COUNT": 3
  },
  "productstock":
  {
    "RETRY_INTERVAL": 28800,
    "EXPIRATION_DATE": 57601,
    "MAX_RETRY_COUNT": 3
  },
  "sent_to_remote":
  {
    "EXPIRATION_HOUR": 1
  }
}
```

Example for product settings when product count is between 100–10,000:

```
  ...
  "product":
  {
    "RETRY_INTERVAL": 28800,
    "EXPIRATION_DATE": 57601,
    "MAX_RETRY_COUNT": 2
  }
  ...
```

If product count is between 100,000–1,000,000:

```
  ...
  "product":
  {
    "RETRY_INTERVAL": 57600,
    "EXPIRATION_DATE": 105200,
    "MAX_RETRY_COUNT": 4
  }
  ...
```

**For example:** If a product hits an error while sending to Trendyol (missing stock, price data, incomplete mapping, not found, or no response from Trendyol within the `sent_to_remote` time), the record is penalized under the current failed integration settings and will not be resent during the penalty window. Additionally, `BatchRequest` entries awaiting remote response that exceed `sent_to_remote.EXPIRATION_HOUR` without a reply are automatically marked fail. This prevents errored or unresponsive operations from blocking healthy records.

## <mark style="color:red;">4. Creation of Category Tree and Development of Attributes for Sales Channel</mark> <a href="#id-96yl8u5xvz73" id="id-96yl8u5xvz73"></a>

The category tree is pulled based on the Category Ids added within the sales channel.

After the category tree is pulled into Omnitron, it can be viewed under the Category Management section when Trendyol is selected as the Sales Channel.

<figure><img src="https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-455fb1ec118199e1157f7a7d93bca6ec665ccb3e%2F5%20(2).png?alt=media" alt=""><figcaption></figcaption></figure>

After this process is successfully completed (can be monitored from the logs), the flow that retrieves the attributes will run. Once the attribute-related processes are completed (if the Brands flow has been successfully completed), the next steps should be followed.

## <mark style="color:red;">5. Marketplace Mapping Implementation</mark> <a href="#pk7kme442juw" id="pk7kme442juw"></a>

Once the category tree pull step is completed, the user must perform category matching through the Mapper.

The Akinon Mapper function within Omnitron allows users to configure and manage the attribute values of the products they want to sell on marketplace sales channels. Additionally, it provides the opportunity to check whether the attributes and attribute values are correct before the products are listed for sale.

<figure><img src="https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-aaf60089e8edc47e0f5eded1dafcb13fe23c1904%2F6%20(2).png?alt=media" alt=""><figcaption></figcaption></figure>

Detailed documentation regarding the Mapper and the definitions to be made in the Mapper can be found in [Mapper](https://app.gitbook.com/s/IbwGN7KwvYi0iLbjtnXz/omnitron/sales-channels/sales-channel-settings/how-to-manage-marketplace-mapping-in-omnitron) tutorial.

## <mark style="color:red;">6. Adding Products to the Category Tree</mark> <a href="#lfl0c6bbho8m" id="lfl0c6bbho8m"></a>

Products need to be added to the relevant category tree on Trendyol. Each product should be added to only one category. Otherwise, an error will be encountered by Trendyol during the submission process.

<figure><img src="https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-27953fd773166fda6965f45e11661b305111005f%2F7%20(2).png?alt=media" alt=""><figcaption></figcaption></figure>

## <mark style="color:red;">7. Defining Screens</mark> <a href="#psly9pcwf2cf" id="psly9pcwf2cf"></a>

When the Trendyol marketplace application is installed on the relevant brand's Omnitron, it will appear as Trendyol in the left menu.

![](https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-ce4aa58f643e73e4bc2595e4e5f096aff75636c1%2F4%20\(2\).png?alt=media)

### <mark style="color:red;">7.1. Dashboard Screen</mark> <a href="#od5m8tzd9zqw" id="od5m8tzd9zqw"></a>

Dashboard data related to the Trendyol marketplace application is located on this screen.

![](https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-36ee4f999df5d6d0b4a75076b822d2409fcc2a7d%2F8%20\(1\).png?alt=media)

* **TOTAL SKUs IN THE CATALOG**\
  Number of SKUs with product type "simple" and active status added to the relevant catalog
* **NUMBER OF SKUs ON SALE**\
  Number of SKUs sent to the marketplace and currently on sale
* **TOTAL SKU DIFFERENCE**\
  It refers to the number of SKUs that are included in the catalog but not available for sale on the marketplace. In this section, a comparison is made between the products that are sellable in Omnitron and the products listed for sale on the marketplace. Specifically, products in Omnitron are considered if they have a price, stock greater than zero, a category, a product image, and are included in the catalog.
* **NUMBER OF SKUs WITH PRICE DIFFERENCES THAT WERE FIXED**\
  Number of SKUs with price differences between Omnitron and the marketplace\
  If differences were found, an additional task was executed to correct them and the discrepancies were resolved.
* **TOTAL STOCK COUNT IN THE CATALOG**\
  Total stock count of all products in the marketplace catalog
* **TOTAL STOCK COUNT**\
  Total stock count of products currently on sale in the marketplace
* **TOTAL STOCK DIFFERENCE**\
  Stock of products in the catalog that are not on sale in the marketplace
* **NUMBER OF SKUs WITH STOCK DIFFERENCES**\
  Number of SKUs with stock differences between Omnitron and the marketplace\
  If differences were found, an additional task was executed to correct them and the discrepancies were resolved.

### <mark style="color:red;">7.2. Monitoring Screen</mark> <a href="#mytvecukco2e" id="mytvecukco2e"></a>

The screen where logs and reports are located.

![](https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-90749daf32be878b090b5597a6a0c4165a0552f6%2F9%20\(1\).png?alt=media)

#### **7.2.1. Log Screen** <a href="#m8f4xxwonome" id="m8f4xxwonome"></a>

The logs of the flows are located on this screen.

<figure><img src="https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-e86b291730933292aff7050fb71ad6d43f5ab40e%2F11%20(2).png?alt=media" alt=""><figcaption></figcaption></figure>

* **Brands**\
  Flow that enables brands entered in the channel settings to be pulled into Omnitron.
* **Default Attributes**\
  Flow that prepares predefined fields (remote\_id, title, etc.) for the mapping process during product sending.
* **Category Node**\
  Flow that pulls the entire category tree structure of the main categories entered in the channel settings into Omnitron.
* **Category Attributes**\
  Flow that pulls the category attributes entered in the channel settings into Omnitron.
* **Product Create**\
  Flow that sends products created in Omnitron to the marketplace.
* **Product Update**\
  Flow that sends updated products in Omnitron to the marketplace.
* **Product Delete**\
  Flow that removes products deleted from the Omnitron catalog from sale in the marketplace.
* **Stock**\
  Flow that sends updated stock information of products whose stock has been updated in Omnitron to the marketplace.
* **Price**\
  Flow that sends updated price information of products whose prices have been updated in Omnitron to the marketplace.
* **Order Create**\
  Flow that pulls orders from the marketplace into Omnitron.
* **Order Update**\
  Flow that updates the status, invoice, or shipping tracking number of orders in the marketplace when they are updated in Omnitron.
* **Order Refund Approve**\
  Flow that sends approved refunds in Omnitron to the marketplace.
* **Reject Refund**\
  Flow that sends rejected refunds in Omnitron to the marketplace.
* **Order Cancel**\
  Flow that updates the status of orders cancelled in the marketplace in Omnitron.
* **Order Refund**\
  Flow that updates the status of fully refunded orders in the marketplace in Omnitron.
* **Order Items**\
  Flow that updates the status of orders in Omnitron when their status changes in the marketplace.
* **Send Cancel Order Items**\
  Flow that updates the status of cancelled orders in Omnitron to the marketplace.
* **Split Packages**\
  Flow that sends order splitting requests coming from Omnitron or another OMS system to the marketplace.
* **Compare Attributes**\
  Flow that updates the status of category attributes in Omnitron when they change in the marketplace.

#### **7.2.2. Reports Screen** <a href="#id-53ysnamiodmn" id="id-53ysnamiodmn"></a>

A reporting screen for products that are added to the catalog in Omnitron but not listed for sale on Trendyol, where the price and stock information on Trendyol do not match the data in Omnitron.

![](https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-5761d1566159177f31654aaf74c2dcadd80b01e0%2F11%20\(1\).png?alt=media)

### <mark style="color:red;">7.3. Alarm Screen</mark> <a href="#h44pmqn338fe" id="h44pmqn338fe"></a>

**Creating Alarms and Notifications**

The Marketplace Dashboard is an advanced automation platform designed to streamline e-commerce integrations. Alarms and notifications play a critical role in informing users about integration errors, data delays, and successful completions. Thanks to real-time alerts, users can quickly identify and resolve issues related to integrations, ensuring seamless e-commerce operations. This ultimately contributes to delivering the best shopping experience to end customers.

#### **Benefits of Alarms and Notifications**

* **Real-Time Issue Detection:**\
  Alarms immediately detect integration errors and ensure accurate data flow between systems.
* **Proactive Issue Resolution:**\
  Alarms allow timely intervention in integration-related issues, minimizing downtime and operational impact.
* **Enhanced Data Integrity:**\
  By preventing data delays or interruptions, alarms support consistent and accurate data processing workflows.
* **Optimized Customer Experience:**\
  Fast resolution of integration issues ensures that order, stock, and product data remain up to date, delivering a seamless shopping experience to customers.
* **Improved Operational Efficiency:**\
  With alarms, users are informed about critical events and can focus on strategic tasks.
* **Data-Driven Decision Making:**\
  Alarms provide valuable insights to help optimize integration processes.
* **Reduced Downtime:**\
  Early detection of problems minimizes system outages and prevents revenue loss.
* **Customizable Alerts:**\
  The Akinon Marketplace Dashboard offers flexible alarm customization options to suit business needs.
* **Seamless Cross-Platform Communication:**\
  Alarms facilitate communication and synchronization between different e-commerce systems.

With alarms on the Akinon Marketplace Dashboard, users can monitor and manage their e-commerce integrations effectively, ensuring a reliable, efficient, and customer-centric shopping experience.

#### **Steps to Create an Alarm and Notification**

**Step 1: Access Alarm and Notification Settings**\
The Marketplace Dashboard is not a standalone product with a separate URL. To access it, go to the left-side menu in Omnitron, click on **Sales Channels**, then select ***Marketplace***, and finally click on **Marketplace Operations** from the dropdown menu.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfkGQLSOnz6NA77MUlNf-Omqicq-V2aiNbDsPTStKkHKwS0HxDaHSHd2afoHuHdG60_Bkzl4THKuk-ErjqjiL2IVlj6-zBQRNuLc-F48hrzZSqsGGbn6XDVzdW2iiowCy16tKKrew?key=m-Tw46ZnPyCzHAM6RxImGw" alt=""><figcaption></figcaption></figure>

**Step 2: Create a New Alarm and Notification Rule**\
On the **Alarms** screen, click the **+ New Alarm** button located at the top right corner.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfecDg5WAGoXfr9CxQx349NjAGovCCs-YvanJg2hYsusH3rVZ3VNzeLMeiaDWCUyDl1gPe_Yl8q6em_JUY10z4K7PUV1rKR3efbqE-eiZYc6duNYxoMitqag0JN-ZKBkZTJ3n6HVw?key=m-Tw46ZnPyCzHAM6RxImGw" alt=""><figcaption></figcaption></figure>

On the settings page that opens, select a **Flow Name** from the dropdown list.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc4q3w9Qm-Vmd2ktVcdbuoyx3NbUY7jaLVSmeThgJJHgZPmFYIzKxt69Mp6LSlBVMS6YcH_Wc1UiMH9B55j45zgNCLpIAuLpnNUQYuXVoGkDr9QowrUHYTumW89wfwkFcpP90nY?key=m-Tw46ZnPyCzHAM6RxImGw" alt=""><figcaption></figcaption></figure>

Configure the alarm conditions based on specific criteria such as **error rate**, **flow duration**, **time interval**, and **metric value**.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcS2SAtFU-B6kEzPAML7s_noI_iCgIdRW3MRw0o6amnncfqsPkgaFsOMBuN3wdVexLXBPlG39ybCjeU8UKCTEYKnVUqX59EhSshKD7GXxe8OEiunCTNg2pQiBZZ5obTzyP_ZuRiPQ?key=m-Tw46ZnPyCzHAM6RxImGw" alt=""><figcaption></figcaption></figure>

Select a **notification channel** and add the **email addresses** of the individuals or teams who should receive the notifications. (There is no limit to the number of email addresses that can be added.)

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeM4bA6ppire2wDyl97_-bbufGpkxTNbUhov734KAcOkiUZiCeb4wU4f6uzxGusvJ7JB3U9YoJrxy7A5dWHgsuPFpOX2WjmO1yP_kgwmj0LkjFBD2DtZuuTk56C_CwafwH45WxH?key=m-Tw46ZnPyCzHAM6RxImGw" alt=""><figcaption></figcaption></figure>

**Step 3:**\
**Saving the Alarm and Notification Rule**

Once the alarm rule is successfully configured, click the **“Save”** button to finalize and activate the alarm.

Thanks to the power of alarms and notifications in the Akinon Marketplace Dashboard, e-commerce integrations become significantly more efficient. Real-time monitoring allows immediate intervention in case of issues, ensuring data accuracy and delivering a seamless customer experience. Customizable alerts enable teams to stay informed and make data-driven decisions effectively.

**Error Rate:**\
The alarm is triggered if the number of errors within the defined time range exceeds the specified threshold.

**Average Flow Time:**\
The alarm is triggered if the average processing time of the flow exceeds the defined duration within the selected time range.

### <mark style="color:red;">7.4. Reject Refund Screen</mark> <a href="#id-6krolwwixv9" id="id-6krolwwixv9"></a>

Return requests pulled from the marketplace via the **RefundOrder** flow are created in Omnitron with the status **OPEN** and appear on specific screens for manual review and potential rejection.

If the requests reviewed on these screens are rejected, the **RejectRefund** flow sends the rejection reason, description, and any attached photos back to the marketplace.

**Refund rejections are processed through this screen.**

<figure><img src="https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-f127fcee79019daf4a6ee2aa4bbaddaef18ae8ab%2F14%20(1).png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-9775ccf6b379d5910b883e38b735805d669f19a0%2F15.png?alt=media" alt=""><figcaption></figcaption></figure>

## <mark style="color:red;">8.Steps to Follow for Errors</mark> <a href="#ra5f9msdhxfr" id="ra5f9msdhxfr"></a>

The following steps should be followed for errors encountered in the logs:

* “Stock data not found” error indicates that the product's stock data is missing. The stock data should be added for the relevant product.
* “Price data not found” error indicates that the product's price data is missing. The price data should be added for the relevant product.
* “Barcode not found in your product list” and “Product not found for price and stock update” errors may occur if the product was previously successfully sent to Trendyol but has been removed from the Trendyol panel. The product’s integration action information should be deleted, and the product should be sent again to Trendyol.
* “You need to contact your category responsible for the locked product” error indicates that the product is locked. The brand needs to unlock it from the panel.
* “Unreported order of ERP can not be canceled” error indicates that the order has not yet been sent to ERP. To proceed with the cancellation, the order needs to be sent to ERP.
* “Address is not valid. channel: 137 code: 137\_Merkez model: Township city id: .., city name: …” error indicates that the Township mapping in the address data of the order needs to be done.
* The **"Some products not found. Product remote ids: xxx"** error occurs in the **order flow** because the related product does not have a **product integration action** record. This product may have been modified through the **Trendyol panel**. First, check if the product exists in the **catalog**, then review the logs in the **Product Create** flow.
* Product triggering from the **Dashboard** is only for the **create** process. If a product update needs to be triggered, it must be done via CSV in the **"Update Bulk Product Version Date"** section under **"Update by Uploading a File"** in the channel settings (top right corner). For triggering processes, you can refer to this document:\
  [**Flow Trigger Document**](https://docs.akinon.com/technical-guides/marketplace-dashboard/marketplace-dashboard-flow-trigger)**.**
* Stopping the Transmission of Faulty Products or Resending Unsent Products. Faulty products are retried for a certain period according to the rules defined in **Failed Integration** under channel settings. Products that stop being retried based on this rule require **manual triggering**. To remove products from this state and lift the penalty, go to **Omnitron > Settings > Sales Channels**, select the relevant channel, and use the **"Update by Uploading Files"** button (located to the left of **"Delete Bulk Failed Integration"**) to upload a CSV file.

![](https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-fc845e4e82b5371f8655e7d8d11671d4eb326e36%2F13.png?alt=media)

* If too many faulty products accumulate in the queue, since processing is done in batches of 50, the next products may not be processed. There are two solutions to this:
  * **Quickly fixing errors** related to mapping, catalog, stock, price, etc., and then triggering the CSV update.
  * **Adjusting the Failed Integration settings** in the channel settings to ensure proper time intervals.
* For the **"Failed to suggest product to the catalog"** error, if the issue is related to attribute values, the **Category Attributes** flow should be executed to fetch the latest attribute values. If necessary, the **Compare Attributes** flow should also be triggered.
* **Errors Received After CSV Upload:**
  * **sku cannot identify please check your csv file. Header value should be set this: sku**\
    This error occurs when the first row of the CSV file does not contain “sku” as the header. The CSV file must be created according to the template provided on the trigger screen.
  * **The relevant SKU not exists in omnitron. Request URL: {url}**\
    This error is triggered when the specified SKU does not exist in Omnitron.
  * **The relevant record is processing in another queue, LocalBatchId: {local\_batch\_id}**\
    This error appears if the product, which is already in the middle of a processing flow, is triggered again. You should check the product logs and wait for the flow with “Waiting” status to complete. Once completed, the log can be filtered by SKU to view the final status.
  * **The relevant record is not in queue. the item may have been penalized or check product is saleable**\
    This error is returned if the product status is inactive or if it is not included in the catalog.
* For the **Order Update (send\_update\_orders)** flow, in cases where the order status cannot be updated on the MPD side:
  * If there is an ongoing or initiated return process for the order, it will not be updated.
  * The tracking number will only be updated if the **“Send Shipping Info”** flag is actively enabled. For more details, see the **“Feature Flags”** section. (Note: updates may still occur even if there is no shipping info depending on the cargo provider.)
  * The status of an order cannot be updated retroactively. Therefore, **manual intervention in the flows is not recommended**.
* During the **Product Deletion** process, the following errors may be received from Trendyol:

  * *"Price and stock cannot be updated for deactivated products"*
  * *"Price or stock updates cannot be made for archived products"*

  These errors will be processed as successful in our system; however, **stock reset operations will not be applied to the related products**. Therefore, it is important to pay attention to the following points:

  * If you have **archived or deactivated products via the Trendyol panel**, stock updates for these products will not be possible. This may lead to **the risk of overselling** in the future.
  * To prevent this risk, it is recommended to **remove the products from the catalog via Omnitron** instead of archiving or deactivating them through the Trendyol panel.
  * If the product **cannot be removed from the catalog in Omnitron** (e.g., because another sales channel is using the same catalog), and you still need to archive or deactivate it, then **when unarchiving or reactivating the product in the Trendyol panel, make sure the product is present in the Omnitron catalog**.

  Akinon **is not responsible for any sales or stock issues** that may arise during this process. It is important to act accordingly to ensure the process runs smoothly.

## <mark style="color:red;">9. Feature Flags</mark> <a href="#moz9q0llu4hf" id="moz9q0llu4hf"></a>

The frequency value is set by default as shown in the table below. These values can be changed by the Marketplace team.

<table data-header-hidden><thead><tr><th width="144.16015625"></th><th width="428.6875"></th><th></th></tr></thead><tbody><tr><td><strong>Flag</strong></td><td><strong>Description</strong></td><td><strong>Frequency</strong></td></tr><tr><td>get_orders</td><td>This flag allows orders with the “Created” status on Trendyol to be pulled into Omnitron, going back 12 hours from the flow’s execution time. Before activating this flag, the settings listed in the second section above (Sales Channel Definition), including Cargo Company Id, Use Neighborhood, Send Shipping Info, Get Discount Amount, Order Number Format, Exclude Cargo Company Ids, Exclude Send Shipping Info, Order Start Date, and Use Channel Id In Address Mapping, must be properly configured.</td><td>It runs every 5 minutes.</td></tr><tr><td>get_cancel_orders</td><td>Orders with the “Cancelled, UnSupplied, UnPacked” status on Trendyol are pulled into Omnitron, going back 12 hours from the flow’s execution time, and a cancellation request is generated with a maximum of 6 cancellation plan entries. Before activating this flag, the settings in the second section above (Sales Channel Definition), including Cancellation Reason Id, Unsupplied Reason Id, and Unpacked Reason Id, must be properly configured.</td><td>It runs every 5 minutes.</td></tr><tr><td>send_cancel_order_items</td><td><p>Ensures that the cancellation information, which was created in Omnitron (except for the reasons corresponding to the Cancellation Reason Id and Unsupplied Reason Id in the channel config), is sent to Trendyol. Before activating this flag, the settings in the second section above (Sales Channel Definition), including Send Cancel Reason Id, Cancellation Reason Id, Unsupplied Reason Id, and Unpacked Reason Id, must be properly configured.</p><p><strong>Important Note:</strong> It is essential to distinguish between the cancellation reasons in the Order Cancel flow and those used in this flow. When performing a cancellation, the reason corresponding to the Cancellation Reason Id, Unsupplied Reason Id, and Unpacked Reason Id in the channel config should not be selected. If selected, this cancellation will not be sent to Trendyol.</p></td><td>It runs every 5 minutes.</td></tr><tr><td>get_refund_orders</td><td>Claims with the “Created” status on Trendyol are pulled, and the claim rows are retrieved to create a refund request in Omnitron. Before activating this flag, the settings in the second section above (Sales Channel Definition), including Default Reason Id, Refund Reason Mapping, Refund Start Date, and Orders Refundable Days, must be properly configured.</td><td>It runs every 5 minutes.</td></tr><tr><td>send_update_orders</td><td><p>If the order status in Omnitron is "Preparing," it updates the status of the order items to "Picking," and if the order has an invoice, it updates the status to "Invoiced" on the Trendyol side. Before activating this flag, the setting for Send Shipping Info in the second section above (Sales Channel Definition) must be properly configured.</p><p>With this flow, the invoice and order status are updated. The tracking number is only sent if <strong>Send Shipping Info</strong> is active.</p><p>Carriers entered under <strong>Exclude Send Shipping Info</strong> are excluded from this process.</p><p><strong>Note:</strong> Update Warehouse logic runs inside this flow; See section 11 "Update Warehouse" for details and required payload fields.</p></td><td>It runs every 5 minutes.</td></tr><tr><td>send_split_packages</td><td>The necessary details can be found in the document at the provided link: Split Package Flow</td><td>It works through an outbound trigger sent by OMS.</td></tr><tr><td>send_delete_products</td><td>Ensures that the stock of products removed from the catalog is set to 0 on Trendyol.</td><td>It runs every 5 minutes.</td></tr><tr><td>send_products_updated</td><td>Ensures that the products to be updated are sent to Trendyol.</td><td>It runs every 5 minutes.</td></tr><tr><td>send_products_inserted</td><td>Ensures that the products added to the catalog, along with their price and stock, are sent to Trendyol. Before activating this flag, the Buffer Stock setting in the second section above (Sales Channel Definition) must be properly configured.</td><td>It runs every 5 minutes.</td></tr><tr><td>get_updated_order_items</td><td>Allows pulling orders with the “Shipped” or “Delivered” status on Trendyol, going back 24 hours from the flow's execution time, and updates them item-wise in Omnitron.</td><td>It runs every morning at 06:00.</td></tr><tr><td>send_approve_refund_orders</td><td>Ensures the approval of the created return request on Trendyol.</td><td>It runs every 5 minutes.</td></tr><tr><td>send_updated_product_price</td><td>Ensures that the updated product prices are sent to Trendyol.</td><td>It runs every 5 minutes.</td></tr><tr><td>send_updated_product_stock</td><td>Ensures that the updated product stocks are sent to Trendyol. Before activating this flag, the Buffer Stock setting in the second section above (Sales Channel Definition) must be properly configured.</td><td>It runs every minute.</td></tr><tr><td>reject_refund</td><td>When this flag is activated, rejection of return requests listed on the Marketplace panel can be performed. With the activation of the flag, return requests can be rejected by adding a reason, description, and image through the panel.</td><td>It is done through the Marketplace dashboard.</td></tr><tr><td>update_warehouse</td><td>In order for outbound requests to send warehouse update requests, this field must be enabled (true). See section 11 "Update Warehouse" for operator guidance.</td><td>It runs through an outbound trigger initiated by outbound requests.</td></tr></tbody></table>

## <mark style="color:red;">10. Initial Trendyol Integration Setup Flow</mark> <a href="#nvc6fyw4nt8" id="nvc6fyw4nt8"></a>

![](https://2911598027-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlQinVPnOffBiOp126ldR%2Fuploads%2Fgit-blob-6a67446a7f9607eecbed8443ad4ab44b1655d943%2F14.png?alt=media)

## <mark style="color:red;">11. Update Warehouse</mark> <a href="#id-update-warehouse" id="id-update-warehouse"></a>

This section explains the two ways the **Update Warehouse** capability can run for Trendyol:

1. Embedded inside the normal **Order Update** flow (no separate trigger needed)
2. Via a dedicated **:Outbound Triggered Update Warehouse** flow (explicit outbound trigger from external requests)

Both approaches update (or initially assign) the warehouse information of a shipment package on Trendyol using a valid warehouse identifier.

### 11.1 Embedded (Order Update Flow)

**Scope:** Executes automatically as part of the Order Update flow when enabled.

**Activation Conditions:**

* Channel feature flag / configuration: `update_warehouse` must be `true` (default `false`).

**Payload Context:** The tyexpress\_sender\_address\_id in the order’s extra field is sent as warehouseId.

**How it runs:** Update Warehouse logic executes inside the Order Update (send\_update\_orders) flow by default and controlled by the channel configuration `Update Warehouse` (boolean, default `false`): when set to `false`, Order Update Update Warehouse logic will be skipped even if update fields are present in the payload.\
In addition, there is an optional flow that can be triggered from OMS to perform warehouse updates when the integration for a brand is configured to support it. Depending on the integration setup, OMS may either call Update Warehouse with the required update fields in the same payload or trigger the OMS-outbound update warehouse flow.

**Required data:** Update Warehouse Id should be set in channel config to use UpdateWarehouse in Order Update flow. For OMS triggering action, the order/package payload must include the `stock_location.erp_code` key as warehouse id and `order_data.results[0].extra_field.id` key as package id. The package identifier (packageId) must be present to target the correct shipment package.

**Troubleshooting:** If an update fails, check the Monitoring / Logs screen for the Update Warehouse logic inside the Order Update or Update Warehouse flow. Common checks: verify the presence of `Update Warehouse Id` in channel configuration and `packageId` in the payload for OMS triggers.

## <mark style="color:red;">11.1. Alternative Delivery</mark>

This short section explains how Alternative Delivery works from an operator/end-user perspective.

* What it does: When Alternative Delivery is enabled on the channel, the Order Update flow applies alternative-delivery logic instead of the regular "Send Tracking Info" step. The tracking URL on Omnitron order lines is updated by the ERP/WMS, and this update is reported to Trendyol initially. Later, when the order status is updated, the delivered or returned status is sent to Trendyol.
* Timing: After the alternative-delivery URL is reported, at least 6 hours must pass before status updates are sent.
* Activation: Both **Alternative Delivery Enabled** and **Send Shipping Info** must be active in the channel settings for processing to occur.
* Quick checks if alternative delivery is not applied:
  * Verify **Alternative Delivery Enabled** and **Send Shipping Info** are active for the channel.
  * Check Order Update logs and inspect the alternative-delivery processing step.
