Bảng giá OA mới của Zalo từ tháng 6/2026: một đội xuyên biên giới vẫn nhận tin Zalo mà không sa vào guồng quay OA như thế nào — UnifyPort
Ngày 1/6/2026, bảng giá dịch vụ Official Account (OA) mới của Zalo có hiệu lực. Với một đội năm người bán mỹ phẩm từ một văn phòng nhỏ ở TP.HCM, email đến vào lúc tệ nhất có thể: giữa đợt chạy chiến dịch, khi đã có hai nhân sự gần như cả ngày ngồi trả lời khách trong các cuộc chat Zalo và WhatsApp. Thông báo giá buộc họ đối mặt với câu hỏi vẫn trì hoãn lâu nay: để tiếp tục làm đúng những gì đang làm, thực sự sẽ tốn bao nhiêu?
Việc họ đang làm rất đơn giản. Khách nhắn cho shop trên Zalo. Có người trả lời. Hết. Không bản tin, không gửi quảng cáo hàng loạt, không chuỗi tin tự động. Nhưng con đường Zalo vạch ra cho “một doanh nghiệp muốn nhận tin theo cách lập trình” lại đi qua toàn bộ bộ máy Official Account — và bộ máy đó được dựng cho bên phát đi hàng loạt, không phải cho một đội chỉ muốn trả lời những người nhắn trước.
Guồng quay OA, và vì sao nó không hợp
Nhận tin Zalo theo đường chính thức nghĩa là dựng một Official Account, đi xác minh, rồi sống trong luật của OA. Cái cấn nhất là cửa sổ tương tác: OA chỉ được nhắn tự do cho người dùng trong một khung thời gian giới hạn sau khi người đó liên hệ với bạn. Bước ra ngoài khung đó — theo dõi vào sáng hôm sau, gửi cập nhật đơn hàng hai ngày sau — là bạn đã vào địa hạt Zalo Notification Service (ZNS), nơi mỗi tin phải cưỡi trên một template đã được duyệt trước và tính phí theo từng tin.
Với bên phát hàng loạt, đó là một thỏa thuận hợp lý. Với một shop năm người, đó là một cái máy chạy bộ. Mỗi template phải viết ra, gửi đi, chờ duyệt rồi mới dùng được. Thay đổi giá ngày 1/6 chia lại các bậc gói OA và dịch chuyển ranh giới giữa cái nằm trong hạn mức miễn phí và cái bị tính tiền — và cách đội đọc bảng giá là: kiểu dùng thật sự ít, mang tính trò chuyện của họ sắp vừa đắt hơn vừa nhiều thủ tục hơn cùng lúc. Họ đâu có gửi hàng nghìn tin marketing. Họ đang trả lời câu hỏi. Vậy mà bị yêu cầu khoác lên mình cơ cấu chi phí và quy trình duyệt của một công ty làm cái việc mà họ hoàn toàn không làm.
Mà Zalo mới chỉ là một hộp thư. Cũng hai nhân sự đó cả ngày còn ở trong WhatsApp, bên ấy lại có bộ máy riêng — xác minh doanh nghiệp, tính phí theo từng tin, duyệt template kiểu của nó. Hai nền tảng, hai bộ luật hoàn toàn khác nhau, hai lần tích hợp nếu muốn tự động hóa. Cái giá không chỉ là tiền; mà là mỗi kênh đều bắt đội học một hệ thống khác nhau trước khi làm được đúng một điều họ thật sự muốn: thấy một tin nhắn đến, và trả lời.
Định nghĩa lại bài toán: họ cần tin đến, không cần một Official Account
Cú hích tháo gỡ là tách cái họ cần khỏi cái đường chính thức bán kèm. Bộ máy gửi hàng loạt của OA — template, ZNS, cửa sổ tương tác, bậc hạn mức — tồn tại để doanh nghiệp chủ động khởi xướng liên hệ ở quy mô lớn. Đội này không bao giờ khởi xướng. Mọi cuộc trò chuyện đều do khách mở lời. Cái họ cần chỉ là nhận tin đến một cách đáng tin và trả lời ngay trong cuộc trò chuyện khách đã mở.
Đó là bài toán nhỏ hơn nhiều so với “vận hành một Official Account”. Kiểu dùng chỉ-nhận, trả-lời-trong-phiên hoàn toàn không cần đến công cụ gửi hàng loạt. Một khi nhìn ra như vậy, câu hỏi không còn là “mua gói OA nào” mà thành “cách đơn giản nhất để đưa một tin Zalo đến vào backend của mình, rồi gửi câu trả lời về đúng cuộc chat đó là gì”.
Một webhook cho cả Zalo lẫn WhatsApp
Họ kết nối cả hai tài khoản qua giao diện nhận tin không chính thức của UnifyPort, thứ đặt mọi kênh sau một webhook chuẩn hóa thay vì một lần tích hợp cho mỗi nền tảng. Một tin Zalo và một tin WhatsApp đến với cùng một hình dạng — khác biệt duy nhất là trường provider:
{
"event": "message.received",
"account_id": "acct_7Hm2pX",
"provider": "zalo",
"from": "user_9a3f21",
"text": "Sản phẩm này còn hàng không ạ?",
"timestamp": 1749513600,
"message_id": "zalo_msg_4c8e1d"
}
Backend của họ chỉ đăng ký một sự kiện, message.received, và định tuyến theo một trường duy nhất. Đoạn code xử lý tin Zalo chính là đoạn xử lý tin WhatsApp — phía nhận không có nhánh rẽ riêng theo nền tảng:
app.post("/webhook", (req, res) => {
if (!verifySignature(req)) return res.sendStatus(401);
const evt = req.body;
if (evt.event === "message.received") {
// evt.provider là "zalo" hay "whatsapp" — định tuyến y hệt nhau
queue.add({
channel: evt.provider,
customer: evt.from,
text: evt.text,
accountId: evt.account_id,
});
}
res.sendStatus(200);
});
Mỗi lần gửi đều được ký, nên trước khi tin vào bất kỳ payload nào, đội kiểm tra tính xác thực bằng HMAC-SHA256 dựa trên signing_secret họ đặt trên webhook — vẫn là bước verifySignature ấy bất kể tin đến từ nền tảng nào. Trả lời là thao tác đối xứng: một lệnh POST /v1/messages chỉ rõ tài khoản và người nhận. Vì khách nhắn trước, mọi câu trả lời đều rơi vào đúng cuộc trò chuyện khách đã mở — đúng kiểu tương tác trong phiên mà đội vốn làm tay, giờ viết được thành script, mà không phải duyệt trước template nào.
Kết quả thực tế là thông báo giá ngày 1/6 thôi không còn là một cơn khủng hoảng ngân sách. Đội không phải mua lên bậc OA cao hơn chỉ để tiếp tục trả lời những cuộc chat ít, do khách chủ động mở. Hai bạn hỗ trợ vẫn làm trong đúng hai hộp thư đó, chỉ khác là cả hai giờ đổ về một hàng đợi, một schema, một đường trả lời — và sau này thêm LINE cho một nhà cung cấp Thái Lan cũng chỉ là đúng cái handler message.received chạy lại, chứ không phải một dự án tích hợp thứ ba.
Điều rút ra
Bài học không phải “tránh Official Account của Zalo” — nếu bạn chạy chiến dịch gửi hàng loạt ở quy mô lớn, OA và ZNS sinh ra đúng cho việc đó, và bạn nên dùng. Bài học là: hãy kiểm tra xem đường chính thức đang giải bài toán của bạn, hay một bài toán to hơn mà bạn không có. Một thay đổi giá nhắm vào bên phát hàng loạt khối lượng lớn có thể âm thầm đẩy chi phí của việc đơn giản là “trả lời khách” lên cao, vì đường chính thức gói cả hai hành vi vào cùng một tài khoản.
Nếu tất cả những gì bạn cần là nhận tin đến và trả lời trong phiên, đó là một bài toán tách rời được và rẻ hơn nhiều. Trỏ backend của bạn vào một webhook nhận tin chuẩn hóa, đăng ký message.received, và tin Zalo sẽ vào hàng đợi của bạn mà không phải chạy guồng quay OA — còn năm kênh còn lại sẽ đến qua đúng cái handler đó vào ngày bạn cần.