How to improve your chat response rate when you run several stores
Three seller apps, three inboxes, three notification sounds. That is the everyday setup when you run a Shopee, a Lazada and a TikTok Shop store, and it is where chat response rate quietly slips. Nobody decides to ignore buyers. A message lands at 9pm while you are packing parcels, gets buried under the other two apps, and by morning it is a cold chat.
This is for Singapore-based operators, and anyone on other Southeast Asian seller centres, who run more than one store legitimately: one per platform, several brands under one business where the platform allows it, or stores you manage for a client with permission. It is not a way round a platform’s shop limits; see the pitfalls section.
The outcome is a routine you can keep up: know how each platform measures the number, find the hours you miss, cover them with named people, and check weekly. One caveat: as of September 2026 I could not re-verify live thresholds and time windows for every market, so I left target percentages out and point you to where to read them.
what you need
- a seller centre login for each store: Shopee Seller Centre, Lazada Seller Center and TikTok Shop Seller Center for Singapore. Other markets use other domains.
- staff sub-accounts, so nobody shares your password. I am not aware of a fee for these on any of the three, but confirm in your own seller centre.
- a Google Sheet or CSV file, plus Python 3.8 or newer for the two small scripts below. Both are free.
- the seller app for each platform on a phone, with notifications on.
- a named person for each shift. This is the real cost: your evenings, or a part-timer at a rate you agree yourself.
- optional: an order management tool. Some pull in chat and many only handle orders, so check before paying. My comparison is best multichannel order management tools for SEA sellers.
step by step
1. Read the definitions off each seller centre
Open the performance or account health page for each store and find the chat response rate and response time. Click the help icon beside each. Write down what counts as a reply, the time window, the market and today’s date.
As of September 2026 I am not quoting a window or a target. They differ by platform and country, and platforms edit them. The current wording lives in each platform’s seller help: Shopee’s Seller Education Hub, Lazada University and TikTok Shop Academy. My account health comparison covers the wider picture.
| store | platform | market | chat response rate | response time | definition read on |
|---|---|---|---|---|---|
| store a | shopee | SG | 2026-09-21 |
Expected output: one row per store, each with the definition date next to the numbers.
If it breaks: a missing tile may mean a renamed menu, or a shop too new to show it. Search the help centre for “chat response rate” and ask seller support if it is still missing.
2. Find the hours you are missing
The platform number is an average, so it will not show which hours fail. I am not aware of a built-in chat export on any of the three, so I sample by hand. For a week, log each new buyer chat in a CSV, all times in SGT, leaving the last column blank when nobody replied.
store,platform,buyer_msg_time,first_reply_time
store-a,shopee,2026-09-14 21:40,2026-09-15 08:05
store-b,lazada,2026-09-14 13:12,2026-09-14 13:20
store-c,tiktok,2026-09-14 23:55,
Keep message text out of the file, since chats hold names and addresses. Singapore’s PDPC has guidance on personal data. This is not legal advice.
import csv
from collections import defaultdict
from datetime import datetime
from statistics import median
by_hour = defaultdict(list)
for r in csv.DictReader(open("chats.csv", encoding="utf-8")):
sent = datetime.fromisoformat(r["buyer_msg_time"])
reply = r["first_reply_time"]
gap = None
if reply:
gap = (datetime.fromisoformat(reply) - sent).total_seconds() / 60
by_hour[sent.hour].append(gap)
for h in sorted(by_hour):
got = [g for g in by_hour[h] if g is not None]
med = round(median(got)) if got else "-"
print(f"{h:02d}:00 chats={len(by_hour[h])} replied={len(got)} median_min={med}")
Expected output: one line per hour with chats, replies and median minutes to first reply. Hours with chats and few replies are your holes. This is my own maths, so it will not match the platform’s figure exactly.
If it breaks: a ValueError on a date means the format is off, so use YYYY-MM-DD HH:MM. If a week gives you under ten chats, log two, because hourly buckets from a handful of chats tell you little.
3. Cover the holes with named people
Write the roster in a plain file every helper can see.
mon-fri 19:00-22:00 me all three stores
sat-sun 10:00-14:00 aisha all three stores
mon-fri 09:00-13:00 aisha all three stores
Give each helper a sub-account, not your login. I wrote up the Lazada side in how to give staff access in Lazada Seller Center. Shopee and TikTok Shop have their own staff setups under account settings; menu names move, so check yours. One person per shift covering all three apps is usually easier than one person per store.
Expected output: every hole from step 2 has a name against it.
If it breaks: if nobody can cover late nights, set the away message to your real hours and answer first thing.
4. Cut the repeat questions
Read the last 50 chats per store and tag what repeats. It is usually size, shipping time, stock and warranty. Put those answers in the listing text or images so fewer chats arrive. I have not measured a specific drop, so watch your chat count.
Expected output: a top five list per store and matching listing edits.
If it breaks: if a listing field is full, use an image slot.
5. Keep one quick reply library and fill it per store
Each of the three has some form of saved replies in its chat settings, though menu names differ. The problem with several stores is drift: store A promises 1 to 2 days and store B says 3. Keep one master and fill in the store details.
[
{"name": "store a", "platform": "shopee", "ship_days": "1-2"},
{"name": "store b", "platform": "lazada", "ship_days": "2-3"}
]
Save that as stores.json, then add replies.json:
{
"shipping": "Hi! Orders ship within {ship_days} working days, and tracking appears once the courier scans the parcel.",
"returns": "Sorry about that. Send your order number and a photo here and we will start the return."
}
import json
stores = json.load(open("stores.json", encoding="utf-8"))
replies = json.load(open("replies.json", encoding="utf-8"))
for s in stores:
print(f"=== {s['name']} ({s['platform']}) ===")
for key, text in replies.items():
print(f"{key}: {text.format(**s)}")
Paste each block into the matching store by hand. Keep WhatsApp numbers and outside links out of the replies. As far as I know all three platforms forbid moving a sale off-platform, so read each one’s current policy.
Expected output: one block per store, same wording, different shipping days.
If it breaks: a KeyError means a placeholder in replies.json has no matching field in stores.json. If a platform rejects a reply as too long, shorten it in replies.json and rerun.
6. Make notifications reliable
Turn notifications on in each seller app. On Android, set battery use to unrestricted for those apps (usually Settings, Apps, the app, Battery, though it varies by phone maker). Give each app a different sound if it allows. More on phone setups in running seller apps across multiple phones.
If your stores are Singapore-based and shift staff need app-only access without using your own phone, cloudf.one is one option: real Android phones in Singapore on dedicated hardware, each with a persistent Singapore mobile IP, controlled from the browser. It is Singapore-only, so no use for stores in other markets, and it does not replace sub-accounts or change any platform’s rules.
Expected output: ask a friend to message each store and check that the phone buzzes within a minute.
If it breaks: notifications that die once the screen is off usually mean the phone maker’s battery manager is killing the app. Check its per-app settings.
7. Set a first-touch rule
Every new chat gets a real reply that says what you know and what happens next, even when the full answer needs the warehouse. Work the oldest unanswered chat first. At handover, the unanswered count is zero or written in a note with the store and what you are waiting on.
I do not send “ok” or a sticker to close chats, and I would not set a bot to fire filler replies. Check each platform’s help page on whether an auto-reply counts toward the metric.
Expected output: zero unanswered chats at each handover.
If it breaks: if handover notes keep piling up, the roster is too thin. Go back to step 2 and add an hour.
8. Review weekly and change one thing
Every Monday, update the table from step 1, rerun the step 2 script on last week’s sample, and change one thing: a roster hour, a quick reply or a listing edit, so you know what moved.
Expected output: a row per store per week, plus a note of the change.
If it breaks: if the platform’s rate drops while your script says everything was answered, its definition differs from your maths. Re-read step 1 and ask seller support what counts. Low-traffic stores also swing hard, since two missed chats out of ten is a big move.
common pitfalls
- assuming the three platforms measure the same way. Windows, reply rules and targets can differ, so judge each store against its own platform’s definition.
- chasing the percentage with filler replies. It moves the number and does nothing for the buyer. I would not go near anything that touches ratings or reviews either.
- sharing one login across the team. You lose who said what, and account sharing may breach the platform’s terms. Use sub-accounts.
- opening extra shops to spread the chat load. Platforms set their own limits on how many shops one person or business can run in a market, and using someone else’s identity to get around that breaks their terms. Check the rules on multiple Shopee and Lazada stores and the current seller policy first.
- covering only the hours you are awake, so night chats get answered the next afternoon.
scaling this
I read 10x, 100x and 1000x as chat volume against where you are today.
- 10x: the sheet and scripts still work. What changes is the roster, which needs real shifts, and the weekly sample finally has enough chats per hour to trust.
- 100x: hand sampling stops being practical, so you want an inbox tool or an integration that pulls timestamps for you. Shopee, Lazada and TikTok Shop each run a developer platform (Shopee Open Platform, Lazada Open Platform, TikTok Shop Partner Center). I have not verified which chat endpoints each offers per market as of September 2026, so read their docs first. Give one lead ownership of the quick reply library so it does not fork.
- 1000x: this is a support team, probably with an outsourcing vendor, QA sampling of replies and escalation rules. I have not run at that scale, so treat this as what I would check first, not something I have done. Personal data handling matters more once more people and tools touch buyer chats.
where to go next
- how Shopee penalty points work: the other side of account health, worth knowing before you add staff.
- how TikTok Shop order fulfilment works for a new seller: “where is my order” is a common buyer question, and fulfilment is where it starts.
- how to get Shopee sales without paid marketing: the traffic side, once your chats are covered.
More articles are on the blog index.
Written by Xavier Fok
disclosure: this article may contain affiliate links. if you buy through them we may earn a commission at no extra cost to you. verdicts are independent of payouts. last reviewed by Xavier Fok on 2026-09-21.