---
schema_version: "1"
id: 14457a49877969c36d8f2944d9ac77484e1770193f8e426e6cab17344d658324
title: Set Up Point of Sale Connector for Salesforce Core CRM Connector
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/commerce/264-0-0/rt_adv_config_sf_int_sfsc_connector.md
canonical_url: https://help.salesforce.com/s/articleView?id=commerce.rt_adv_config_sf_int_sfsc_connector.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 97a9851244d8197a39c224534a4265ec07e875df132fb2ca5e1702ad51f48f39
description: Use REST APIs to integrate POS with the Salesforce Core CRM Connector for clienteling purposes. Create a Salesforce Connected App in Salesforce for Point of Sale to access the requisite APIs. The primary objects of interaction are Accounts and Notes. POS provides capabilities like search, create, and update for customer accounts that are maintained in Salesforce Core CRM.
products:
  - Commerce
release: "264"
---
# Set Up Point of Sale Connector for Salesforce Core CRM Connector

Use REST APIs to integrate POS with the Salesforce Core CRM Connector for clienteling purposes. Create a Salesforce Connected App in Salesforce for Point of Sale to access the requisite APIs. The primary objects of interaction are Accounts and Notes. POS provides capabilities like search, create, and update for customer accounts that are maintained in Salesforce Core CRM.

Customer must have a Salesforce Core product that has access to Person Account objects. This object is available with core products, including but not limited to Service, Sales, Field Service, Order Management, and other industry clouds. Work with your Salesforce Account Executive to confirm your access to the right supporting Salesforce Product to use as your POS CRM source.

Refer to [POS Access List - URLs and IP Addresses](https://help.salesforce.com/s/articleView?id=commerce.rt_adv_config_3p_int_erp_pos_access_list.htm&release=264.0.0&type=5 "To enable POS and cloud services to interact with external, third-party services, allowlist specific URLs and IP addresses within the merchant's firewall. Ensure necessary communication for Adyen Payments, Elavon Payments, and other connectors by allowlisting URLs configured on CMS and product or order systems. The in-store IT team handles store firewall and POS app URLs, while the corporate IT team manages backend outbound NAT gateway IPs for connectors.") for a list of URLs and IP addresses to be allowlisted. This is to turn on the necessary communication. Turn on the Person Accounts feature in your Salesforce environment. Point of Sale's API connectors use queries for "Person Account" account types. It won't function if not turned on.

1. In CMS, go to **Integrations** | **CRM Configuration**.
2. Fill out the fields .
    
         
    | Field | Section | Field Type | Required | Description | Example |
    | --- | --- | --- | --- | --- | --- |
    | URL base | General Settings | Text | Yes | The URL base of your Salesforce Core CRM. | https://urlbase.com |
    | API Version | General Settings | Text | Yes | The API version of your Salesforce Core CRM. | v51.0 |
    | Username | User | Text | Yes | The username of your Salesforce Core CRM account. | username123 |
    | Password | User | Text | Yes | The password of your Salesforce Core CRM account. | password123 |
    | Client ID | Client | Text | Yes | The client ID of your Salesforce Core CRM. | myClientId |
    | Client Secret | Client | Text | Yes | The client secret of your Salesforce Core CRM. | myClientSecret |
    | Alternate Customer Identifier | General Settings | Text | No | The Custom Field name in Salesforce Core CRM that identifies the corresponding customer. |   |
3. Click **SAVE** in the upper right-hand of the screen.
    
    ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/images/icon_note.png)
    
    Note Custom Account and Custom Account Data configurations are automatically updated to Salesforce Core CRM Connector specific Account classes in the Merchant Configuration (**CMS > Advanced > Merchant Configuration > Checkout Settings**) when the Salesforce Core CRM Configuration is created for the first time.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/images/icon_note.png)

Note Using SFCC as a CRM with SFOM for orders may cause issues because their customer identifiers don’t align. SFCC’s customer ID isn’t available in SFOM, but the Salesforce Core CRM customer ID is visible in SFOM.

## POS Flows

- Search Customer/Account
- Fetch Customer Profile
- Sign up new Customers
- Update Customer Profile
- Fetch Notes
- Create New Notes
- Update Notes
- Delete Note

## Reference Architecture

Understand the architecture of the integration between the Point of Sale Cloud, Salesforce Core CRM Connector, and app.

![A block diagram outlines integration between Point of Sale cloud, Salesforce Core CRM Connector, and the app](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/retail/images/rt_adv_config_sf_int_sfsc_connector_arch.png)

## POS UI - Salesforce Core CRM Mapping

Get details of the mapping between Point of Sale and Salesforce Core CRM objects.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
          <colgroup>
            <col>
            <col>
            <col>
          </colgroup>
          <thead class="slds-text-title_caps ">
            <tr class="">
              <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d224469e398">POS Screens</th>
              <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d224469e401">Point of Sale Object</th>
              <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d224469e404">Salesforce Core CRM Objects</th>
            </tr>
          </thead>
          <tbody>
            <tr class="">
              <td data-label="POS Screens" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e398 ">
                <ul>
                  <li>Customer Search</li>

                  <li>Clienteling Screen/Customer Profile</li>

                  <li>Create New Customer SignUp</li>

                  <li>Update Customer Profile</li>

                  <li>Checkout</li>

                </ul>
              </td>

              <td data-label="Point of Sale Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e401 ">Customer</td>

              <td data-label="Salesforce Core CRM Objects" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e404 ">Account</td>

            </tr>
            <tr class="">
              <td data-label="POS Screens" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e398 ">
                <ul>
                  <li>Clienteling - Add, Update, Delete notes</li>

                </ul>
              </td>

              <td data-label="Point of Sale Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e401 ">CustomerNote</td>

              <td data-label="Salesforce Core CRM Objects" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e404 ">ContentDocument, ContentDocumentLink, ContentNote</td>

            </tr>
          </tbody>
        </table>

## Salesforce Core CRM Integration Details

See the connected APP creation steps.

[Salesforce Set Up the Connected App for Salesforce Core CRM Connector](https://help.salesforce.com/s/articleView?id=commerce.rt_adv_config_sf_int_sfsc_connector.htm&release=264.0.0&type=5 "Use REST APIs to integrate POS with the Salesforce Core CRM Connector for clienteling purposes. Create a Salesforce Connected App in Salesforce for Point of Sale to access the requisite APIs. The primary objects of interaction are Accounts and Notes. POS provides capabilities like search, create, and update for customer accounts that are maintained in Salesforce Core CRM.")

## Salesforce Core CRM Connector APIs

Get details of the Salesforce Core CRM Connector APIs.

### Authorization: Session ID based Authorization

API: /services/oauth2/token

grant\_type:password

[https://developer.salesforce.com/docs/atlas.en-us.api\_rest.meta/api\_rest/quickstart\_oauth.htm](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/quickstart_oauth.htm)

### Customer Search

API:

**Parameterized Search**: /services/data/v<>/parameterizedSearch

**SOQL Base Search:** /services/data/v<>/query?q=

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
            <colgroup>
              <col>
              <col>
            </colgroup>
            <tbody>
              <tr class="">
                <td class="slds-cell-wrap" style="vertical-align:top;"><strong>SObject: Account</strong></td>

                <td class="slds-cell-wrap" style="vertical-align:top;">
                  <p>When using Person Accounts, an account of the Person Account record type represents an
                    individual shopper. When not using Person Accounts, a standard account and contact together
                    represent an individual shopper. A business account shopper always has a standard account
                    and contact.</p>
                  <p style="margin-bottom:0;"><a href="https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_account.htm" target="_blank">https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_account.htm</a></p>
                </td>

              </tr>
              <tr class="">
                <td class="slds-cell-wrap" style="vertical-align:top;"><strong>HTTP Method</strong></td>

                <td class="slds-cell-wrap" style="vertical-align:top;">GET</td>

              </tr>
              <tr class="">
                <td class="slds-cell-wrap" style="vertical-align:top;"><strong>API Reference</strong></td>

                <td class="slds-cell-wrap" style="vertical-align:top;">
                  <p><a href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_query.htm" target="_blank">https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_query.htm</a></p>
                  <p style="margin-bottom:0;"><a href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_search_parameterized.htm" target="_blank">https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_search_parameterized.htm</a></p>
                </td>

              </tr>
            </tbody>
          </table>

### Fetch Customer Profile

API:

**Get Account By ID:** /services/data/v<>/sobjects/Account/<AccountID>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><strong>HTTP Method</strong></td><td class="slds-cell-wrap" style="vertical-align:top;">GET</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><strong>Reference</strong></td><td class="slds-cell-wrap" style="vertical-align:top;"><a href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_retrieve.htm" target="_blank">https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_retrieve.htm</a></td></tr></tbody></table>

### Update Customer Profile

API:

**Update Account:** /services/data/v<>/sobjects/Account/<AccountID>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><strong>HTTP Method</strong></td><td class="slds-cell-wrap" style="vertical-align:top;">PATCH</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><strong>Reference</strong></td><td class="slds-cell-wrap" style="vertical-align:top;"><a href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_update_fields.htm" target="_blank">https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_update_fields.htm</a></td></tr></tbody></table>

### Get Notes List

API:

**SOQL based retrieve notes:** /services/data/v<>/query?q=

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
            <colgroup>
              <col>
              <col>
            </colgroup>
            <tbody>
              <tr class="">
                <td class="slds-cell-wrap" style="vertical-align:top;"><strong>HTTP Method</strong></td>

                <td class="slds-cell-wrap" style="vertical-align:top;">GET</td>

              </tr>
              <tr class="">
                <td class="slds-cell-wrap" style="vertical-align:top;"><strong>SOQL</strong></td>

                <td class="slds-cell-wrap" style="vertical-align:top;">
                  <p>SELECT contentDocument.Id, </p>
                  <p>contentDocument.Title, contentDocument.CreatedDate, </p>
                  <p>contentDocument.LastModifiedDate, contentDocument.latestPublishedVersion.versionData </p>
                  <p style="margin-bottom:0;">from ContentDocumentLink where linkedEntityId = \'&lt;AccountID&gt;\' and
                    contentDocument.fileType=\'SNOTE\' order by contentDocument.LastModifiedDate desc";</p>
                </td>

              </tr>
              <tr class="">
                <td class="slds-cell-wrap" style="vertical-align:top;"><strong>Reference</strong></td>

                <td class="slds-cell-wrap" style="vertical-align:top;"><a href="https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_contentdocumentlink.htm" target="_blank">https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_contentdocumentlink.htm</a></td>

              </tr>
            </tbody>
          </table>

### Get Notes Test

API: /services/data/v<>/sobjects/sObject/id/<latest published versionData>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><strong>HTTP Method</strong></td><td class="slds-cell-wrap" style="vertical-align:top;">GET</td></tr></tbody></table>

### Update Note

API: /services/data/v<>/sobjects/ContentNote/<contentNoteId, i.e. contentDocument.id>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><strong>HTTP Method</strong></td><td class="slds-cell-wrap" style="vertical-align:top;">PATCH</td></tr></tbody></table>

### Delete Note

API: /services/data/v<>/sobjects/ContentNote/<contentNoteId, i.e.contentDocument.id>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><strong>HTTP Method</strong></td><td class="slds-cell-wrap" style="vertical-align:top;">DELETES</td></tr></tbody></table>

### Create Note & Create Document Link with Account/Customer

API: /services/data/v<>/sobjects/ContentNote

API: %s/services/data/v<>/sobjects/ContentDocumentLink

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><strong>HTTP Method</strong></td><td class="slds-cell-wrap" style="vertical-align:top;">POST for both APIs</td></tr></tbody></table>

## Object-Attribute Mapping

Get details of the object to attribute mapping.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
          <colgroup>
            <col>
            <col>
          </colgroup>
          <thead class="slds-text-title_caps ">
            <tr class="">
              <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d224469e945">Point of Sale Customer Object</th>
              <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d224469e948">Salesforce Core CRM Account Object</th>
            </tr>
          </thead>
          <tbody>
            <tr class="">
              <td data-label="Point of Sale Customer Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e945 ">customerData.profile.firstName</td>

              <td data-label="Salesforce Core CRM Account Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e948 ">Account.FirstName</td>

            </tr>
            <tr class="">
              <td data-label="Point of Sale Customer Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e945 ">customerData.profile.lastName</td>

              <td data-label="Salesforce Core CRM Account Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e948 ">Account.LastName</td>

            </tr>
            <tr class="">
              <td data-label="Point of Sale Customer Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e945 ">customerData.profile.customerId</td>

              <td data-label="Salesforce Core CRM Account Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e948 ">Account.ID</td>

            </tr>
            <tr class="">
              <td data-label="Point of Sale Customer Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e945 ">customerData.profile.salutation</td>

              <td data-label="Salesforce Core CRM Account Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e948 ">Account.Salutation</td>

            </tr>
            <tr class="">
              <td data-label="Point of Sale Customer Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e945 ">customerData.profile.phoneMobile</td>

              <td data-label="Salesforce Core CRM Account Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e948 ">Account.Phone</td>

            </tr>
            <tr class="">
              <td data-label="Point of Sale Customer Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e945 ">customerData.profile.email</td>

              <td data-label="Salesforce Core CRM Account Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e948 ">Account.PersonEmail</td>

            </tr>
            <tr class="">
              <td data-label="Point of Sale Customer Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e945 ">customerData.profile.address</td>

              <td data-label="Salesforce Core CRM Account Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e948 ">Account.BillingAddress</td>

            </tr>
            <tr class="">
              <td data-label="Point of Sale Customer Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e945 ">customerData.profile.addressList[1]</td>

              <td data-label="Salesforce Core CRM Account Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e948 ">Account.ShippingAddress</td>

            </tr>
            <tr class="">
              <td data-label="Point of Sale Customer Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e945 ">customerData.consents.newsLetterSignUp</td>

              <td data-label="Salesforce Core CRM Account Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e948 ">Account.PersonHasOptedOutOfEmail</td>

            </tr>
            <tr class="">
              <td data-label="Point of Sale Customer Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e945 ">
                <p>Available POS Clienteling Fields can be mapped to and from custom fields on Salesforce Core CRM side if
                  required.</p>
                <p>Example:</p>
                <ul>
                  <li>customerData.profile.alternateCustomerID</li>

                  <li>customerData.profile.birthday</li>

                  <li>customerData.profile.birthmonth</li>

                  <li>customerData.consents.newsLetterSignUp</li>

                  <li>customerData.profile.CustomerGroup</li>

                  <li>customerData.storeId</li>

                  <li>customerData.associateId</li>

                  <li>etc.</li>

                </ul>
              </td>

              <td data-label="Salesforce Core CRM Account Object" class="slds-cell-wrap" style="vertical-align:top;" headers="d224469e948 ">
                <p>If POS Clienteling or User Profile field needs to be mapped to or from Merchant defined
                  custom field in SFSC, then that shall be called out and configured. Merchant should provide
                  exact custom field which they have already defined in SFSC Person Account object.</p>
                <p>Example:</p>
                <ul>
                  <li>customerData.profile.alternateCustomerID can be mapped to/from
                    Account.Customer_Number__c on Salesforce Core CRM side.</li>

                  <li>customerData.profile.birthday can be mapped to/from Account.BirthDay__pc on SFSC
                    side.</li>

                  <li>customerData.profile.birthday can be mapped to/from Account.BirthMonth__pc on SFSC
                    side.</li>

                  <li>customerData.consents.newsLetterSignUp can be mapped to/from Account.POSEmailOptIn__pc
                    on Salesforce Core CRM side.</li>

                  <li>customerData.profile.CustomerGroup can be mapped to/from Account.CustomerGroup__pc on
                    Salesforce Core CRM side.</li>

                  <li>customerData.storeId can be mapped to/from Account.Store_id__pc on Salesforce Core CRM side.</li>

                  <li>customerData.associateId can be mapped to/from Account.Opt_in_EmployeeID__c on SFSC
                    side.</li>

                  <li>etc.</li>

                </ul>
              </td>

            </tr>
          </tbody>
        </table>

 
| Point of Sale CustomerNote Object | Salesforce Core CRM Objects |
| --- | --- |
| customerNote.noteId | ContentDocument.Id |
| customerNote.title | ContentDocument.Title |
| NA | ContentDocument.CreatedDate |
| customerNote.updateTimeStamp | ContentDocument.LastModifiedDate |
| NA | ContentDocument.LatestPublishedVersion |
| customerNote.title | ContentNote.title |
| customerNote.noteText | ContentNote.Content |
| customerData.profile.customerId | ContentDocumentLink.LinkedEntityId |
| From SFSC - ContentNote.Id | ContentDocumentLink.ContentDocumentId |
| “V” | contentDocumentLink.ShareType |