Trendyol
Connects Magento 2 to the Trendyol international marketplace (Romania, Greece, Bulgaria, Czechia, Slovakia, Germany, Gulf) through Trendyol’s Product API v2 and order API:
- Lists your products on Trendyol, with Magento categories mapped to Trendyol categories and Trendyol’s required attributes filled from your product attributes.
- Keeps stock and prices in sync: the regular price as Trendyol’s list price (shown crossed out) and the storefront’s final price — special price, catalog price rules — as the sale price.
- Imports Trendyol orders as Magento orders, follows their progress (cancellations, carrier, tracking number, delivery) and reports Picking back to Trendyol.
- Prints Trendyol’s shipping label for packages carried by Trendyol’s contracted carrier.
What it does
Section titled “What it does”- Category and attribute mapping in the admin. Search Trendyol’s category tree, map it to a Magento category, and choose for each Trendyol attribute where its value comes from: a Magento attribute, a fixed Trendyol value, or a fixed text. A per-product Trendyol Category ID overrides the mapping.
- Mapped once, read per product: “Author ← author_names” sends each book’s own author.
- Matching is by name, case, punctuation and diacritics aside, in either word order (“Smith Jane” = “Jane Smith”); numbers find their range (“112” pages = “101-150”); a field listing several names is split (“A, B și C”).
- Translations for values named differently (“8-12 ani = Copii”), and rules for values Trendyol groups: numbers up to a limit (“<= 2020 = 2020 și înainte”) and formats up to a size (“<= 14,5 x 21 = Dimensiune normală”, cm or mm, either orientation, thickness ignored), with “* = Mare” for the rest. A date is matched by its year.
- Attribute settings can be shared by every Trendyol category with the same attributes (all book categories map author, language and pages once).
- Long value lists (Trendyol has 168,000 authors) are read once per attribute, paced under Trendyol’s request limit, and kept for a week.
- A value Trendyol does not have is left out, not guessed; the product is still sent, and the listing says what was left out, to fix the spelling or ask Trendyol to add the value.
- Configurable products as variants. Each variant is its own Trendyol item grouped under the parent SKU, with the parent’s name, description and images where the variant has none.
- Brands looked up by name on Trendyol and remembered; a default brand for products without one.
- Failures you can act on. A product that cannot be sent (no mapping, no image, unknown brand, Trendyol refused it) is marked Failed with the reason in Catalog > Trendyol > Trendyol Listings; fix it and Send Again. The rest goes on.
- Only what changed. Stock and prices are computed for every listed product every 10 minutes and only changes are sent; everything is sent once a night as a safety net.
- Content that follows the site (optional). Titles, descriptions, images and attributes of approved products, including those listed before the module, are kept as in Magento, and so are their stock code (the SKU), VAT and dimensional weight: checked hourly, sent only when they changed. Barcode, category, variant attributes and brand stay as Trendyol approved them.
- Sync Now. A button on Catalog > Trendyol > Trendyol Listings queues a sync (new products, changed stock and prices, changed contents, Trendyol’s results) that cron starts within a minute, instead of waiting for the schedule; the page shows what the last one did.
- Stock that matches checkout. Salable quantity from Magento Inventory (reservations of unshipped orders, Trendyol’s included, already subtracted), less an optional buffer.
- Products already on Trendyol are linked by barcode in one command and from then on get their stock and prices from Magento. Separators are ignored when matching (
978-606-94865-8-0on Trendyol is9786069486580in Magento); Trendyol’s spelling is kept for updates. Only your own listings are read, never other sellers’ offers of the same product. - Orders through the normal checkout path: stock reservations, order numbers, taxes and observers work as for any order. Items are priced at what the customer paid on Trendyol; no cart price rule applies, no e-mail is sent to the customer, the Trendyol order number is in External Order ID. Trendyol does not share the customer’s phone or e-mail (see Customer details on imported orders).
- Fulfilment-friendly. Picking is reported when the order moves to Processing (or at import, or never). When Trendyol reports the parcel shipped, a Magento shipment with the Trendyol tracking number releases the reservation. Events
slova_trendyol_order_importedandslova_trendyol_package_updatedlet a fulfilment or notification module react, andSlova\Trendyol\Model\Order\LabelProvidergives it the label PDF. - Recognisable orders. Payment and shipping method code
slova_trendyol, so invoicing or ERP integrations can tell Trendyol orders apart (e.g. when Trendyol orders are invoiced by another tool).
Requirements
Section titled “Requirements”| Magento Open Source | 2.4.8 (Adobe Commerce: not tested yet) |
| Magento Inventory (MSI) | enabled |
| PHP | 8.3 – 8.4 |
| Cron | Magento cron running (bin/magento cron:run every minute) |
| Trendyol | a seller account on an international storefront, with API credentials |
Installation
Section titled “Installation”Add the repository you received with your license to composer.json (once), then:
composer require slova/module-trendyol:^1.0bin/magento module:enable Slova_Trendyolbin/magento setup:upgradebin/magento setup:di:compile # production modebin/magento cache:flushUninstalling
Section titled “Uninstalling”bin/magento module:uninstall Slova_Trendyol --remove-dataRemoves the module’s tables, settings and the two product attributes. Imported orders stay in the sales history.
Getting started
Section titled “Getting started”- API keys for this integration. In Trendyol Seller Center (main user), add an integrator named
SlovaTrendyol(letters only, no hyphen or space) and generate its API Key and API Secret. Use keys of their own, not those of another integration (invoicing, ERP): each can then be revoked on its own, and Trendyol records which integration changed what. The request limits are per seller account, shared by all integrations. - Stores > Configuration > Slova > Trendyol > Account: Seller ID, the API Key and API Secret above, Integrator Name
SlovaTrendyol, storefront, store view. Save, then Test Connection. - Catalog > Trendyol > Trendyol Category Mapping: map the categories you sell in, and the required attributes of each Trendyol category.
- Already selling on Trendyol? Link those products:
bin/magento slova:trendyol:products --link. - Choose products to list: List on Trendyol in the product grid’s actions, or the attribute on the product form.
- Turn on Products > Sync Products, then Orders > Import Orders (set Import Packages Created From to the day you switch, so orders handled before are not imported).
Configuration
Section titled “Configuration”All settings are global (one Trendyol account per installation).
Account
Section titled “Account”| Setting | Default | |
|---|---|---|
| Enable Integration | No | Master switch. |
| Environment | Production | Stage needs separate keys and your server IP whitelisted by Trendyol. |
| Seller ID, API Key, API Secret | Stored encrypted. | |
| Integrator Name | SlovaTrendyol | Sent in the User-Agent Trendyol requires (<seller id> - <name>); must be the name the API keys were created for. |
| Storefront | RO | The Trendyol country. |
| Language | ro | Of category and attribute names and Trendyol’s error messages. |
| Store View | 1 | Products, prices and currency are read here; orders are created here. Its currency must be the storefront’s. |
Products
Section titled “Products”| Setting | Default | |
|---|---|---|
| Sync Products | No | Create marked products and sync stock and prices. |
| Update Content of Listed Products | No | Send title, description, images and attributes of approved products when they change on the site, and their stock code, VAT and dimensional weight. The first run sends every content once, overwriting edits made in Seller Center. Trendyol may review a changed content before it shows. |
| List Bundle Products | No | A marked bundle is one Trendyol item: storefront price, stock of its scarcest item, a barcode made from its SKU when it has none; its orders get the default items. |
| Leave Out Pre-order and Upcoming Products | Yes | Flagged products are held back from creation, and listed ones get stock 0, until the flag goes. |
| Flags That Leave a Product Out | is_preorder, is_upcoming | Any Yes/No attributes (default: Slova Pre-Order’s). |
| Barcode | SKU | Identifies the product on Trendyol for good. Up to 40 letters, digits, ., -, _; an internal code is accepted, an EAN is not required. A product’s own Trendyol Barcode attribute (optional, on the product form) takes precedence. |
| Brand Attribute / Default Brand ID | Brand name looked up on Trendyol; the default is used when it is unknown. | |
| Brand Overrides | Magento brand = Trendyol brand ID lines, for your own brand or when Trendyol has look-alike brands created by other sellers. |
|
| VAT Rate | From tax class | Or a fixed rate. |
| Dispatch Time (days) | 2 | |
| Dimensional Weight Attribute / Default | none / 1 | Desi, for Trendyol’s shipping costs. |
| Price Adjustment (%) | 0 | Applied to both prices, e.g. to cover the commission. |
| Stock Buffer | 0 | Units kept back from Trendyol. |
Orders
Section titled “Orders”| Setting | Default | |
|---|---|---|
| Import Orders | No | Every 5 minutes. |
| Import Packages Created From | first enable | Older packages are never imported. |
| Tell Trendyol “Picking” | When the order moves to Processing | Or at import, or never. |
| Cancel Order When Trendyol Cancels | Yes | Only while nothing is shipped or invoiced in Magento; otherwise a comment. |
| Create Shipment When Trendyol Ships | Yes | Magento shipment with the tracking number; releases the reservation. |
Customer details on imported orders
Section titled “Customer details on imported orders”Trendyol shares only what delivery needs, and with its own carrier (“Trendyol Pays”) not even all of that:
| Field | On the Magento order | Why |
|---|---|---|
| Phone | - |
Trendyol does not send the customer’s phone: its carrier (FAN, KLG…) contacts the customer through Trendyol. |
Trendyol’s relay address (…@trendyolmail.com), or trendyol-<order number>@marketplace.invalid when none is given |
The real address stays with Trendyol. The store sends the customer no e-mail either way. | |
| Name, street, city | As on Trendyol, cleaned to the rules Magento applies when it places the order | Magento refuses a guest address with digits in the city or a / in the street. A locality such as “Sector 3” goes at the end of the street and the county becomes the city; other characters Magento does not allow become spaces. |
If you send orders on to a warehouse, fulfilment service or courier of your own, it will usually require a contact phone and refuse -. Give it one of your own for Trendyol orders, such as the store’s phone (Stores > Configuration > General > Store Information > Store Phone Number). Nobody calls it for delivery, because the parcel travels on Trendyol’s label with Trendyol’s carrier. Recognise the orders by their payment method code slova_trendyol, or react to the slova_trendyol_order_imported event, which carries the order and the Trendyol package. Keep your other orders as they are: there the phone is the customer’s, and the courier does call it.
Command line
Section titled “Command line”bin/magento slova:trendyol:test # check the credentialsbin/magento slova:trendyol:categories carti copii # search Trendyol categoriesbin/magento slova:trendyol:categories -a 1234 # attributes of a categorybin/magento slova:trendyol:categories -a 1234 --values=338 # values of an attributebin/magento slova:trendyol:products [--link] [--create] [--stock] [--content] [--full] [--batches]bin/magento slova:trendyol:orders [--since=2026-10-01]Scheduled jobs
Section titled “Scheduled jobs”Group slova_trendyol, in its own process: Sync Now requests every minute, orders and batch results every 5 minutes, product creation and stock / price changes every 10 minutes, content changes hourly (when on), full stock and prices at 03:35. Log: var/log/slova_trendyol.log.
Limits
Section titled “Limits”- The brand and category of an approved product are not changed (Trendyol does not accept it through the content update); nor are its variant attributes.
- Shipping labels exist only for packages carried by Trendyol’s contracted carrier (“Trendyol Pays”). With your own carrier contract (“Seller Pays”) the tracking number is not sent to Trendyol yet.
- Returns (claims) are not imported.