TikTok Shop Keeps Your DMs Locked in the Seller Center — How a 3-Person Team Receives Them via Webhook — UnifyPort
The team — three people selling cosmetics on TikTok Shop out of Ho Chi Minh City — sold out a SKU in eleven minutes during their first live sale. 400 concurrent viewers at peak, the comment section moving faster than anyone could read, and purchases happening in real time. By the time the stream ended and they opened Seller Center to check on buyers, 140 DMs were waiting. The 12-hour response clock had been running on most of them for two hours.
They knew they had a problem. Not a staffing problem — three people was enough for steady-state support — but an access problem. Every DM was sitting inside TikTok Seller Center, a platform designed for manual inbox management, with no way to pipe those messages into the support tool the team already used for WhatsApp and Zalo. Someone had to watch two screens, copy messages by hand, and reply from within TikTok. At 140 DMs after one live sale, that didn’t scale.
The question was straightforward: is there a way to receive TikTok DMs programmatically, via webhook, the same way they already received WhatsApp messages? They spent an afternoon evaluating every path they could find. There were three.
Path 1: Seller Center Manual Inbox
TikTok Seller Center has a built-in messaging tab. Every DM from buyers lands there — readable, manageable, and reply-able entirely within the TikTok interface. There’s no API, no webhook, no way to export. A person monitors the tab, copies messages into a CRM or spreadsheet by hand, and replies through Seller Center.
This works fine at low volume — maybe ten messages a day from a steady inbound stream. It does not work after a live sale, where messages arrive in a burst. By the time an agent has read and logged the first message, the queue has grown by twenty more. And it requires someone’s full attention on a separate app, disconnected from whatever tool the rest of the team is using.
Verdict: viable for low volume; fails during the spikes that make TikTok Shop worth running.
Path 2: TikTok’s Official Developer or Shop Partner API
The team spent time in the TikTok for Developers console. There is no DM endpoint. TikTok’s official developer API is built for content publishing — posting videos, reading public analytics, managing creative assets. Private direct messages are explicitly out of scope; TikTok states that DM data is not exposed to third-party integrations for privacy reasons.
There is a narrower Shop-specific path: the TikTok Shop Partner API, which gives approved sellers some access to messaging within the Shop context. But it requires an approved TikTok Shop partner or seller account in an eligible market, going through TikTok’s own partner review and onboarding. The team’s account — a Vietnamese shop operating through standard TikTok Shop seller registration — didn’t meet the criteria. The review process alone was weeks, with no guarantee of approval.
Verdict: the general developer API offers no DM access; the Shop Partner path is gated and unavailable for most accounts.
Path 3: Unofficial Inbound Interface
The third path approaches TikTok DMs from a different direction entirely. Instead of using the developer API — which was never built to expose private messages — an unofficial inbound interface connects to TikTok the way the app does, at the account level, and converts each incoming DM into an HTTP event pushed to a webhook your server registers. No partner approval, no market eligibility, no developer console configuration. You use the account you already have.
| Path 1: Seller Center | Path 2: Official API | Path 3: Unofficial inbound | |
|---|---|---|---|
| Setup time | Immediate | Weeks (review), if approved | Under 1 day |
| DM API access | None (manual only) | None for general accounts | Full webhook |
| Automation possible | No | No | Yes |
| Survives live-sale bursts | No | — | Yes |
| Available for any account | Yes | No | Yes |
The table made the choice clear. Path 2 was closed. Path 1 couldn’t survive the load. Path 3 was the only path that gave them what they needed.
What Path 3 Looks Like in Practice
The team connected their TikTok account through UnifyPort, registered a webhook endpoint, and set a signing_secret. From that point, every inbound TikTok DM arrives at their backend as a normalized message.received event:
{
"event": "message.received",
"account_id": "acct_tk_9Zp2",
"provider": "tiktok",
"from": "user_c14f8b",
"text": "Hi, I bought the rose set from the live yesterday — when will it ship?",
"timestamp": 1750060800,
"message_id": "tt_msg_c14f8b"
}
The backend verifies each delivery against the signing_secret using HMAC-SHA256, then routes the message into the same support queue the team already uses for WhatsApp and Zalo:
app.post("/webhook", (req, res) => {
if (!verifySignature(req)) return res.sendStatus(401);
const evt = req.body;
if (evt.event === "message.received") {
supportQueue.add({
channel: evt.provider, // "tiktok", "whatsapp", "zalo", etc.
customer: evt.from,
text: evt.text,
messageId: evt.message_id,
});
}
res.sendStatus(200);
});
The provider field tells the routing logic where the message came from. The queue logic, the CRM write, the agent UI — nothing changes, because a message.received from TikTok has the same shape as one from WhatsApp. The team didn’t build a second queue for TikTok. They added TikTok to the first one.
What Changed, What Didn’t
At the next live sale, TikTok DMs landed in the queue alongside WhatsApp and Zalo messages. Agents worked from a single list. The 12-hour response window — which TikTok uses as a formal store health metric that affects visibility — stopped being a concern, because messages entered the system within seconds of being sent rather than waiting for someone to manually log them.
One detail the team noticed: live-sale DMs are short and dense. Order queries, shipping questions, restocking requests. Because each one arrives as a structured event with sender ID, message text, and timestamp already parsed, the agent doesn’t have to transcribe anything from the TikTok app. The message is already in the format the rest of the support flow expects.
No new tool was added to the team’s stack. No hiring. One webhook endpoint, one signing secret, and TikTok DMs behaved like every other channel they were already running. For sellers managing support across TikTok alongside WhatsApp or Zalo, the same message.received event means the same handler covers everything — because the account-level inbound interface normalizes the channel difference away before it ever reaches your code.