Đơn & doanh thu

Đồng bộ đơn Shopee vào Google Sheets tự động, không nhập tay

Kết nối gian hàng Shopee với Partner Quantri360, chọn đích Google Sheets và đặt lịch chạy mỗi giờ hoặc hằng ngày. Đơn mới và đơn đổi trạng thái tự ghi vào bảng tính. Ai cần chọn cột riêng thì gọi API Shopee qua 360 bằng n8n hoặc Apps Script.

Bài toán: vì sao bảng đơn Shopee nhập tay luôn lệch?

Bảng đơn nhập tay lệch vì nó là ảnh chụp một thời điểm, còn đơn Shopee đổi trạng thái liên tục trong 7–15 ngày sau khi đặt. File xuất sáng thứ Hai không biết đơn nào bị hoàn chiều thứ Năm. Người làm báo cáo cũng là người chọn cột, chọn bộ lọc.

Tình huống hay gặp: nhân viên kho tải file "Đã giao", kế toán tải file "Doanh thu", chủ shop nhìn số trên ứng dụng. Ba nguồn, ba con số. Không ai sai hẳn, nhưng cũng không ai trả lời được câu "tuần này thực sự bán được bao nhiêu tiền".

Thứ cần có là một bảng lấy thẳng từ API Shopee, tự cập nhật, không qua tay người báo cáo.

Tư duy dẫn đường: cần dữ liệu nào, đọc thế nào cho đúng?

Mỗi câu hỏi quản trị ứng với một nguồn dữ liệu riêng của Shopee. Dùng nhầm nguồn thì số vẫn trông hợp lý nhưng sai. Bảng dưới là cách ghép mà Quantri360 dùng cho chính dashboard của mình.

Câu hỏi API Shopee Trường cần đọc
Có bao nhiêu đơn, đơn nào mới đổi trạng thái? get_order_list order_sn, lọc time_range_field=update_time
Khách mua gì, bao nhiêu cái? get_order_detail item_list, order_status
Đơn đã giao tới tay khách chưa? get_package_detail trạng thái vận chuyển của kiện
Shop thực nhận bao nhiêu tiền? get_escrow_detail escrow_amount_after_adjustment

Ba bẫy đã làm sai số thật:

  • Giao thất bại vẫn mang trạng thái hoàn tất. Shopee giữ order_status = COMPLETED cho đơn giao thất bại. Chỉ trạng thái kiện hàng (LOGISTICS_DELIVERY_FAILED) mới cho biết hàng quay về. Lọc theo order_status thì đơn thất bại bị cộng vào doanh thu.
  • Tiền về không phải giá bán. Giá đơn chưa trừ phí cố định, phí dịch vụ, phí thanh toán, voucher shop. Số tiền shop nhận là escrow sau điều chỉnh. Trong get_escrow_detail, giá từng sản phẩm là tổng của cả dòng khi số lượng lớn hơn 1; nhân thêm số lượng là gấp đôi doanh thu.
  • Cửa sổ 15 ngày và phân trang. get_order_list chỉ nhận khoảng time_from–time_to tối đa 15 ngày. Muốn lấy một tháng phải chia đoạn, và lặp cursor tới khi more = false. Quên một trong hai là thiếu đơn mà không có lỗi nào báo.

AI bứt tốc: thiết lập trong bao lâu, gồm những bước nào?

Cách không viết code mất khoảng 15 phút, phần lâu nhất là bấm đồng ý ủy quyền trên Shopee và Google. Có hai cách, chọn theo việc bạn cần cột cố định hay cột tự chọn.

Cách 1: kết nối theo lịch trên Partner (không viết code)

  1. Tạo tài khoản ở trang đăng ký Partner và bật xác thực hai lớp (bắt buộc).
  2. Vào trang nền tảng Shopee, ủy quyền gian hàng. Brand có nhiều gian hàng thì ủy quyền từng gian.
  3. Mục Đích nhận → Google Sheets → đăng nhập Google. Để trống ô bảng tính thì hệ thống tự tạo bảng tính mới trong Drive của bạn.
  4. Mục Kết nối: chọn Shopee → loại dữ liệu đơn hàng → đích Google Sheets → lịch mỗi giờ, hằng ngày lúc H:00 hoặc hằng tuần (giờ Việt Nam). Có thể lọc theo gian hàng và trạng thái.

Lần chạy đầu lấy 24 giờ gần nhất, các lần sau lấy phần thay đổi kể từ lần trước (lùi 5 phút để không sót đơn sát mốc). Lịch tự động là phần mua thêm, xem bảng giá.

Lưu ý hiện tại: loại đơn Shopee đã xử lý (mỗi dòng một SKU, cột chuẩn) đang ở trạng thái "Sắp có". Loại thô đã dùng được: mỗi dòng một đơn, cột raw_json giữ nguyên phản hồi của Shopee.

Cách 2: chọn cột riêng bằng n8n hoặc Apps Script

Gọi API Shopee qua 360 bằng một API key, không cần tự xin app Shopee, không gửi partner_id hay chữ ký:

curl -s "https://partner.quantri360.com/v1/shopee/api/v2/order/get_order_list?time_range_field=update_time&time_from=1760893200&time_to=1760979600&page_size=50" \
  -H "Authorization: Bearer $KEY"

Sau khi đăng nhập, mục Tài liệu có sẵn mẫu workflow n8n cho Shopee: lịch 06:00, lấy đơn hôm qua, tự lặp cursor. Bạn chỉ nối thêm node Google Sheets. Chi tiết ở Tài liệu Partner.

Dùng AI đọc bảng. Khi bảng đã tự cập nhật, chép một tuần dữ liệu cho ChatGPT hoặc Claude kèm câu hỏi rõ ràng:

"Đây là đơn Shopee 7 ngày qua. Tính tỉ lệ giao thất bại theo tỉnh, chỉ dùng trạng thái kiện hàng, không dùng order_status. Liệt kê 5 tỉnh cao nhất và số đơn của từng tỉnh."

Câu hỏi càng nêu rõ cột nào, định nghĩa nào, AI càng ít đoán.

Kết quả đo được

Đo trước và sau trong cùng một tuần làm việc để biết công cụ có đáng tiền không. Ba chỉ số dưới đây đo được bằng dữ liệu sẵn có, không cần ước lượng.

  • Giờ công: bấm giờ việc xuất file, dán, sửa cột trong một tuần trước khi kết nối. Sau đó việc này còn bằng 0.
  • Độ trễ dữ liệu: xem nhật ký chạy của kết nối (thời điểm chạy, số đơn, lỗi). Lịch mỗi giờ thì đơn mới nhất trễ tối đa khoảng một giờ.
  • Sai lệch phát hiện: đếm đơn có trạng thái hoàn tất nhưng kiện hàng giao thất bại, và chênh giữa giá bán với escrow. Đó là số tiền trước đây bị tính nhầm.

Google Sheets chỉ nối thêm dòng, không ghi đè. Một đơn đổi trạng thái ba lần có ba dòng. Khi tổng hợp, giữ dòng mới nhất theo order_id. Cần ghi đè đúng chỗ thì xem cách đổ đơn vào MySQL / PostgreSQL / SQL Server. Muốn tự động hóa thêm bước sau (gửi cảnh báo, ghi CRM) thì xem Shopee với n8n.

API liên quan

  • get_order_list: danh sách đơn theo cửa sổ tạo hoặc cập nhật, tối đa 15 ngày mỗi lần.
  • get_order_detail: chi tiết tối đa 50 đơn một lần, gồm danh sách sản phẩm.
  • get_package_detail: trạng thái kiện hàng, nơi duy nhất cho biết giao thất bại.
  • get_escrow_detail: tiền shop thực nhận và từng khoản phí của một đơn.
  • get_return_list: yêu cầu trả hàng, tách đơn hoàn khỏi đơn giao thất bại.

Đọc thêm: tự động hóa quy trình kinh doanh — bài tổng quan của chủ đề này.

Quantri360
Viết bởi Quantri360 · Đội ngũ tư vấn quản trị & dữ liệu

Xây dựng nền tảng quản trị rủi ro bán hàng đa kênh Quantri360; viết về quản trị bằng dữ liệu thật và ứng dụng AI vào vận hành.

Cập nhật
Nhắn Messenger