> For the complete documentation index, see [llms.txt](https://docs.shopperos.stackline.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shopperos.stackline.com/fulfillment/marketplace-channels.md).

# Marketplace channels (Walmart, TikTok Shop)

Sell on Walmart Marketplace and TikTok Shop, and ship those orders with Amazon MCF from your Amazon inventory. The shopper buys and pays on the marketplace. ShopperOS picks up the order, Amazon ships it, and ShopperOS sends the tracking back to the marketplace. This page covers what is different for a marketplace. For the shared setup, see [Amazon MCF](/fulfillment/amazon-mcf.md).

## A marketplace order goes through ShopperOS to Amazon

A marketplace order moves from the marketplace, through ShopperOS, to Amazon, and the tracking goes back.

```mermaid
flowchart LR
    A["Shopper buys and pays on Walmart or TikTok Shop"] --> B["ShopperOS picks up the new order"]
    B --> C["ShopperOS finds the Amazon seller SKU of each item through its link"]
    C --> D["ShopperOS sends the order to Amazon MCF"]
    D --> E["Amazon ships it from your inventory"]
    E -->|The package ships| F["ShopperOS sends the carrier and the tracking number to the marketplace"]
```

*Each item needs a link to its Amazon seller SKU. Without a link, ShopperOS cannot send the item to Amazon.*

You follow each order in **Fulfillment → Orders**, the same as a storefront order. See [Fulfillment orders, cancellations and returns](/fulfillment/orders-cancellations-returns.md).

## The marketplace owns payment and shipping prices

The marketplace owns the payment and the shipping price. You own the fulfillment.

| Topic                     | Your storefront                                                       | Walmart and TikTok Shop                                             |
| ------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------- |
| Where the shopper pays    | Your Brandclub checkout.                                              | The marketplace.                                                    |
| Refunds in ShopperOS      | Yes.                                                                  | No. The order page shows **Paid on Walmart** or **Paid on TikTok**. |
| Shipping prices           | You set them in **Settings → Fulfillment**.                           | The marketplace sets them. You choose only the speeds offered.      |
| Amazon Prime delivery     | Available. See [Amazon Prime shipping](/fulfillment/amazon-prime.md). | Not available.                                                      |
| **Avoid Amazon delivery** | Your choice.                                                          | Always on for Walmart. Your choice for TikTok Shop.                 |
| Cancellation requests     | Not used.                                                             | Walmart requests arrive in **Fulfillment → Cancellations**.         |
| Returns                   | Start an Amazon MCF return from the order.                            | You grade TikTok Shop returns in **Fulfillment → Returns**.         |
| Delivery update           | ShopperOS marks the Shopify order delivered.                          | The marketplace gets tracking when the package ships.               |

## Before you start

Check these points before you connect a marketplace.

* Your Amazon account is connected. See [Amazon MCF, Step 1](/fulfillment/amazon-mcf.md#step-1-connect-your-amazon-account).
* Each product you sell on the marketplace has inventory in Amazon's network, with its own Amazon seller SKU.
* For Walmart: a person who can sign in to your Walmart Seller Center and approve access. Or your Walmart Marketplace API **Client ID** and **Client Secret**.
* For TikTok Shop: a person who can sign in to your TikTok Shop and approve access.

## Connect Walmart Marketplace

Connect a Walmart seller account in one of two ways. A seller account uses one way only. A seller that is connected with API keys cannot also connect with Walmart.

* [Connect with Walmart](#connect-with-walmart): you approve ShopperOS on Walmart's own page. You do not paste API keys.
* [Connect with API keys](#connect-with-api-keys): you enter the **Client ID** and **Client Secret** of your Walmart Marketplace API.

### Connect with Walmart

Approve ShopperOS on Walmart's page, and Walmart sends you back to ShopperOS.

Go to **Fulfillment → Channels → Sales channels**.

{% stepper %}
{% step %}

### Add a channel

Click **+ Add channel**. **Add Sales Channel** opens.
{% endstep %}

{% step %}

### Choose Walmart Marketplace

For **Channel Type**, choose **Walmart Marketplace**. The **Retailer** is assigned for you.
{% endstep %}

{% step %}

### Choose the Environment

Choose the **Environment**: **Production** for your live store.
{% endstep %}

{% step %}

### Go to Walmart

Click **Connect with Walmart**. Walmart opens in the same browser tab.
{% endstep %}

{% step %}

### Approve ShopperOS

Sign in to Walmart Seller Center, and approve ShopperOS. Finish within 10 minutes.
{% endstep %}

{% step %}

### Come back to ShopperOS

Walmart returns you to the **Sales channels** tab. The banner reads **Walmart seller connected through the App Store.**
{% endstep %}
{% endstepper %}

Done. The channel shows the seller name from Walmart, or the seller ID when Walmart does not send the name. Next, [route the channel to Amazon](#route-the-channel-to-amazon).

* The **Display Name** field is not used for this way. To rename the channel, click its name.
* To renew the connection of a seller connected this way, click **Connect with Walmart** again for that seller.

### Start from the Walmart App Store

You can also start from the ShopperOS app in the Walmart App Store. When you click its connect button, Walmart opens ShopperOS. Sign in if ShopperOS asks.

| You have              | ShopperOS does                                                                                  |
| --------------------- | ----------------------------------------------------------------------------------------------- |
| One project           | Opens its **Sales channels** tab, with **Walmart Marketplace** chosen in **Add Sales Channel**. |
| More than one project | Asks **Which project should this Walmart seller connect to?** Click the project.                |
| No project            | Opens the page to create one. See [Create a project](/getting-started/create-a-project.md).     |

Then continue from the **Choose the Environment** step of [Connect with Walmart](#connect-with-walmart).

### Connect with API keys

Paste the keys of your Walmart Marketplace API into the add dialog.

Go to **Fulfillment → Channels → Sales channels**.

{% stepper %}
{% step %}

### Start a new channel

Click **+ Add channel**. **Add Sales Channel** opens.
{% endstep %}

{% step %}

### Pick Walmart Marketplace

For **Channel Type**, choose **Walmart Marketplace**. The **Retailer** is assigned for you.
{% endstep %}

{% step %}

### Name the channel

Optionally, type a **Display Name**.
{% endstep %}

{% step %}

### Pick the Environment

Choose the **Environment**: **Production** for your live store.
{% endstep %}

{% step %}

### Enter the keys

Under **Or add the seller's own API keys**, enter your **Client ID** and **Client Secret**.
{% endstep %}

{% step %}

### Add the channel

Click **Add Channel**.
{% endstep %}
{% endstepper %}

Done. The channel appears in the table with the type **Walmart Marketplace · Marketplace**. Next, [route the channel to Amazon](#route-the-channel-to-amazon).

## Connect TikTok Shop

Approve ShopperOS in a TikTok window. The channel is added when TikTok confirms.

Go to **Fulfillment → Channels → Sales channels**.

{% stepper %}
{% step %}

### Click Add channel

Click **+ Add channel**. **Add Sales Channel** opens.
{% endstep %}

{% step %}

### Choose TikTok Shop

For **Channel Type**, choose **TikTok Shop**.
{% endstep %}

{% step %}

### Set the Environment

Choose the **Environment**: **Production** for your live shop.
{% endstep %}

{% step %}

### Open TikTok

Click **Connect TikTok Shop**. A TikTok popup window opens. If your browser blocks it, allow popups for ShopperOS, and click **Connect TikTok Shop** again.
{% endstep %}

{% step %}

### Approve access

Sign in to TikTok Shop, and approve access for ShopperOS.
{% endstep %}

{% step %}

### Wait for the confirmation

Wait for **TikTok Shop connected.** The dialog then closes.
{% endstep %}
{% endstepper %}

Done. The TikTok Shop channel is added. Next, [route the channel to Amazon](#route-the-channel-to-amazon).

## Route the channel to Amazon

A marketplace channel needs a route, the same as your storefront.

Go to **Fulfillment → Channels → Routing**.

{% stepper %}
{% step %}

### Add a route

Click **+ Add route**.
{% endstep %}

{% step %}

### Connect the two sides

Pick your **Fulfillment account** and the marketplace **Sales channel**, and click **Connect**. The route shows as a new row.
{% endstep %}

{% step %}

### Open the route settings

In the new row, click **…** → **Settings**. **Route Settings** opens.
{% endstep %}
{% endstepper %}

**Route Settings** for a marketplace has these differences:

* **Speeds offered at checkout** lists **Standard**, **Expedited**, and **Priority**. Unticked speeds are not quoted. At least one speed stays ticked.
* There are no shipping rates and no Amazon Prime setting.
* For Walmart, **Avoid Amazon delivery** shows **Enforced**. You cannot turn it off, here or in a product override.

**Fallback shipping speed** is used when the speed the shopper chose cannot be matched. For the other settings, see [Amazon MCF, Step 3](/fulfillment/amazon-mcf.md#step-3-route-each-channel-to-amazon).

Done. Orders from the marketplace now go to your Amazon account. Next, [link the marketplace products](#link-the-marketplace-products).

## Link the marketplace products

Link each marketplace listing to its Amazon seller SKU. Use **Auto-Link**, the **Linking** tab, or a CSV. See [Listings and inventory](/fulfillment/listings-and-inventory.md).

ShopperOS imports the products of each active channel once a day. The run starts at 10:00 UTC (2 AM Pacific in winter, 3 AM in summer). After you connect a new channel, import its products now:

1. On the **Sales channels** tab, click **…** → **Import** on the channel.
2. Click **Import** to confirm.

See [How listings stay current](/fulfillment/listings-and-inventory.md#how-listings-stay-current).

| Marketplace | The listing shows                               |
| ----------- | ----------------------------------------------- |
| Walmart     | Its **SKU** (your seller SKU) and its **WPID**. |
| TikTok Shop | Its **SKU** and its **SKU ID**.                 |

You can search by either one.

If Walmart archives a linked listing, ShopperOS marks the link as <mark style="color:red;">Link error</mark>. It suggests the live re-listing when it finds one. See [Fix a link to a listing the channel no longer sells](/fulfillment/listings-and-inventory.md#fix-a-link-to-a-listing-the-channel-no-longer-sells).

### Ship unlinked items yourself

A Walmart order can hold items with no link. Amazon ships the linked items. The order page then shows **Mixed Order — N item(s) not fulfilled by MCF**, with the SKUs. Ship those items yourself from the marketplace's seller center.

## Auto-handle cancellations

Choose who decides a Walmart request to cancel an entire order: ShopperOS or you. A Walmart shopper can ask to cancel an order. Amazon cannot cancel single items on an order it has accepted. So ShopperOS always denies a request for part of an order.

{% hint style="warning" %}
Walmart cancels an unanswered request by itself after about 48 hours. If you leave the toggle off, check **Cancellations** every day. See [Cancellations](/fulfillment/orders-cancellations-returns.md#cancellations).
{% endhint %}

Go to **Fulfillment → Channels → Sales channels**.

On the Walmart row, set the **Auto-handle cancellations** toggle.

| Toggle                               | Request for the entire order                              | Request for part of the order |
| ------------------------------------ | --------------------------------------------------------- | ----------------------------- |
| <mark style="color:green;">On</mark> | ShopperOS approves it, and cancels the fulfillment order. | Denied automatically.         |
| Off                                  | It waits for you in **Fulfillment → Cancellations**.      | Denied automatically.         |

## Grade TikTok Shop returns before Respond by

Grade each return in **Fulfillment → Returns** before its **Respond by** time. TikTok sends the buyer's parcel to your return warehouse. The buyer's refund waits for your grade. After that time, TikTok refunds the buyer automatically. See [Returns](/fulfillment/orders-cancellations-returns.md#returns).

## TikTok Shop sample orders

A free sample that you send to a creator ships like any other TikTok Shop order. TikTok Shop marks these samples. ShopperOS picks up a sample order, and Amazon ships it. The order shows a **Sample** or **Refundable sample** badge. See [Sample orders](/fulfillment/orders-cancellations-returns.md#tiktok-shop-sample-orders).

## Manage a channel

Use the row menu (**…**) on the **Sales channels** tab.

| Action          | What it does                                                                                                                                                                                                  |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Import**      | Imports the channel's products now, after you confirm. Shows only for an active channel.                                                                                                                      |
| **Test**        | Checks that ShopperOS can reach the channel. A banner shows the result.                                                                                                                                       |
| **Credentials** | Opens **Update Channel Credentials** to enter a new **Client ID** and **Client Secret**. For a Walmart seller that you connected with **Connect with Walmart**, click **Connect with Walmart** again instead. |
| **Deactivate**  | Stops fulfillment for new orders from the channel, after you confirm.                                                                                                                                         |
| **Activate**    | Starts fulfillment again.                                                                                                                                                                                     |

To rename a channel, click its name.

A channel with no route shows <mark style="color:red;">Disconnected</mark> and **Connect it from Channel Routing**. Add a route for it, or click **…** → **Delete** to remove it and its stored credentials.

## Troubleshooting

Find the message you see in the left column.

| You see                                                                                                     | What to do                                                                                                                                             |
| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Could not reach … Please check your credentials and try again.**                                          | Click **…** → **Credentials**, and enter current credentials. Then click **Test** again.                                                               |
| **Popup blocked. Allow popups for this site and try again.**                                                | Allow popups for ShopperOS in your browser, then connect again.                                                                                        |
| **The connection request expired. Start again.**                                                            | Click **Connect with Walmart** again, and finish on Walmart within 10 minutes.                                                                         |
| **This seller is already connected with API keys. …**                                                       | Keep the API-key channel. Or delete that channel, then click **Connect with Walmart**.                                                                 |
| **This seller is connected to another company.**                                                            | Contact your Stackline team.                                                                                                                           |
| **Walmart did not accept the authorization. Start again.**                                                  | Click **Connect with Walmart** again.                                                                                                                  |
| **The seller authorized the app, but we could not save the connection. Try again.**                         | Click **Connect with Walmart** again.                                                                                                                  |
| **Walmart answered for a different app. Start again.**, or **The Walmart connection failed. Try again.**    | Click **Connect with Walmart** again. If it fails again, contact your Stackline team.                                                                  |
| **The Walmart App Store connection is not configured.**, or **Walmart App Store connect is not available.** | Contact your Stackline team. Until then, connect with API keys.                                                                                        |
| **Could not start the Walmart connection. Try again.**                                                      | Click **Connect with Walmart** again.                                                                                                                  |
| **TikTok Shop is not available.**                                                                           | Contact your Stackline team.                                                                                                                           |
| **No authorization code was returned. Try again.**                                                          | Click **Connect TikTok Shop** again, and approve access in TikTok.                                                                                     |
| **Failed to update cancellation policy**                                                                    | Try the toggle again.                                                                                                                                  |
| A marketplace order is in **Error**                                                                         | Open it, and follow the suggestion. See [Fix an order error](/fulfillment/orders-cancellations-returns.md#fix-an-order-error).                         |
| A marketplace product does not ship                                                                         | Check that the listing is linked in **Fulfillment → Listings**.                                                                                        |
| **Product import failed: …**                                                                                | Click **Test** on the channel. If the test fails, update the credentials. Then click **Import** again.                                                 |
| A listing shows **Listing archived**                                                                        | See [Fix a link to a listing the channel no longer sells](/fulfillment/listings-and-inventory.md#fix-a-link-to-a-listing-the-channel-no-longer-sells). |

## Next step

Link the products that your marketplaces sell.

{% content-ref url="/pages/GBZtFG4D0qc0KLnZHPSA" %}
[Listings and inventory](/fulfillment/listings-and-inventory.md)
{% endcontent-ref %}
