{"id":549268,"date":"2026-07-21T05:41:58","date_gmt":"2026-07-21T05:41:58","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=549268"},"modified":"2026-08-17T05:38:45","modified_gmt":"2026-08-17T05:38:45","slug":"how-to-connect-pimcore-12-to-commercetools","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/","title":{"rendered":"How to Connect Pimcore 12 to commercetools (Step by Step)"},"content":{"rendered":"\n<p>Running your product catalog in&nbsp;<strong>Pimcore 12<\/strong>&nbsp;and selling through&nbsp;<strong>commercetools<\/strong>&nbsp;means the same categories, product types, and products have to live in two systems at once. Doing that by hand \u2014 re-keying every attribute, re-uploading every image, rebuilding every category tree \u2014 does not scale, and every manual step is a chance for the two catalogs to drift apart.<\/p>\n\n\n\n<p>The&nbsp;<strong>Pimcore commercetools Connector<\/strong>&nbsp;closes that gap. It syncs catalog data&nbsp;<strong>both directions<\/strong>&nbsp;between a commercetools project and Pimcore 12, straight over the commercetools HTTP API \u2014 no middleware, no CSV exports, no vendor SDK in the middle. This guide walks you through the whole flow: connect a project, map your data, then run each import and export job from inside Pimcore Studio.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-50-01-1024x499.png\" alt=\"Screenshot-from-2026-07-10-16-50-01\" class=\"wp-image-7993\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Pimcore commercetools Connector: Key Features<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Two-way sync<\/strong>&nbsp;\u2014 import commercetools \u2192 Pimcore&nbsp;<em>and<\/em>&nbsp;export Pimcore \u2192 commercetools, entity by entity.<\/li>\n\n\n\n<li><strong>Categories, product types (families), and products<\/strong>&nbsp;\u2014 full catalog coverage, including localized fields, prices, typed attributes, and images.<\/li>\n\n\n\n<li><strong>Native Pimcore variants<\/strong>&nbsp;\u2014 a commercetools product with variants becomes one parent object plus real Pimcore variant children.<\/li>\n\n\n\n<li><strong>Images handled end-to-end<\/strong>&nbsp;\u2014 downloaded into Pimcore Assets on import, uploaded as bytes and published on export.<\/li>\n\n\n\n<li><strong>Map to your own classes<\/strong>&nbsp;\u2014 bind each entity to any Pimcore DataObject class and map every field yourself.<\/li>\n\n\n\n<li><strong>OAuth2, encrypted credentials<\/strong>&nbsp;\u2014 client-credentials auth, connection verified on save, secret encrypted at rest.<\/li>\n\n\n\n<li><strong>Live job monitoring<\/strong>&nbsp;\u2014 every sync runs in the background with per-step counters, a Stop control, and a per-job error log inside Studio.<\/li>\n\n\n\n<li><strong>Idempotent and resilient<\/strong>&nbsp;\u2014 a bad row is logged and skipped, not fatal; re-running is always safe.<\/li>\n\n\n\n<li><strong>Fine-grained permissions<\/strong>&nbsp;\u2014 a master key plus separate keys for credentials, mapping, import, and export.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Before You Start<\/h2>\n\n\n\n<p>You will need:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A running&nbsp;<strong>Pimcore 12<\/strong>&nbsp;instance with Studio, and the&nbsp;<strong>Pimcore commercetools Connector<\/strong>&nbsp;installed.<\/li>\n\n\n\n<li>A&nbsp;<strong>commercetools project<\/strong>&nbsp;and an&nbsp;<strong>API Client<\/strong>&nbsp;created in the commercetools Merchant Center (that gives you a&nbsp;<em>project key<\/em>,&nbsp;<em>client ID<\/em>,&nbsp;<em>client secret<\/em>,&nbsp;<em>region<\/em>, and&nbsp;<em>scopes<\/em>).<\/li>\n<\/ul>\n\n\n\n<p>Once the connector is installed you will see a&nbsp;<strong>Commercetools<\/strong>&nbsp;section in the Studio left navigation, with&nbsp;<strong>Credentials<\/strong>,&nbsp;<strong>Mappings<\/strong>, an&nbsp;<strong>Import<\/strong>&nbsp;group, and an&nbsp;<strong>Export<\/strong>&nbsp;group.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1 \u2014 Connect Your commercetools Project<\/h2>\n\n\n\n<p>The connector authenticates with the standard&nbsp;<strong>OAuth2 client-credentials<\/strong>&nbsp;grant.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Studio, open&nbsp;<strong>Commercetools \u2192 Credentials<\/strong>.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Add Credential<\/strong>. A dialog opens.<\/li>\n\n\n\n<li>Fill in the fields:\n<ul class=\"wp-block-list\">\n<li><strong>Project Key<\/strong>&nbsp;\u2014 your commercetools project key.<\/li>\n\n\n\n<li><strong>Client ID<\/strong>&nbsp;and&nbsp;<strong>Client Secret<\/strong>&nbsp;\u2014 from your commercetools API Client.<\/li>\n\n\n\n<li><strong>Region<\/strong>&nbsp;\u2014 e.g.&nbsp;<code>europe-west1.gcp<\/code>. The connector builds the correct API and auth hosts for that region automatically.<\/li>\n\n\n\n<li><strong>Scopes<\/strong>&nbsp;\u2014 optional, one per line or space-separated (e.g.&nbsp;<code>view_products:my-project<\/code>).<\/li>\n\n\n\n<li>Tick&nbsp;<strong>Active (only one credential may be active)<\/strong>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Click&nbsp;<strong>Save<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p>On save the connector\u00a0<strong>verifies the connection before it stores anything<\/strong>\u00a0\u2014 If the credentials are valid you get\u00a0<em>&#8220;Saved and connection verified&#8221;<\/em>\u00a0and the row&#8217;s\u00a0<strong>Status<\/strong>\u00a0turns green; if not, the save is rejected with an error and nothing is persisted. The\u00a0<strong>client secret is encrypted at rest<\/strong>\u00a0and never shown again \u2014 when you edit a credential later, leave the secret blank to keep the current one.<\/p>\n\n\n\n<p><strong>Good to know:<\/strong>&nbsp;you can store several commercetools projects here, but&nbsp;<strong>only one is Active at a time<\/strong>, and jobs always run against the Active credential. Each project keeps its own private set of local-to-remote id links, so switching between projects never mixes their catalogs.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-53-53-1024x499.png\" alt=\"Screenshot-from-2026-07-10-16-53-53\" class=\"wp-image-7995\" loading=\"lazy\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-51-14-1024x499.png\" alt=\"Screenshot-from-2026-07-10-16-51-14\" class=\"wp-image-7996\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2 \u2014 Map commercetools Entities to Your Pimcore Classes<\/h2>\n\n\n\n<p>The connector does not force a fixed schema on you. It ships default DataObject classes \u2014&nbsp;<code>WkCategory<\/code>,&nbsp;<code>WkFamily<\/code>,&nbsp;<code>WkAttribute<\/code>, and a variant-enabled&nbsp;<code>WkProduct<\/code>&nbsp;\u2014 but the&nbsp;<strong>Mappings<\/strong>&nbsp;screen is where you make the connector fit&nbsp;<em>your<\/em>&nbsp;data model. Mapping has two parts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2a. Bind a Pimcore class to each entity<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open&nbsp;<strong>Commercetools \u2192 Mappings<\/strong>.<\/li>\n\n\n\n<li>On the&nbsp;<strong>Object Mapping<\/strong>&nbsp;tab you will see a row per entity \u2014&nbsp;<strong>Category<\/strong>,&nbsp;<strong>Family<\/strong>,&nbsp;<strong>Product<\/strong>&nbsp;\u2014 each with a&nbsp;<strong>Pimcore class<\/strong>&nbsp;dropdown.<\/li>\n\n\n\n<li>Pick the class each entity should read into (keep the defaults, or point them at your own classes).<\/li>\n\n\n\n<li>Click&nbsp;<strong>Save object mapping<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-55-00-1024x499.png\" alt=\"Screenshot-from-2026-07-10-16-55-00\" class=\"wp-image-7997\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2b. Map the fields<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Still in&nbsp;<strong>Mappings<\/strong>, switch to the entity&#8217;s own tab (<strong>Category<\/strong>,&nbsp;<strong>Family<\/strong>, or&nbsp;<strong>Product<\/strong>).<\/li>\n\n\n\n<li>Each row is a commercetools field on the left and a&nbsp;<strong>Pimcore field<\/strong>&nbsp;dropdown on the right. Required fields are marked with a red asterisk (for products:&nbsp;<code>sku<\/code>,&nbsp;<code>key<\/code>,&nbsp;<code>name<\/code>).<\/li>\n\n\n\n<li>Choose the target field for each \u2014 both plain and&nbsp;<em>localized<\/em>&nbsp;class fields are offered (localized ones are labelled accordingly). Each Pimcore field can be used once.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Save field mapping<\/strong>.<\/li>\n\n\n\n<li>Repeat for the other entities.<\/li>\n<\/ol>\n\n\n\n<p>Product&nbsp;<strong>custom attributes<\/strong>&nbsp;need no per-attribute setup \u2014 they are matched&nbsp;<strong>by code<\/strong>&nbsp;against your class fields at sync time, using the attribute definitions carried on the product&#8217;s family. Mapping is&nbsp;<strong>global<\/strong>: one shared map serves every stored project, so you configure it once.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-56-02-2-1024x499.png\" alt=\"Screenshot-from-2026-07-10-16-56-02-2\" class=\"wp-image-8011\" loading=\"lazy\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-56-30-1024x499.png\" alt=\"Screenshot-from-2026-07-10-16-56-30\" class=\"wp-image-8001\" loading=\"lazy\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-57-20-1024x499.png\" alt=\"Screenshot-from-2026-07-10-16-57-20\" class=\"wp-image-8002\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3 \u2014 Importing from commercetools<\/h2>\n\n\n\n<p>Import runs one entity at a time, and order matters because products link to categories and families. Run the jobs in this sequence:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3a. Import Categories<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open&nbsp;<strong>Commercetools \u2192 Import \u2192 Categories<\/strong>.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Run Import<\/strong>. You will see a&nbsp;<em>&#8220;Import started&#8221;<\/em>&nbsp;toast and the job&#8217;s detail tab opens automatically.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-17-44-01-1024x499.png\" alt=\"Screenshot-from-2026-07-10-17-44-01\" class=\"wp-image-8003\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Categories come in as a&nbsp;<strong>tree, not a flat list<\/strong>&nbsp;\u2014 the connector reads them&nbsp;<strong>parents first<\/strong>, so every parent exists before its children link to it, rebuilding the full hierarchy with localized name, slug, description, and meta fields.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3b. Import Families (commercetools Product Types)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open&nbsp;<strong>Commercetools \u2192 Import \u2192 Families<\/strong>.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Run Import<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-17-46-26-1024x499.png\" alt=\"Screenshot-from-2026-07-10-17-46-26\" class=\"wp-image-8004\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>A commercetools&nbsp;<strong>product type<\/strong>&nbsp;is imported as a&nbsp;<strong>family<\/strong>: its&nbsp;<strong>attribute definitions<\/strong>&nbsp;become&nbsp;<code>WkAttribute<\/code>&nbsp;objects linked to the family, so the structure that governs your products travels with them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3c. Import Products<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open&nbsp;<strong>Commercetools \u2192 Import \u2192 Products<\/strong>.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Run Import<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-17-56-12-1024x499.png\" alt=\"Screenshot-from-2026-07-10-17-56-12\" class=\"wp-image-8005\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Each product pulls in its core and localized fields, price (converted from commercetools&#8217; cent-based money to a plain value), typed attribute values, family and category links, and images downloaded to Pimcore Assets.&nbsp;<strong>Variants become real Pimcore variants<\/strong>&nbsp;\u2014 one parent&nbsp;<code>WkProduct<\/code>&nbsp;plus a native variant child per additional variant, with per-variant attribute values kept in a field collection. After the run, imported objects are re-indexed so they appear immediately in Studio search.<\/p>\n\n\n\n<p><em>Note:<\/em>&nbsp;import screens run against the&nbsp;<strong>Active<\/strong>&nbsp;credential \u2014 you don&#8217;t pick a project on the run form.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4 \u2014 Exporting to commercetools<\/h2>\n\n\n\n<p>Export mirrors import and enforces the right order so nothing lands half-built. Run families before products, because a product&#8217;s type is mandatory in commercetools.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4a. Export Categories<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open&nbsp;<strong>Commercetools \u2192 Export \u2192 Categories<\/strong>.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Run Export<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/image-18-1024x499.png\" alt=\"image-18\" class=\"wp-image-8006\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Categories export parents-first and re-create the nesting in commercetools.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4b. Export Families<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open&nbsp;<strong>Commercetools \u2192 Export \u2192 Families<\/strong>.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Run Export<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/image-19-1024x499.png\" alt=\"image-19\" class=\"wp-image-8007\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Pimcore attribute types are translated into the matching commercetools attribute types. Export is deliberately&nbsp;<strong>conservative<\/strong>: existing attribute definitions on a remote product type are never modified or removed \u2014 only genuinely new ones are added \u2014 so a sync can&#8217;t break a product type other products depend on.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4c. Export Products (optionally filtered by SKU)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open&nbsp;<strong>Commercetools \u2192 Export \u2192 Products<\/strong>.<\/li>\n\n\n\n<li>To push everything, just click&nbsp;<strong>Run Export<\/strong>.<\/li>\n\n\n\n<li>To push only specific products, click&nbsp;<strong>Filter<\/strong>, and in the&nbsp;<strong>SKUs<\/strong>&nbsp;box enter the SKUs (one per line or comma-separated \u2014 leave it empty to export all), then click&nbsp;<strong>Apply<\/strong>.<\/li>\n\n\n\n<li>Click&nbsp;<strong>Run Export<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/image-21-1024x499.png\" alt=\"image-21\" class=\"wp-image-8009\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Products export with their variants, localized values, category references, and attributes, then&nbsp;<strong>publish<\/strong>. Prices are sent on&nbsp;<strong>create<\/strong>&nbsp;and left untouched on later updates, so an export never overwrites pricing you manage in commercetools. Images are handled as a final step: uploaded to commercetools as bytes, staged, and published; the remote gallery is kept as a mirror of the Pimcore gallery (new images added, stale ones removed).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/image-20-1024x499.png\" alt=\"image-20\" class=\"wp-image-8008\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Watching, Stopping &amp; Re-running Any Job<\/h2>\n\n\n\n<p>Every import and export runs in the background and is tracked as a job you can watch live. Each run screen shows a history table with columns&nbsp;<strong>Job ID<\/strong>,&nbsp;<strong>Started At<\/strong>,&nbsp;<strong>Username<\/strong>,&nbsp;<strong>Credential<\/strong>,&nbsp;<strong>Status<\/strong>,&nbsp;<strong>Warnings<\/strong>, and&nbsp;<strong>Action<\/strong>. Status tags read&nbsp;<em>Started<\/em>,&nbsp;<em>In Progress<\/em>,&nbsp;<em>Completed<\/em>,&nbsp;<em>Failed<\/em>, or&nbsp;<em>Stopped<\/em>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Open a run<\/strong>&nbsp;\u2014 click&nbsp;<strong>View<\/strong>&nbsp;in the Action column. The job detail shows Job Information, a Progress bar, per-step counters (<em>Read, Created, Updated, Skipped, Failed<\/em>), and a Warnings &amp; Errors \/ Activity log.<\/li>\n\n\n\n<li><strong>Stop a run<\/strong>&nbsp;\u2014 while a job is running, open it and click&nbsp;<strong>Stop<\/strong>&nbsp;in the Job Information card. It stops cleanly:&nbsp;<em>&#8220;The current item finishes first; objects and mappings already written are kept.&#8221;<\/em><\/li>\n\n\n\n<li><strong>Re-run safely<\/strong>&nbsp;\u2014 just run the job again. The connector keeps a local \u2194 remote id map per project and entity and decides create-vs-update from it, so a second run&nbsp;<strong>updates instead of duplicating<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>When commercetools rejects a row, the connector surfaces&nbsp;<em>its<\/em>&nbsp;error message \u2014 not a bare &#8220;HTTP 400&#8221; \u2014 so you know exactly which product and field to fix. A single bad row is counted and skipped; the rest of the batch keeps going.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Localization &amp; Permissions<\/h2>\n\n\n\n<p><strong>Multi-language is automatic.<\/strong>&nbsp;The connector matches Pimcore languages to your commercetools project locales (for example&nbsp;<code>en<\/code>&nbsp;\u2194&nbsp;<code>en-US<\/code>), fanning localized values out per language on import and collapsing them back on export. You manage languages in Pimcore as usual.<\/p>\n\n\n\n<p><strong>Access is fine-grained.<\/strong>&nbsp;There is one master permission plus separate keys for&nbsp;<strong>credentials<\/strong>,&nbsp;<strong>mapping<\/strong>,&nbsp;<strong>import<\/strong>, and&nbsp;<strong>export<\/strong>. Grant the master key for full access, or hand out only the areas a role needs \u2014 the rule is enforced server-side, not just hidden in the UI.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">For Developers: Run It From the Command Line<\/h2>\n\n\n\n<p>Everything the UI does is also on the CLI, which makes the connector easy to schedule or script:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>commercetools:import<\/code>&nbsp;and&nbsp;<code>commercetools:export<\/code>&nbsp;\u2014 run a sync for a chosen project (export also takes a repeatable&nbsp;<code>--sku<\/code>&nbsp;filter).<\/li>\n\n\n\n<li><code>commercetools:credentials<\/code>&nbsp;\u2014 list, create, edit, and delete projects.<\/li>\n\n\n\n<li><code>commercetools:objects:install<\/code>&nbsp;\u2014 build the default DataObject classes and seed the default mappings, idempotently.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Try the Pimcore commercetools Connector<\/h2>\n\n\n\n<p>Ready to connect&nbsp;<strong>Pimcore 12<\/strong>&nbsp;and&nbsp;<strong>commercetools<\/strong>? Get the Pimcore commercetools Connector from the Webkul Store, or reach out to our team for a live demo and help fitting it to your catalog.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Running your product catalog in&nbsp;Pimcore 12&nbsp;and selling through&nbsp;commercetools&nbsp;means the same categories, product types, and products have to live in two systems at once. Doing that by hand \u2014 re-keying every attribute, re-uploading every image, rebuilding every category tree \u2014 does not scale, and every manual step is a chance for the two catalogs to drift <a href=\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":785,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8189],"tags":[5829,8201,8487],"class_list":["post-549268","post","type-post","status-publish","format-standard","hentry","category-pimcore","tag-pim","tag-pimcore","tag-pimcore-ecommerce-connector"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Connect Pimcore 12 to commercetools<\/title>\n<meta name=\"description\" content=\"How to connect Pimcore 12 to ommercetools using the Webkul Connector. Configure credentials, map data, import and export products, categories, and product types with step-by-step instructions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Connect Pimcore 12 to commercetools\" \/>\n<meta property=\"og:description\" content=\"How to connect Pimcore 12 to ommercetools using the Webkul Connector. Configure credentials, map data, import and export products, categories, and product types with step-by-step instructions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-21T05:41:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-17T05:38:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-og.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Devraj Jaiswal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Devraj Jaiswal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/\"},\"author\":{\"name\":\"Devraj Jaiswal\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/3aea89d84a5d70c394d6055b8121fb13\"},\"headline\":\"How to Connect Pimcore 12 to commercetools (Step by Step)\",\"datePublished\":\"2026-07-21T05:41:58+00:00\",\"dateModified\":\"2026-08-17T05:38:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/\"},\"wordCount\":1746,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-50-01-1024x499.png\",\"keywords\":[\"pim\",\"Pimcore\",\"Pimcore eCommerce Connector\"],\"articleSection\":[\"PimCore\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/\",\"url\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/\",\"name\":\"How to Connect Pimcore 12 to commercetools\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-50-01-1024x499.png\",\"datePublished\":\"2026-07-21T05:41:58+00:00\",\"dateModified\":\"2026-08-17T05:38:45+00:00\",\"description\":\"How to connect Pimcore 12 to ommercetools using the Webkul Connector. Configure credentials, map data, import and export products, categories, and product types with step-by-step instructions.\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#primaryimage\",\"url\":\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-50-01-1024x499.png\",\"contentUrl\":\"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-50-01-1024x499.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Connect Pimcore 12 to commercetools (Step by Step)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/3aea89d84a5d70c394d6055b8121fb13\",\"name\":\"Devraj Jaiswal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9cd646e0638ef0c329a1e4eae88ec76efb622a3042261278996e92cd952d2e90?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9cd646e0638ef0c329a1e4eae88ec76efb622a3042261278996e92cd952d2e90?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Devraj Jaiswal\"},\"url\":\"https:\/\/webkul.com\/blog\/author\/devraj-jaiswal322\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Connect Pimcore 12 to commercetools","description":"How to connect Pimcore 12 to ommercetools using the Webkul Connector. Configure credentials, map data, import and export products, categories, and product types with step-by-step instructions.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/","og_locale":"en_US","og_type":"article","og_title":"How to Connect Pimcore 12 to commercetools","og_description":"How to connect Pimcore 12 to ommercetools using the Webkul Connector. Configure credentials, map data, import and export products, categories, and product types with step-by-step instructions.","og_url":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2026-07-21T05:41:58+00:00","article_modified_time":"2026-08-17T05:38:45+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-og.png","type":"image\/png"}],"author":"Devraj Jaiswal","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Devraj Jaiswal","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/"},"author":{"name":"Devraj Jaiswal","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/3aea89d84a5d70c394d6055b8121fb13"},"headline":"How to Connect Pimcore 12 to commercetools (Step by Step)","datePublished":"2026-07-21T05:41:58+00:00","dateModified":"2026-08-17T05:38:45+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/"},"wordCount":1746,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#primaryimage"},"thumbnailUrl":"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-50-01-1024x499.png","keywords":["pim","Pimcore","Pimcore eCommerce Connector"],"articleSection":["PimCore"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/","url":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/","name":"How to Connect Pimcore 12 to commercetools","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#primaryimage"},"thumbnailUrl":"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-50-01-1024x499.png","datePublished":"2026-07-21T05:41:58+00:00","dateModified":"2026-08-17T05:38:45+00:00","description":"How to connect Pimcore 12 to ommercetools using the Webkul Connector. Configure credentials, map data, import and export products, categories, and product types with step-by-step instructions.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#primaryimage","url":"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-50-01-1024x499.png","contentUrl":"https:\/\/unopim.com\/wp-content\/uploads\/2026\/07\/Screenshot-from-2026-07-10-16-50-01-1024x499.png"},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/how-to-connect-pimcore-12-to-commercetools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Connect Pimcore 12 to commercetools (Step by Step)"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/3aea89d84a5d70c394d6055b8121fb13","name":"Devraj Jaiswal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9cd646e0638ef0c329a1e4eae88ec76efb622a3042261278996e92cd952d2e90?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9cd646e0638ef0c329a1e4eae88ec76efb622a3042261278996e92cd952d2e90?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Devraj Jaiswal"},"url":"https:\/\/webkul.com\/blog\/author\/devraj-jaiswal322\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/549268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/785"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=549268"}],"version-history":[{"count":7,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/549268\/revisions"}],"predecessor-version":[{"id":550079,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/549268\/revisions\/550079"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=549268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=549268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=549268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}