Skip to main content

How to migrate a Trendyol catalog to Shopify

Trendyol and Shopify model a product differently: Trendyol groups variants under a productMainId and keys each variant by barcode, while Shopify groups variants by URL handle and keys them by row, with Option1–Option3 carrying size and colour. A migration is therefore a mapping exercise, not a copy: you export Trendyol content and variants, map productMainId to handle, barcode to Barcode, stockCode to SKU, and variant attributes to Option columns, then validate before publishing.

Field mapping

Trendyol field names are those used by Crossell's Trendyol integration (content-level fields are shared across variants; variant-level fields repeat per barcode). Shopify column names are from Shopify's product CSV reference.

TrendyolShopifyNotes
productMainIdURL handleGroups every variant of one product. Shopify treats rows sharing a handle as one product.
titleTitleContent-level on Trendyol. In Shopify only the first row of a handle carries it.
barcode (variant)BarcodeThe variant key on Trendyol. Must be unique per variant on both sides.
stockCode (variant)SKUYour internal code. Shopify requires it if you use a custom fulfillment service.
salePricePriceThe price actually charged.
listPriceCompare-at priceShows as the struck-through price. Leave empty if there is no discount.
stock.quantityInventory quantityShopify only accepts this column for single-location stores; multi-location uses a separate inventory CSV.
brandIdVendorResolve the brand id to its name first — Shopify stores a free-text vendor.
categoryIdProduct categoryNot a 1:1 match. Shopify uses its own Standard Product Taxonomy, so every Trendyol category needs an explicit mapping.
attributes (variant)Option1/2/3 name + valueSize and colour become Option columns. Shopify allows at most three options per product.

Where these migrations break

Variants collapse into separate products

If the handle is not identical across a product's rows, Shopify creates one product per row. Derive the handle from productMainId, never from the title.

More than three variant axes

Shopify supports three options. A Trendyol product with four distinguishing attributes cannot be represented directly and needs one axis folded into the title or SKU.

Category mapping is silently wrong

There is no automatic correspondence between a Trendyol categoryId and Shopify's taxonomy. An unmapped category imports, but filtering and Google Shopping feeds degrade.

Duplicate or missing barcodes

Barcode is the variant identity on Trendyol. Duplicates merge variants that should stay separate; blanks make the reverse sync ambiguous.

Images are separate rows

Shopify expects one row per additional image, repeating the handle, and the URLs must be publicly reachable at import time.

The migration, step by step

  1. 1

    Export the Trendyol catalog

    Pull content and variants together so the productMainId to barcode relationship survives the export.

  2. 2

    Resolve ids to names

    Convert brandId and categoryId into values Shopify accepts. This is the step that needs a decision per category, not an algorithm.

  3. 3

    Build the variant grid

    Group by productMainId, emit one row per barcode, and map variant attributes into Option1–Option3.

  4. 4

    Validate before publishing

    Check for duplicate barcodes, products above three options, unmapped categories, and unreachable image URLs.

  5. 5

    Publish, then reconcile

    Import to Shopify, then confirm variant counts per product match the source before pointing inventory sync at it.

Sources

How it worksField mappingFAQ