Skip to content

Selling the Same Stock Twice: Putting TikTok Shop and Shopify on One Count

A practical walkthrough for sellers running both TikTok Shop and Shopify. It covers deciding which system owns which object, matching SKUs and variants, sharing a single inventory pool with a buffer, routing orders to fulfilment, and closing the loop with tracking before the dispatch clock runs out.

Author
Ruben Burdin · Founder & CEO
Published
July 22, 2026
Read time
8 min read
Selling the Same Stock Twice: Putting TikTok Shop and Shopify on One Count
APP TIPS

The problem is easy to describe and annoying to live with. You have two storefronts and one warehouse. TikTok Shop sells a unit, Shopify does not find out for twenty minutes, and in those twenty minutes Shopify sells the same unit to someone else. One of those two buyers is about to get an apology email.

Everything else follows from that. Prices drift because someone updated one catalog. Tracking numbers get rekeyed by hand because they live in Shopify and are needed in TikTok Shop. Cancellations land in one place and never reach the other.

Three steps to put TikTok Shop and Shopify on one stock count: match SKUs, share one inventory pool, close the loop on fulfilment

This walks through the setup end to end. If you are still choosing the layer underneath, the wider view is in the guide to an enterprise iPaaS for TikTok Shop.

Step 1: decide which system owns what

Do this before you connect anything. Almost every failed multi-channel setup failed here, not in the wiring, because two systems were both allowed to be right about the same field.

The usual split: Shopify owns the catalog, because it already has the product data and the merchandising team lives there. Inventory is shared, with one available-to-sell number both channels read and write. TikTok Shop owns the orders it creates, including their status and the buyer's edits. Fulfilment is owned by whoever picks the box, which is Shopify or a 3PL behind it.

ObjectOwnerDirection
Product and variantShopifyShopify to TikTok Shop
PriceShopifyShopify to TikTok Shop
Available to sellShared poolBoth ways
Order and buyer editsTikTok ShopTikTok Shop to Shopify
Fulfilment and trackingShopify or 3PLShopify to TikTok Shop
Cancellation and refundTikTok ShopBoth ways

One owner per object. Inventory is the exception, and that is exactly why it needs a conflict rule.

Step 2: match the SKUs once

Matching is the part that decides whether the rest works. Pair each TikTok Shop listing to its Shopify variant on SKU first, then barcode as a fallback. Anything that matches neither goes to a review list rather than creating a new product, because a sync that creates on no-match will quietly double your catalog.

Two cases deserve attention. Variants have to pair at the variant level, not the product level, or a size run of eight will share one stock number. Bundles need a component map: selling one bundle should deduct each component from the pool, otherwise the components stay available and you oversell the parts instead of the kit.

Step 3: share one inventory pool

This is the step that stops the apology emails. Instead of two counts that are reconciled on a schedule, both channels read and write the same available-to-sell number, and every order on either side moves it in seconds.

One TikTok Shop order moving through five steps: ordered, captured, matched to a Shopify variant, stock deducted, tracking shipped back
The whole point of the loop is step 04. Until the quantity moves, the other channel is still selling the unit.

Keep a buffer. During a spike there is always a short window where orders exist but the deduction has not landed everywhere, and holding back a few units per SKU absorbs it. Set the buffer per SKU rather than globally, because the risk is concentrated in the handful of products a video actually featured.

Set the conflict rule while you are here. Inventory is the one object both sides write, so decide explicitly what happens when both changed: for stock the usual answer is that the warehouse count wins, since it is the only number backed by physical units on a shelf.

Step 4: close the loop on fulfilment

An order that reaches Shopify is only half the job. TikTok Shop measures how quickly orders are dispatched, so the tracking number has to come back before that window closes, and rekeying it by hand is how the window gets missed on the busiest days.

A round-trip between TikTok Shop and Shopify: order placed, listing matched, order created and stock committed, quantity pushed back, fulfilment created, tracking written back
One order, out and back. Origin tags on each write are what stop the return trip being read as a new change.

The same path carries the exceptions. A cancellation matches back to the original order, updates Shopify, and releases the stock. A partial refund adjusts the order rather than creating a new one. These are the cases a one-way order feed cannot handle, and they are the reason most sellers rebuild the integration rather than patch it.

Book a Stacksync demo: one shared inventory pool across TikTok Shop and Shopify

What to watch in the first week

Three numbers tell you whether the setup is healthy. How many listings are sitting in the unmatched review list, how long a stock change takes to appear on the other channel, and how many orders were dispatched outside the window. If the first is shrinking and the other two are flat during a spike, it is working.

One thing worth planning for separately: TikTok Shop changed how seller shipping works, and it affects which fulfilment path you can use. We covered it in TikTok Shop ending seller shipping. The connector details are on the Shopify and TikTok Shop integration page.

Two shopfronts, one truth

The goal is not that TikTok Shop holds a copy of your Shopify catalog. It is that a buyer in the TikTok app and a buyer on your own site are looking at the same stock, the same price, and the same delivery promise, and that neither of them is buying a unit that left the warehouse an hour ago.

If your orders also have to reach an ERP, that is the next piece: TikTok Shop and NetSuite. Or book a demo and we will match a real SKU across both of your channels.

Two-way sync for TikTok Shop and Shopify catalog, inventory, orders, and tracking

FAQ

Frequently asked questions

How do I connect TikTok Shop to Shopify?
Authorise both sides over OAuth, pair each TikTok Shop listing to its Shopify variant on SKU or barcode, then choose which system owns each object: catalog and stock in Shopify, orders originating in TikTok Shop, fulfilment wherever you pick and pack. After that the sync runs on changes, not on a schedule.
What stops me overselling across both channels?
One shared available-to-sell number instead of two counts. When an order is placed on either channel the quantity drops on both within seconds, and a small buffer covers the orders that are already in flight during a spike.
Do I need to duplicate my product catalog?
No, and you should not. Keep one catalog as the source, usually Shopify, and let the sync create and update the TikTok Shop listing from it. Duplicating means two places to fix a price and two chances to get it wrong.
How are variants and bundles handled?
Variants pair one to one on SKU or barcode. Bundles need a component map, so selling one bundle deducts each component from the shared pool. Without that map a bundle sale silently leaves the components available to sell again.
Does the tracking number go back to TikTok Shop automatically?
Yes. When the fulfilment is created in Shopify, the carrier and tracking number are written to the matching TikTok Shop order, which is what keeps the order inside the dispatch window without anyone rekeying it.
What happens when a buyer cancels or returns?
The cancellation or refund is matched back to the original order, the Shopify order is updated, and the stock is released back into the shared pool. A one-way order feed cannot do this, which is why cancellations are usually the first thing that breaks.

About the author

Ruben Burdin
Ruben Burdin
Founder & CEO

Ruben Burdin is the Founder and CEO of Stacksync, the first real-time and two-way sync for enterprise data at scale. Ruben is a Y Combinator alumni with a strong background in software engineering and business.

All posts by Ruben Burdin

About Stacksync

Stacksync powers real-time, two-way sync between CRMs, ERPs, and databases. Engineers sync data at scale and automate workflows, not dirty API plumbing.

Coworkers laughing in front of a laptop in a casual office setting

Your last integration took months.
Your next one takes a prompt.