Skip to main content

How to Integrate Salesforce Commerce Cloud With AfterShip Feed

Connect Salesforce Commerce Cloud to AfterShip Feed to sync products and orders to TikTok Shop. Configure API credentials and OCAPI settings step by step.

Plans:

Enterprise

Platforms:

All platforms

Overview

Unlock the potential of integrating AfterShip Feed with Salesforce Commerce Cloud. The integration offers the advantage of automating the process of product listings while seamlessly synchronizing order data with TikTok Shop.

What you’ll learn

In this article, we will show you:

Steps to integrate Salesforce Commerce Cloud with AfterShip Feed

Step 1: Generate a new API Client ID

  1. Go to the ** Account Manager **settings

  2. Click on the API Client and select Add API Client option

  3. Fill in the fields mentioned under the General Settings

⚠️

Note: Let the JWT and OpenID sections stay as it is

  1. Choose the client_secret_basic option from the Token Endpoint Auth Method menu and select JWT from the Access Token Format

  2. Click Save

Create a Business Manager User

⚠️

Noted: you should assign the Business Manager Administrator role to the user

  1. Follow the steps given in this article create business manager users.

  2. After create the Business manager user, you can find the password expiration time in Account Information → Password expires in

Recommendation: change user password every 90 days

Step 2: Configure OCAPI settings

Go to the SFCC Business Manager > Administration > Site Development > Open Commerce API Settings

Shop API setting

  • Set the Select Type field to Shop by default. Change the Select Context field to Global

  • Paste the following JSON, replace the API version and Client ID. We support API versions 19.5 and above. Replace CLIENT_ID with the API Client ID generated from the API client setup in the previous step (this should look something like "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"), then hit the Save button

{  "_v": "SHOP_API_VERSION",  "clients": [  {  "client_id": "YOUR_CLIENT_ID",  "resources": [  {  "resource_id": "/order_search",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/customers/*",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/categories/(*)",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/product_search",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/products/(*)",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/baskets",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/baskets/*",  "methods": [  "delete",  "get",  "patch"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/baskets/*/customer",  "methods": [  "put"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/baskets/*/notes",  "methods": [  "get",  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/baskets/*/payment_instruments",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/baskets/*/payment_methods",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/baskets/*/price_adjustments",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/baskets/*/price_adjustments/*",  "methods": [  "delete",  "patch"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/baskets/*/shipments/*/shipping_method",  "methods": [  "put"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/baskets/*/shipments/*/shipping_methods",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/orders",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/orders/*",  "methods": [  "get",  "patch",  "put"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/orders/*/notes",  "methods": [  "get",  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/orders/*/notes/*",  "methods": [  "delete"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/site",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/stores",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/stores/(*)",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/stores/*",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/orders/*/payment_instruments",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/orders/*/payment_instruments/*",  "methods": [  "delete",  "patch"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  }  ]  }  ]
}

Data API setting

  • Set the Select Type field to Data by default. Change the Select Context field to Global

  • Paste the following JSON, replace the API version and Client ID. We support API versions 19.5 and above. Replace CLIENT_ID with the API Client ID generated from the API client setup in the previous step (this should look something like "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"), then hit the Save button.

{  "_v": "DATA_API_VERSION",  "clients": [  {  "client_id": "YOUR_CLIENT_ID",  "resources": [  {  "resource_id": "/category_search",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/catalog_search",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/catalogs",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/catalogs/*",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/catalogs/*/categories",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/product_search",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/products/*/variations",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/products/*/variation_attributes",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/site_search",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/sites",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/sites/*",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/sites/*/gift_certificates",  "methods": [  "get",  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/sites/*/gift_certificates/*",  "methods": [  "delete",  "get",  "patch"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/sites/*/orders/*/payment_status",  "methods": [  "put"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/sites/*/orders/*/shipping_status",  "methods": [  "put"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/sites/*/orders/*/status",  "methods": [  "put"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/inventory_list_search",  "methods": [  "post"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/inventory_lists",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/inventory_lists/*",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/inventory_lists/*/product_inventory_records",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/inventory_lists/*/product_inventory_records/*",  "methods": [  "get"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/sites/*/orders/*/external_status",  "methods": [  "put"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  },  {  "resource_id": "/sites/*/orders/*/shipments/*/shipping_address",  "methods": [  "put"  ],  "read_attributes": "(**)",  "write_attributes": "(**)"  }  ]  }  ]
}

Refer to the SFCC Documentation and search for OCAPI Settings for additional help.

Step 3: Provide additional information for successful integration

  1. Go to Apps in the AfterShip Feed admin

  2. Click View more apps, and you will be redirected to the AfterShip Feed integration page.

  1. Find Salesforce Commerce Cloud and select it to land on the detailed integration page

  2. Select AfterShip Feed from the dropdown and then click Install app

  1. Select the right organization (online store) if you have multiple organizations configured in AfterShip Feed (Optional) for which you are establishing this integration

  2. To install the Salesforce Commerce Cloud app, you must complete the required details to authenticate the connection

7. On the Authorization window, Click Install app

FAQ

Q1: How to deal with the error "blocked by Cloudflare" ?

Your store does not allow AfterShop API request from Cloudflare. Please add the following IPs to your whitelist

35.188.86.165
35.239.56.190
35.221.154.146 

Q2: How to deal with the error "Lack of permission" ?

Please refer to Configure OCAPI settings and check Shop/Data API permissions configured in OCAPI settings on SFCC.

Q3: How to find Instance URL ?

The Instance URL is the unique base address of your SFCC Business Manager instance. It is crucial to enter only the base URL without any additional paths. Steps to find your Instance URL

  1. Log in to your account.

  2. Once logged in, look at the URL in your browser's address bar.

  3. Copy only the main domain part, which typically looks like as following

https://<your-instance-name>.dx.commercecloud.salesforce.com

Q4: How to find Site ID?

The Site ID is a unique identifier for your site in SFCC. It is often confused with the Site Name, which is a descriptive label. You must use the Site ID. Steps to find your Site ID

  1. In the SFCC Business Manager, navigate to:

    Administration > Sites > Manage Sites

  2. On the "Manage Sites" page, you will see a list of your available sites.

  3. Locate the site you wish to connect and find its corresponding value in the "ID" column.

Did this answer your question?