{"id":552594,"date":"2026-09-01T05:43:09","date_gmt":"2026-09-01T05:43:09","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=552594"},"modified":"2026-09-01T05:43:19","modified_gmt":"2026-09-01T05:43:19","slug":"pimcore-salesforce-crm-sync-connector","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/","title":{"rendered":"Pimcore &amp; Salesforce CRM Sync Connector"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p>The <a href=\"https:\/\/docs.pimcore.com\/platform\/\">Pimcore 12<\/a> Salesforce Connector keeps your catalog and CRM data in sync between Pimcore and Salesforce (Sales \/ Service Cloud).<\/p>\n\n\n\n<p>It syncs products, accounts, contacts, leads, and opportunities automatically, in both directions. Moreover, every sync runs as a background job inside Pimcore Studio.<\/p>\n\n\n\n<p>As a result, keeping your product data and CRM records aligned is faster and far more reliable.<\/p>\n\n\n\n<p>Copying products and CRM records between Pimcore and Salesforce by hand doesn&#8217;t scale. So Webkul built the Pimcore 12 Salesforce Connector to remove the copy-paste.<\/p>\n\n\n\n<p>It bridges your Pimcore data model and your Salesforce org over the <a href=\"https:\/\/developer.salesforce.com\/docs\/atlas.en-us.api_rest.meta\/api_rest\/\">Salesforce REST API<\/a>. As a result, products, accounts, contacts, leads, and opportunities all flow automatically, in both directions.<\/p>\n\n\n\n<p>It&#8217;s built natively for Pimcore 12 and Salesforce. Also, it brings two big upgrades. First, every sync runs as a restartable background job.<\/p>\n\n\n\n<p>So large data sets no longer block your screen or time out. Meanwhile, you watch each run on a live progress view. Second, it&#8217;s bidirectional.<\/p>\n\n\n\n<p>It both imports from and exports to Salesforce. Because of that, you can seed Pimcore from an existing Salesforce org, then push curated changes back out.<\/p>\n\n\n\n<p>The Pimcore 12 Salesforce Connector also lives natively inside the new Pimcore Studio UI. Furthermore, it adds its own screens for credentials, mapping, and the job runner.<\/p>\n\n\n\n<p>So there are no separate tools to learn.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"602\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-1200x602.webp\" alt=\"salesforce menu\" class=\"wp-image-552599\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-1200x602.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-300x150.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-250x125.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-768x385.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu.webp 1292w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Server Requirements<\/h2>\n\n\n\n<p>The connector runs on top of a standard Pimcore 12 install, so if Pimcore runs, the connector runs. Here is what that stack needs.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Component<\/th><th>Requirement<\/th><\/tr><\/thead><tbody><tr><td>PHP<\/td><td>8.4 or 8.5 (CLI + FPM), with pdo_mysql, intl, mbstring, curl, gd \/ imagick, zip, exif, opcache<\/td><\/tr><tr><td>Symfony<\/td><td>7.4 (installed as a Pimcore dependency)<\/td><\/tr><tr><td>Pimcore<\/td><td>Pimcore 12 \u2014 Platform 2026.1 (pimcore\/pimcore: 2026.1.x) with the Studio UI bundle<\/td><\/tr><tr><td>Database<\/td><td>MariaDB 10.11+ or MySQL 8.0+<\/td><\/tr><tr><td>Web server<\/td><td>Nginx or Apache 2.4<\/td><\/tr><tr><td>Composer<\/td><td>Composer 2<\/td><\/tr><tr><td>Node.js<\/td><td>22+ \u2014 only if you rebuild the Studio UI assets yourself<\/td><\/tr><tr><td>Message queue<\/td><td>A running <a href=\"https:\/\/symfony.com\/doc\/current\/messenger.html\">Symfony Messenger<\/a> worker (Supervisor is recommended) \u2014 this is what drives the background sync jobs<\/td><\/tr><tr><td>Salesforce<\/td><td>A Salesforce org (Sales \/ Service Cloud) with an <a href=\"https:\/\/developer.salesforce.com\/docs\/platform\/named-credentials\/guide\/nc-oauth-provider.html\">External Client App<\/a> using the <strong><a href=\"https:\/\/developer.salesforce.com\/docs\/atlas.en-us.object_reference.meta\/object_reference\/sforce_api_soap_calls_login.htm\">Client Credentials Flow<\/a><\/strong> and a <strong>Run As<\/strong> user, reachable from the Pimcore server over HTTPS<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>A few PHP settings matter for large data sets. So set <code>memory_limit<\/code> to at least 512M (1G for big imports), and raise <code>max_execution_time<\/code> for the CLI. Because the syncs run in the background, the web request itself never has to wait.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Key Features of the Pimcore 12 Salesforce Connector<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bidirectional sync<\/strong> \u2014 import and export for Products, Accounts, Contacts, Leads, and Opportunities.<\/li>\n\n\n\n<li><strong>Asynchronous job engine<\/strong> \u2014 syncs run in the background on a dedicated queue, so they never block your work.<\/li>\n\n\n\n<li><strong>Live Job-Execution view<\/strong> \u2014 real-time status, read \/ created \/ updated counts, a run-history grid, and a one-click Stop.<\/li>\n\n\n\n<li><strong>Config-driven mapping<\/strong> \u2014 point the connector at your Pimcore classes and match fields on screen; nothing to hard-code.<\/li>\n\n\n\n<li><strong>Field Mapping is the single source of truth<\/strong> \u2014 pair each Salesforce field with a Pimcore attribute once; the same map drives both import and export.<\/li>\n\n\n\n<li><strong>Idempotent matching<\/strong> \u2014 a per-entity match key plus a persisted connector link keeps Pimcore and Salesforce in step, so re-runs update instead of duplicating.<\/li>\n\n\n\n<li><strong>Custom fields, both sides<\/strong> \u2014 type a Salesforce API name (e.g. <code>Brand__c<\/code>) or a new Pimcore field and the connector wires it up.<\/li>\n\n\n\n<li><strong>Granular ACL<\/strong> \u2014 nine permission keys under a &#8220;Salesforce Connector&#8221; category, enforced fail-closed on every route, plus a per-job &#8220;Started by&#8221; audit trail.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Connecting the Pimcore 12 Salesforce Connector to Salesforce<\/h2>\n\n\n\n<p>The connector talks to Salesforce over the <strong>Salesforce REST API<\/strong> using OAuth 2.0 with the <strong>Client Credentials Flow<\/strong>. Authentication is done through a Salesforce <strong>External Client App<\/strong>, so no admin user password is ever shared \u2014 a designated <strong>Run As<\/strong> user drives every call.<\/p>\n\n\n\n<p>Inside Salesforce, create an External Client App, enable the <strong>Client Credentials Flow<\/strong>, and assign a <strong>Run As<\/strong> user. Salesforce then gives you two values:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Consumer Key<\/strong> \u2014 used as the <code>client_id<\/code><\/li>\n\n\n\n<li><strong>Consumer Secret<\/strong> \u2014 used as the <code>client_secret<\/code><\/li>\n<\/ul>\n\n\n\n<p>Together with your <strong>My Domain URL<\/strong> (<code>https:\/\/&lt;my-domain&gt;.my.salesforce.com<\/code>), that&#8217;s all you need from the Salesforce side.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"602\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforeceapikey-1200x602.webp\" alt=\"apikey\" class=\"wp-image-552601\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforeceapikey-1200x602.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforeceapikey-300x150.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforeceapikey-250x125.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforeceapikey-768x385.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforeceapikey.webp 1292w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Setting Up the Pimcore 12 Salesforce Connector in Studio<\/h2>\n\n\n\n<p>In Pimcore, open <strong>Salesforce Connector \u2192 Credentials<\/strong>. Then click <strong>Add credential<\/strong> and enter your <strong>Name<\/strong>, <strong>Host<\/strong> (your My Domain URL), <strong>Consumer Key<\/strong>, <strong>Consumer Secret<\/strong>, and <strong>API version<\/strong> (e.g. <code>v60.0<\/code>). Next, click <strong>Test connection<\/strong>.<\/p>\n\n\n\n<p>The connector then performs a real OAuth handshake and calls Salesforce live, so you get instant confirmation that everything is wired up. The secret is masked afterwards, showing only the last few characters.<\/p>\n\n\n\n<p>You can store multiple credential profiles and mark one as <strong>active<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"602\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/apikeylist-1200x602.webp\" alt=\"apikey list\" class=\"wp-image-552603\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/apikeylist-1200x602.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/apikeylist-300x150.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/apikeylist-250x125.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/apikeylist-768x385.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/apikeylist.webp 1292w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Object Mapping: the Connector Adapts to Your Data Model<\/h2>\n\n\n\n<p>Most connectors force you into fixed class names. This one, however, treats &#8220;which Pimcore class is a Salesforce Account?&#8221; as a simple setting.<\/p>\n\n\n\n<p>On the <strong>Object Mapping<\/strong> screen, you point each Salesforce entity (Product, Account, Contact, Lead, Opportunity) at whatever classes your team already uses. So the connector adapts to your data model, instead of the other way around.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"602\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/objecttmapping-1200x602.webp\" alt=\"salesforece object mapping\" class=\"wp-image-552605\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/objecttmapping-1200x602.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/objecttmapping-300x150.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/objecttmapping-250x125.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/objecttmapping-768x385.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/objecttmapping.webp 1292w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>It comes pre-configured \u2014 the installer seeds lean <code>WkSalesforce*<\/code> classes and the mapping \u2014 so the Pimcore 12 Salesforce Connector works out of the box. Also, you can repoint it any time.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Field Mapping<\/h3>\n\n\n\n<p>Beyond the class level, the <strong>Field Mapping<\/strong> screen lets you line up individual fields \u2014 Pimcore field on one side, Salesforce field on the other. One shared map drives <strong>both<\/strong> import and export, so you configure it once. Only the fields you map are synced, and a per-entity <strong>match key<\/strong> is used to find-or-create records.<\/p>\n\n\n\n<p>Both columns let you <em>pick<\/em> a known field or <em>type<\/em> a custom name. Type a Salesforce API name like <code>Brand__c<\/code> and it&#8217;s sent as-is; type a new Pimcore field and saving the mapping auto-creates it on the class as a text field. Defaults ship with the connector, so an unconfigured install still runs.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"602\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/fieldmappingg-1200x602.webp\" alt=\"field mapping\" class=\"wp-image-552607\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/fieldmappingg-1200x602.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/fieldmappingg-300x150.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/fieldmappingg-250x125.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/fieldmappingg-768x385.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/fieldmappingg.webp 1292w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The Entities It Syncs<\/h2>\n\n\n\n<p>The connector maps the objects at the heart of a Salesforce org, each to a Pimcore class you control:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Salesforce<\/th><th>Pimcore (default)<\/th><th>Match key<\/th><\/tr><\/thead><tbody><tr><td><code>Product2<\/code> + <code>PricebookEntry<\/code><\/td><td><code>WkSalesforceProduct<\/code><\/td><td><code>sku<\/code> \u2194 <code>ProductCode<\/code><\/td><\/tr><tr><td><code>Account<\/code><\/td><td><code>WkSalesforceAccount<\/code><\/td><td><code>customerNumber<\/code> \u2194 <code>AccountNumber<\/code><\/td><\/tr><tr><td><code>Contact<\/code><\/td><td><code>WkSalesforceContact<\/code><\/td><td><code>email<\/code> \u2194 <code>Email<\/code><\/td><\/tr><tr><td><code>Lead<\/code><\/td><td><code>WkSalesforceLead<\/code><\/td><td><code>email<\/code> \u2194 <code>Email<\/code><\/td><\/tr><tr><td><code>Opportunity<\/code><\/td><td><code>WkSalesforceOpportunity<\/code><\/td><td><code>name<\/code> \u2194 <code>Name<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Products are a little special: <code>Product2<\/code> has no <code>UnitPrice<\/code> column, so the connector reads and writes the price on the Standard <strong>PricebookEntry<\/strong> automatically. Sensible create defaults are applied where Salesforce requires them \u2014 for example a new Lead gets <code>Company = \"Pimcore Export\"<\/code>, and a new Opportunity gets <code>StageName = \"Prospecting\"<\/code> with a close date 30 days out.<\/p>\n\n\n\n<p>With your mapping saved, open <strong>Export<\/strong> and pick an entity \u2014 say <strong>Product<\/strong>. Then pick the connection and click <strong>Start<\/strong>. The connector then pushes your records out via the Salesforce REST API, with the fields you mapped.<\/p>\n\n\n\n<p>Exports are safe to re-run. Instead of duplicating, the connector updates what already exists. It resolves create-vs-update from a persisted connector link first, then falls back to a remote key match (e.g. <code>ProductCode<\/code>), and only then creates \u2014 so the same Pimcore object always lands on the same Salesforce record. If a record was deleted in Salesforce after its mapping was stored, the connector self-heals on the next run and recreates it. Sometimes a record can&#8217;t be exported. In that case, it&#8217;s flagged as a clear warning that tells you exactly what to fix.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"602\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceexportpro-1200x602.webp\" alt=\"exportproduct\" class=\"wp-image-552610\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceexportpro-1200x602.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceexportpro-300x150.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceexportpro-250x125.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceexportpro-768x385.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceexportpro.webp 1292w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Importing from Salesforce<\/h2>\n\n\n\n<p>Already have a live Salesforce org? Then import it into Pimcore in a few clicks. In fact, it&#8217;s the fastest way to onboard your data. Import is also additive.<\/p>\n\n\n\n<p>So each run creates what&#8217;s missing and updates what exists, matching each Salesforce record back to Pimcore by the entity&#8217;s key. As a result, you can bootstrap once and re-run any time without duplicates.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"602\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceimportproduct-1200x602.webp\" alt=\"product\" class=\"wp-image-552612\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceimportproduct-1200x602.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceimportproduct-300x150.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceimportproduct-250x125.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceimportproduct-768x385.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforceimportproduct.webp 1292w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"602\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/accuntimport-1200x602.webp\" alt=\"accountimport\" class=\"wp-image-552614\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/accuntimport-1200x602.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/accuntimport-300x150.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/accuntimport-250x125.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/accuntimport-768x385.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/accuntimport.webp 1292w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Because import and export stay linked, the workflow is simple. First, import to seed Pimcore. Then enrich your content there. Finally, export it back.<\/p>\n\n\n\n<p>As a result, every change lands on the original Salesforce record.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Runs as a Background Job<\/h2>\n\n\n\n<p>Every import and export dispatched from Studio runs on a dedicated Messenger queue, drained by a Supervisor-managed worker. So a large sync never blocks the browser or times out a web request.<\/p>\n\n\n\n<p>You watch each run on a live execution view \u2014 status, read \/ created \/ updated counts, structured errors and warnings, and a one-click <strong>Stop<\/strong>. Every job also records the authenticated Studio user that started it, so there&#8217;s a clear &#8220;Started by&#8221; audit trail.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Permissions &amp; Access Control<\/h2>\n\n\n\n<p>The connector ships a granular permission model, enforced fail-closed on every route \u2014 an ungranted action returns 403. Nine keys under the <strong>&#8220;Salesforce Connector&#8221;<\/strong> category let you split <em>view<\/em>, <em>manage<\/em>, <em>test<\/em>, <em>import<\/em>, <em>export<\/em>, and <em>stop<\/em> across your team.<\/p>\n\n\n\n<p>Grant them in Pimcore <strong>Settings \u2192 Users \/ Roles \u2192 Permissions<\/strong>, ideally on a role. The Studio UI reads your effective grants and shows or hides each control to match exactly what the backend will allow.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"602\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/aclsalesforce-1200x602.webp\" alt=\"acl\" class=\"wp-image-552617\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/aclsalesforce-1200x602.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/aclsalesforce-300x150.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/aclsalesforce-250x125.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/aclsalesforce-768x385.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/aclsalesforce.webp 1292w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Try the Pimcore 12 Salesforce Connector<\/h2>\n\n\n\n<p>Want to see it in action? Then try the live demo. It gives you a Pimcore 12 Studio environment with the connector already installed and connected to a Salesforce org.<\/p>\n\n\n\n<p>So you can map entities and run a sync without setting anything up. Finally, when you&#8217;re ready to roll it out, grab it from the <a href=\"https:\/\/store.webkul.com\/\">Webkul Store<\/a>.<\/p>\n\n\n\n<p>Your purchase includes the bundle, documentation, and support.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction The Pimcore 12 Salesforce Connector keeps your catalog and CRM data in sync between Pimcore and Salesforce (Sales \/ Service Cloud). It syncs products, accounts, contacts, leads, and opportunities automatically, in both directions. Moreover, every sync runs as a background job inside Pimcore Studio. As a result, keeping your product data and CRM records <a href=\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":778,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-552594","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Pimcore &amp; Salesforce CRM Sync Connector - Webkul Blog<\/title>\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\/pimcore-salesforce-crm-sync-connector\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pimcore &amp; Salesforce CRM Sync Connector - Webkul Blog\" \/>\n<meta property=\"og:description\" content=\"Introduction The Pimcore 12 Salesforce Connector keeps your catalog and CRM data in sync between Pimcore and Salesforce (Sales \/ Service Cloud). It syncs products, accounts, contacts, leads, and opportunities automatically, in both directions. Moreover, every sync runs as a background job inside Pimcore Studio. As a result, keeping your product data and CRM records [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/\" \/>\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-09-01T05:43:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-01T05:43:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-1200x602.webp\" \/>\n<meta name=\"author\" content=\"ranjan.bagisto322\" \/>\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=\"ranjan.bagisto322\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/\"},\"author\":{\"name\":\"ranjan.bagisto322\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/3b8a2305cdf9a9944115e70a338e3bdd\"},\"headline\":\"Pimcore &amp; Salesforce CRM Sync Connector\",\"datePublished\":\"2026-09-01T05:43:09+00:00\",\"dateModified\":\"2026-09-01T05:43:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/\"},\"wordCount\":1466,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-1200x602.webp\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/\",\"url\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/\",\"name\":\"Pimcore &amp; Salesforce CRM Sync Connector - Webkul Blog\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-1200x602.webp\",\"datePublished\":\"2026-09-01T05:43:09+00:00\",\"dateModified\":\"2026-09-01T05:43:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#primaryimage\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu.webp\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu.webp\",\"width\":1292,\"height\":648},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pimcore &amp; Salesforce CRM Sync Connector\"}]},{\"@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\/3b8a2305cdf9a9944115e70a338e3bdd\",\"name\":\"ranjan.bagisto322\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/18a253ed0fb3e3ad904c221818573f346d0198eefac05e023faf4abf548f89ee?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\/18a253ed0fb3e3ad904c221818573f346d0198eefac05e023faf4abf548f89ee?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"ranjan.bagisto322\"},\"url\":\"https:\/\/webkul.com\/blog\/author\/ranjan-bagisto322\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pimcore &amp; Salesforce CRM Sync Connector - Webkul Blog","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\/pimcore-salesforce-crm-sync-connector\/","og_locale":"en_US","og_type":"article","og_title":"Pimcore &amp; Salesforce CRM Sync Connector - Webkul Blog","og_description":"Introduction The Pimcore 12 Salesforce Connector keeps your catalog and CRM data in sync between Pimcore and Salesforce (Sales \/ Service Cloud). It syncs products, accounts, contacts, leads, and opportunities automatically, in both directions. Moreover, every sync runs as a background job inside Pimcore Studio. As a result, keeping your product data and CRM records [...]","og_url":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2026-09-01T05:43:09+00:00","article_modified_time":"2026-09-01T05:43:19+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-1200x602.webp","type":"","width":"","height":""}],"author":"ranjan.bagisto322","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"ranjan.bagisto322","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/"},"author":{"name":"ranjan.bagisto322","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/3b8a2305cdf9a9944115e70a338e3bdd"},"headline":"Pimcore &amp; Salesforce CRM Sync Connector","datePublished":"2026-09-01T05:43:09+00:00","dateModified":"2026-09-01T05:43:19+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/"},"wordCount":1466,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-1200x602.webp","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/","url":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/","name":"Pimcore &amp; Salesforce CRM Sync Connector - Webkul Blog","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu-1200x602.webp","datePublished":"2026-09-01T05:43:09+00:00","dateModified":"2026-09-01T05:43:19+00:00","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu.webp","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/salesforcemenu.webp","width":1292,"height":648},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/pimcore-salesforce-crm-sync-connector\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Pimcore &amp; Salesforce CRM Sync Connector"}]},{"@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\/3b8a2305cdf9a9944115e70a338e3bdd","name":"ranjan.bagisto322","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/18a253ed0fb3e3ad904c221818573f346d0198eefac05e023faf4abf548f89ee?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\/18a253ed0fb3e3ad904c221818573f346d0198eefac05e023faf4abf548f89ee?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"ranjan.bagisto322"},"url":"https:\/\/webkul.com\/blog\/author\/ranjan-bagisto322\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/552594","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\/778"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=552594"}],"version-history":[{"count":17,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/552594\/revisions"}],"predecessor-version":[{"id":552748,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/552594\/revisions\/552748"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=552594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=552594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=552594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}